Skip to content

Commit a56ab37

Browse files
committed
Add null checks to inner switches
Remove some intusive, non-informative log messages Format them too
1 parent 89e0875 commit a56ab37

12 files changed

Lines changed: 969 additions & 778 deletions

commit-based-cipm/bundles/fi/org.splevo.jamopp.diffing/src/org/splevo/jamopp/diffing/similarity/switches/AnnotationsSimilaritySwitch.java

Lines changed: 48 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
/**
1313
* Similarity decisions for annotation elements.
1414
*/
15-
public class AnnotationsSimilaritySwitch extends AnnotationsSwitch<Boolean> implements ILoggableJavaSwitch, IJavaSimilarityPositionInnerSwitch {
15+
public class AnnotationsSimilaritySwitch extends AnnotationsSwitch<Boolean>
16+
implements ILoggableJavaSwitch, IJavaSimilarityPositionInnerSwitch {
1617
private IJavaSimilaritySwitch similaritySwitch;
1718
private boolean checkStatementPosition;
1819

@@ -25,66 +26,61 @@ public ISimilarityRequestHandler getSimilarityRequestHandler() {
2526
public boolean shouldCheckStatementPosition() {
2627
return this.checkStatementPosition;
2728
}
28-
29+
2930
@Override
3031
public IJavaSimilaritySwitch getContainingSwitch() {
3132
return this.similaritySwitch;
3233
}
33-
34+
3435
public AnnotationsSimilaritySwitch(IJavaSimilaritySwitch similaritySwitch, boolean checkStatementPosition) {
3536
this.similaritySwitch = similaritySwitch;
3637
this.checkStatementPosition = checkStatementPosition;
3738
}
3839

3940
@Override
40-
public Boolean caseAnnotationInstance(AnnotationInstance instance1) {
41+
public Boolean caseAnnotationInstance(AnnotationInstance instance1) {
4142
this.logMessage("caseAnnotationInstance");
42-
43-
AnnotationInstance instance2 = (AnnotationInstance) this.getCompareElement();
44-
this.logComparison(
45-
instance1.getAnnotation(),
46-
instance2.getAnnotation(),
47-
AnnotationInstance.class.getSimpleName());
48-
49-
Classifier class1 = instance1.getAnnotation();
50-
Classifier class2 = instance2.getAnnotation();
51-
Boolean classifierSimilarity = this.isSimilar(class1, class2);
52-
this.logResult(classifierSimilarity, Classifier.class.getSimpleName());
53-
if (classifierSimilarity == Boolean.FALSE) {
54-
return Boolean.FALSE;
55-
}
56-
57-
String namespace1 = instance1.getNamespacesAsString();
58-
String namespace2 = instance2.getNamespacesAsString();
59-
this.logComparison(namespace1, namespace2, "namespace");
60-
if (namespace1 == null) {
61-
this.logResult(namespace2 == null, "namespace");
62-
return (namespace2 == null);
63-
} else {
64-
this.logResult(namespace1.equals(namespace2), "namespace");
65-
return (namespace1.equals(namespace2));
66-
}
67-
}
68-
69-
@Override
70-
public Boolean caseAnnotationAttributeSetting(AnnotationAttributeSetting setting1) {
71-
this.logMessage("caseAnnotationAttributeSetting");
72-
73-
AnnotationAttributeSetting setting2 = (AnnotationAttributeSetting) this.getCompareElement();
74-
this.logComparison(setting1.getAttribute(), setting2.getAttribute(), AnnotationAttributeSetting.class.getSimpleName());
75-
Boolean similarity = this.isSimilar(setting1.getAttribute(), setting2.getAttribute());
76-
this.logResult(similarity, AnnotationAttributeSetting.class.getSimpleName());
77-
if (similarity == Boolean.FALSE) {
78-
return Boolean.FALSE;
79-
}
80-
return Boolean.TRUE;
81-
}
82-
83-
@Override
84-
public Boolean defaultCase(EObject object) {
85-
this.logMessage("defaultCase for Annotation");
86-
87-
this.logMessage("Default annotation comparing case for "+AnnotationsSimilaritySwitch.class.getSimpleName()+", similarity: true");
88-
return Boolean.TRUE;
89-
}
43+
44+
AnnotationInstance instance2 = (AnnotationInstance) this.getCompareElement();
45+
46+
Classifier class1 = instance1.getAnnotation();
47+
Classifier class2 = instance2.getAnnotation();
48+
49+
Boolean classifierSimilarity = this.isSimilar(class1, class2);
50+
if (classifierSimilarity == Boolean.FALSE) {
51+
return Boolean.FALSE;
52+
}
53+
54+
String namespace1 = instance1.getNamespacesAsString();
55+
String namespace2 = instance2.getNamespacesAsString();
56+
57+
if (namespace1 == null) {
58+
return (namespace2 == null);
59+
} else {
60+
return (namespace1.equals(namespace2));
61+
}
62+
}
63+
64+
@Override
65+
public Boolean caseAnnotationAttributeSetting(AnnotationAttributeSetting setting1) {
66+
this.logMessage("caseAnnotationAttributeSetting");
67+
68+
AnnotationAttributeSetting setting2 = (AnnotationAttributeSetting) this.getCompareElement();
69+
70+
Boolean similarity = this.isSimilar(setting1.getAttribute(), setting2.getAttribute());
71+
if (similarity == Boolean.FALSE) {
72+
return Boolean.FALSE;
73+
}
74+
75+
return Boolean.TRUE;
76+
}
77+
78+
@Override
79+
public Boolean defaultCase(EObject object) {
80+
this.logMessage("defaultCase for Annotation");
81+
82+
this.logMessage("Default annotation comparing case for " + AnnotationsSimilaritySwitch.class.getSimpleName()
83+
+ ", similarity: true");
84+
return Boolean.TRUE;
85+
}
9086
}

commit-based-cipm/bundles/fi/org.splevo.jamopp.diffing/src/org/splevo/jamopp/diffing/similarity/switches/ClassifiersSimilaritySwitch.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ public Boolean caseConcreteClassifier(ConcreteClassifier classifier1) {
5050

5151
ConcreteClassifier classifier2 = (ConcreteClassifier) this.getCompareElement();
5252

53-
String name1 = this.normalizeClassifier(classifier1.getQualifiedName());
53+
String name1 = Strings.nullToEmpty(classifier1.getQualifiedName());
54+
name1 = Strings.nullToEmpty(this.normalizeClassifier(name1));
5455
String name2 = Strings.nullToEmpty(classifier2.getQualifiedName());
5556

5657
return (name1.equals(name2));

commit-based-cipm/bundles/fi/org.splevo.jamopp.diffing/src/org/splevo/jamopp/diffing/similarity/switches/CommonsSimilaritySwitch.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,13 @@ public Boolean caseNamedElement(NamedElement element1) {
4848

4949
NamedElement element2 = (NamedElement) this.getCompareElement();
5050

51-
if (element1.getName() == null) {
52-
return (element2.getName() == null);
51+
var name1 = element1.getName();
52+
var name2 = element2.getName();
53+
54+
if (name1 == null) {
55+
return (name2 == null);
5356
}
5457

55-
return (element1.getName().equals(element2.getName()));
58+
return (name1.equals(name2));
5659
}
5760
}

commit-based-cipm/bundles/fi/org.splevo.jamopp.diffing/src/org/splevo/jamopp/diffing/similarity/switches/ContainersSimilaritySwitch.java

Lines changed: 97 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
/**
1414
* Similarity decisions for container elements.
1515
*/
16-
public class ContainersSimilaritySwitch extends ContainersSwitch<Boolean> implements ILoggableJavaSwitch, IJavaSimilarityPositionInnerSwitch {
16+
public class ContainersSimilaritySwitch extends ContainersSwitch<Boolean>
17+
implements ILoggableJavaSwitch, IJavaSimilarityPositionInnerSwitch {
1718
private IJavaSimilaritySwitch similaritySwitch;
1819
private boolean checkStatementPosition;
1920

@@ -26,112 +27,108 @@ public ISimilarityRequestHandler getSimilarityRequestHandler() {
2627
public boolean shouldCheckStatementPosition() {
2728
return this.checkStatementPosition;
2829
}
29-
30+
3031
@Override
3132
public IJavaSimilaritySwitch getContainingSwitch() {
3233
return this.similaritySwitch;
3334
}
3435

35-
public ContainersSimilaritySwitch(IJavaSimilaritySwitch similaritySwitch, boolean checkStatementPosition) {
36+
public ContainersSimilaritySwitch(IJavaSimilaritySwitch similaritySwitch, boolean checkStatementPosition) {
3637
this.similaritySwitch = similaritySwitch;
3738
this.checkStatementPosition = checkStatementPosition;
3839
}
3940

40-
/**
41-
* Check the similarity of two CompilationUnits.<br>
42-
* Similarity is checked by
43-
* <ul>
44-
* <li>Comparing their names (including renamings)</li>
45-
* <li>Comparing their namespaces' values (including renamings)</li>
46-
* </ul>
47-
* Note: CompilationUnit names are full qualified. So it is important to apply classifier as
48-
* well as package renaming normalizations to them.
49-
*
50-
* @param unit1
51-
* The compilation unit to compare with the compareElement.
52-
* @return True/False whether they are similar or not.
53-
*/
54-
@Override
55-
public Boolean caseCompilationUnit(CompilationUnit unit1) {
56-
this.logMessage("caseCompilationUnit");
57-
58-
CompilationUnit unit2 = (CompilationUnit) this.getCompareElement();
59-
this.logComparison(unit1.getName(), unit2.getName(), CompilationUnit.class.getSimpleName());
60-
61-
String name1 = this.normalizeCompilationUnit(unit1.getName());
62-
name1 = this.normalizePackage(name1);
63-
String name2 = unit2.getName();
64-
65-
this.logResult(name1.equals(name2), "compilation unit name");
66-
if (!name1.equals(name2)) {
67-
return Boolean.FALSE;
68-
}
69-
70-
String namespaceString1 = this.normalizeNamespace(unit1.getNamespacesAsString());
71-
String namespaceString2 = Strings.nullToEmpty(unit2.getNamespacesAsString());
72-
73-
this.logResult(namespaceString1.equals(namespaceString2), "compilation unit namespace");
74-
75-
if (!namespaceString1.equals(namespaceString2)) {
76-
return Boolean.FALSE;
77-
}
78-
79-
return Boolean.TRUE;
80-
}
81-
82-
/**
83-
* Check package similarity.<br>
84-
* Similarity is checked by
85-
* <ul>
86-
* <li>full qualified package path</li>
87-
* </ul>
88-
*
89-
* @param package1
90-
* The package to compare with the compare element.
91-
* @return True/False if the packages are similar or not.
92-
*/
93-
@Override
94-
public Boolean casePackage(Package package1) {
95-
this.logMessage("casePackage");
96-
97-
Package package2 = (Package) this.getCompareElement();
98-
this.logComparison(package1, package2, Package.class.getSimpleName());
99-
100-
String packagePath1 = JaMoPPModelUtil.buildNamespacePath(package1);
101-
packagePath1 = this.normalizeNamespace(packagePath1);
102-
String packagePath2 = JaMoPPModelUtil.buildNamespacePath(package2);
103-
104-
this.logComparison(packagePath1, packagePath2, "package namespace");
105-
this.logResult(packagePath1.equals(packagePath2), "package path");
106-
107-
if (!packagePath1.equals(packagePath2)) {
108-
return Boolean.FALSE;
109-
}
110-
111-
return Boolean.TRUE;
112-
}
113-
114-
/**
115-
* Check module similarity.<br>
116-
* Similarity is checked by
117-
* <ul>
118-
* <li>module names</li>
119-
* </ul>
120-
*
121-
* @param module1 The module to compare with the compare element.
122-
* @return True/False if the modules are similar or not.
123-
*/
124-
@Override
125-
public Boolean caseModule(org.emftext.language.java.containers.Module module1) {
126-
this.logMessage("caseModule");
127-
128-
org.emftext.language.java.containers.Module module2 =
129-
(org.emftext.language.java.containers.Module) this.getCompareElement();
130-
131-
this.logResult(module1.getName().equals(module2.getName()), org.emftext.language.java.containers.Module.class.getSimpleName());
132-
if (!module1.getName().equals(module2.getName())) {
133-
return Boolean.FALSE;
134-
}
135-
return Boolean.TRUE;
136-
}
41+
/**
42+
* Check the similarity of two CompilationUnits.<br>
43+
* Similarity is checked by
44+
* <ul>
45+
* <li>Comparing their names (including renamings)</li>
46+
* <li>Comparing their namespaces' values (including renamings)</li>
47+
* </ul>
48+
* Note: CompilationUnit names are full qualified. So it is important to apply
49+
* classifier as well as package renaming normalizations to them.
50+
*
51+
* @param unit1 The compilation unit to compare with the compareElement.
52+
* @return True/False whether they are similar or not.
53+
*/
54+
@Override
55+
public Boolean caseCompilationUnit(CompilationUnit unit1) {
56+
this.logMessage("caseCompilationUnit");
57+
58+
CompilationUnit unit2 = (CompilationUnit) this.getCompareElement();
59+
60+
String name1 = Strings.nullToEmpty(unit1.getName());
61+
name1 = Strings.nullToEmpty(this.normalizeCompilationUnit(name1));
62+
name1 = Strings.nullToEmpty(this.normalizePackage(name1));
63+
64+
String name2 = Strings.nullToEmpty(unit2.getName());
65+
66+
if (!name1.equals(name2)) {
67+
return Boolean.FALSE;
68+
}
69+
70+
String namespaceString1 = Strings.nullToEmpty(unit1.getNamespacesAsString());
71+
String namespaceString2 = Strings.nullToEmpty(unit2.getNamespacesAsString());
72+
namespaceString1 = Strings.nullToEmpty(this.normalizeNamespace(namespaceString1));
73+
74+
if (!namespaceString1.equals(namespaceString2)) {
75+
return Boolean.FALSE;
76+
}
77+
78+
return Boolean.TRUE;
79+
}
80+
81+
/**
82+
* Check package similarity.<br>
83+
* Similarity is checked by
84+
* <ul>
85+
* <li>full qualified package path</li>
86+
* </ul>
87+
*
88+
* @param package1 The package to compare with the compare element.
89+
* @return True/False if the packages are similar or not.
90+
*/
91+
@Override
92+
public Boolean casePackage(Package package1) {
93+
this.logMessage("casePackage");
94+
95+
Package package2 = (Package) this.getCompareElement();
96+
97+
String packagePath1 = Strings.nullToEmpty(JaMoPPModelUtil.buildNamespacePath(package1));
98+
packagePath1 = Strings.nullToEmpty(this.normalizeNamespace(packagePath1));
99+
100+
String packagePath2 = Strings.nullToEmpty(JaMoPPModelUtil.buildNamespacePath(package2));
101+
102+
if (!packagePath1.equals(packagePath2)) {
103+
return Boolean.FALSE;
104+
}
105+
106+
return Boolean.TRUE;
107+
}
108+
109+
/**
110+
* Check module similarity.<br>
111+
* Similarity is checked by
112+
* <ul>
113+
* <li>module names</li>
114+
* </ul>
115+
*
116+
* @param module1 The module to compare with the compare element.
117+
* @return True/False if the modules are similar or not.
118+
*/
119+
@Override
120+
public Boolean caseModule(org.emftext.language.java.containers.Module module1) {
121+
this.logMessage("caseModule");
122+
123+
org.emftext.language.java.containers.Module module2 = (org.emftext.language.java.containers.Module) this
124+
.getCompareElement();
125+
126+
var name1 = Strings.nullToEmpty(module1.getName());
127+
var name2 = Strings.nullToEmpty(module2.getName());
128+
129+
if (!name1.equals(name2)) {
130+
return Boolean.FALSE;
131+
}
132+
return Boolean.TRUE;
133+
}
137134
}

0 commit comments

Comments
 (0)