Skip to content

Commit 9102c3f

Browse files
author
Ben Romberg
committed
fix #3: StringIndexOutOfBoundsException when constructing output for
classNames
1 parent 099e79d commit 9102c3f

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/main/java/de/andrena/tools/nopackagecycles/PackageCycleOutput.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private void appendOutputForCyclicPackageClasses(JavaPackage javaPackage, final
104104
List<JavaClass> dependentClasses) {
105105
joinCollection(dependentClasses, output, new Appender<JavaClass>() {
106106
public void append(JavaClass packageClass) {
107-
output.append(packageClass.getName().substring(cyclicPackage.getName().length() + 1));
107+
output.append(packageClass.getName().substring(packageClass.getPackageName().length() + 1));
108108
}
109109
}, ", ");
110110
}

src/test/java/de/andrena/tools/nopackagecycles/PackageCycleOutputTest.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ public void outputFor_MultiplePackageCycles_IsOrderedByCycle() {
114114
+ getPackageOutput(otherPackage2) + getPackageOutput(package2));
115115
}
116116

117+
@Test
118+
public void outputFor_ClassesInPackageNamesWithDifferentLengths() throws Exception {
119+
initDefaultPackages();
120+
JavaPackage otherPackage1 = createPackage("other.package1");
121+
package1.dependsUpon(otherPackage1);
122+
otherPackage1.dependsUpon(package1);
123+
JavaClass package1Class = createClassInPackage(PACKAGE1_CLASS_NAME1, package1);
124+
package1Class.addImportedPackage(otherPackage1);
125+
assertOutput(getPackageCycleOutput(otherPackage1, package1) + getPackageOutput(otherPackage1)
126+
+ getPackageOutputWithClasses(package1, otherPackage1, PACKAGE1_CLASS_NAME1));
127+
}
128+
117129
private JavaPackage createPackage(String package1Name) {
118130
JavaPackage newPackage = new JavaPackage(package1Name);
119131
packages.add(newPackage);
@@ -127,9 +139,10 @@ private void initDefaultPackages() {
127139
}
128140

129141
private JavaClass createClassInPackage(String className, JavaPackage classPackage) {
130-
JavaClass package1Class = new JavaClass(classPackage.getName() + "." + className);
131-
classPackage.addClass(package1Class);
132-
return package1Class;
142+
JavaClass javaClass = new JavaClass(classPackage.getName() + "." + className);
143+
javaClass.setPackageName(classPackage.getName());
144+
classPackage.addClass(javaClass);
145+
return javaClass;
133146
}
134147

135148
private String getPackageOutputWithClasses(JavaPackage javaPackage, JavaPackage dependencyPackage,

0 commit comments

Comments
 (0)