Skip to content

Commit

Permalink
Handle mappings between expressions and leaf statements
Browse files Browse the repository at this point in the history
  • Loading branch information
tsantalis committed Sep 24, 2024
1 parent c853e3b commit f7a6d5b
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 7 deletions.
14 changes: 14 additions & 0 deletions src/main/java/org/codetracker/BlockTrackerChangeHistory.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import gr.uom.java.xmi.LocationInfo.CodeElementType;
import gr.uom.java.xmi.decomposition.AbstractCodeFragment;
import gr.uom.java.xmi.decomposition.AbstractCodeMapping;
import gr.uom.java.xmi.decomposition.AbstractExpression;
import gr.uom.java.xmi.decomposition.CompositeStatementObject;
import gr.uom.java.xmi.decomposition.CompositeStatementObjectMapping;
import gr.uom.java.xmi.decomposition.LeafMapping;
Expand Down Expand Up @@ -775,6 +776,19 @@ private boolean isAdded(UMLOperationBodyMapper umlOperationBodyMapper, Version c
}
}
}
//process mappings between expressions and statements
for (AbstractCodeMapping mapping : umlOperationBodyMapper.getMappings()) {
if (mapping instanceof LeafMapping && mapping.getFragment1() instanceof AbstractExpression && mapping.getFragment2() instanceof StatementObject) {
Block blockAfter = Block.of((StatementObject) mapping.getFragment2(), umlOperationBodyMapper.getContainer2(), currentVersion);
if (blockAfter != null && equalOperator.test(blockAfter)) {
Block blockBefore = Block.of((StatementObject)mapping.getFragment2(), umlOperationBodyMapper.getContainer2(), parentVersion);
blockChangeHistory.handleAdd(blockBefore, blockAfter, "new statement");
elements.add(blockBefore);
blockChangeHistory.connectRelatedNodes();
return true;
}
}
}
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/blame/blameTestUntilCommitZero.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2240,7 +2240,7 @@ dafcb8f6d org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
dafcb8f6d org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java (Colby Ranger 2013-03-05 19:14:45 +0000 2240) }
2241)
751c329b3 org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java (Shawn O. Pearce 2011-03-01 18:07:08 +0000 2242) private boolean reuseDeltaFor(ObjectToPack otp) {
2243) int type = otp.getType();
01a0699ac org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java (Shawn Pearce 2013-04-05 16:43:02 +0000 2243) int type = otp.getType();
01a0699ac org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java (Shawn Pearce 2013-04-05 16:43:02 +0000 2244) if ((type & 2) != 0) // OBJ_TREE(2) or OBJ_BLOB(3)
751c329b3 org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java (Shawn O. Pearce 2011-03-01 18:07:08 +0000 2245) return true;
01a0699ac org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java (Shawn Pearce 2013-04-05 16:43:02 +0000 2246) if (type == OBJ_COMMIT)
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/blame/blameTestUntilCommitZero2.txt
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ d65d57207 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java
395)
78d149224 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Anna.Kozlova 2016-08-08 15:08:03 +0000 396) final Set<File> sourceRoots = new THashSet<>(FileUtil.FILE_HASHING_STRATEGY);
d65d57207 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Eugene Zhuravlev 2015-09-11 10:05:18 +0000 397) if (!sourcePath.isEmpty()) {
398) sourceRoots.addAll(sourcePath);
06156396f java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Alexey Kudravtsev 2017-04-25 14:19:19 +0000 398) sourceRoots.addAll(sourcePath);
d65d57207 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Eugene Zhuravlev 2015-09-11 10:05:18 +0000 399) }
d65d57207 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Eugene Zhuravlev 2015-09-11 10:05:18 +0000 400) else {
d65d57207 java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java (Eugene Zhuravlev 2015-09-11 10:05:18 +0000 401) for (File file : files) {
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/blame/blameTestWithLocalRepo12.txt
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ f68bbdbbb src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java (
a1414f529 src/java/org/apache/commons/lang/time/DurationFormatUtils.java (Henri Yandell 2004-09-27 03:30:10 +0000 278) */
1da8ccdbf src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java (Benedikt Ritter 2017-06-06 13:12:06 +0000 279) public static String formatPeriod(final long startMillis, final long endMillis, final String format, final boolean padWithZeros,
5bd622dab src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java (Gary D. Gregory 2013-01-22 07:07:42 +0000 280) final TimeZone timezone) {
281) Validate.isTrue(startMillis <= endMillis, "startMillis must not be greater than endMillis");
9a16b763d src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java (Duncan Jones 2014-05-13 20:31:02 +0000 281) Validate.isTrue(startMillis <= endMillis, "startMillis must not be greater than endMillis");
282)
283)
4f514d5eb src/java/org/apache/commons/lang/time/DurationFormatUtils.java (Henri Yandell 2006-12-20 06:10:26 +0000 284) // Used to optimise for differences under 28 days and
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/blame/blameTestWithLocalRepo6.txt
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ a3168fde1 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method
137)
a3168fde1 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java (Rossen Stoyanchev 2015-11-06 21:45:41 +0000 138) private static PathExtensionContentNegotiationStrategy initPathStrategy(ContentNegotiationManager manager) {
f16225690 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java (Rossen Stoyanchev 2016-03-04 21:06:01 +0000 139) Class<PathExtensionContentNegotiationStrategy> clazz = PathExtensionContentNegotiationStrategy.class;
140) PathExtensionContentNegotiationStrategy strategy = manager.getStrategy(clazz);
f16225690 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java (Rossen Stoyanchev 2016-03-04 21:06:01 +0000 140) PathExtensionContentNegotiationStrategy strategy = manager.getStrategy(clazz);
f16225690 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java (Rossen Stoyanchev 2016-03-04 21:06:01 +0000 141) return (strategy != null ? strategy : new PathExtensionContentNegotiationStrategy());
a3168fde1 spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java (Rossen Stoyanchev 2015-11-06 21:45:41 +0000 142) }
143)
Expand Down
6 changes: 3 additions & 3 deletions src/test/resources/blame/blameTestWithLocalRepo8.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2715,9 +2715,9 @@ f0f82e4f1 core/src/main/java/org/hibernate/cfg/AnnotationBinder.java (
8478d5b44 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-05 23:33:28 +0000 2715) + idClassPropertyData.getPropertyName()
8478d5b44 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-05 23:33:28 +0000 2716) );
5ad11ba2a annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-05 14:37:34 +0000 2717) }
2718) final boolean hasXToOneAnnotation = entityPropertyData.getProperty()
2719) .isAnnotationPresent( ManyToOne.class )
2720) || entityPropertyData.getProperty().isAnnotationPresent( OneToOne.class );
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2718) final boolean hasXToOneAnnotation = entityPropertyData.getProperty()
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2719) .isAnnotationPresent( ManyToOne.class )
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2720) || entityPropertyData.getProperty().isAnnotationPresent( OneToOne.class );
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2721) final boolean isOfDifferentType = !entityPropertyData.getClassOrElement()
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2722) .equals( idClassPropertyData.getClassOrElement() );
737379690 annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java (Emmanuel Bernard 2010-02-08 19:14:29 +0000 2723) if ( hasXToOneAnnotation && isOfDifferentType ) {
Expand Down

0 comments on commit f7a6d5b

Please sign in to comment.