]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-926 Fix JavaFile parent key when located in root directory
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 17 Jan 2014 16:25:59 +0000 (17:25 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Fri, 17 Jan 2014 16:26:52 +0000 (17:26 +0100)
sonar-plugin-api/src/main/java/org/sonar/api/resources/JavaFile.java
sonar-plugin-api/src/test/java/org/sonar/api/resources/JavaFileTest.java

index d8346fa13c4d3bfd07ad1def30e2d0c06d6885af..8d55cac43a0c2c5baf4a93dd799ab598753aaa79 100644 (file)
@@ -221,9 +221,11 @@ public class JavaFile extends Resource {
     String normalizedPath = normalize(relativePathFromBasedir);
     javaFile.setKey(normalizedPath);
     javaFile.setPath(normalizedPath);
-    String directoryKey = StringUtils.substringBeforeLast(normalizedPath, Directory.SEPARATOR);
     javaFile.parent = new Directory();
-    javaFile.parent.setKey(directoryKey);
+    String directoryPath = StringUtils.substringBeforeLast(normalizedPath, Directory.SEPARATOR);
+    String normalizedParentPath = normalize(directoryPath);
+    javaFile.parent.setKey(normalizedParentPath);
+    javaFile.parent.setPath(normalizedParentPath);
     return javaFile;
   }
 
index 9dba526fb45c57b4477e1ea8640b2623c54e64dc..c5f158533ea91c9072c71f9c2cf036ab928cfd7f 100644 (file)
@@ -85,6 +85,18 @@ public class JavaFileTest {
     assertThat(javaClass.getParent().isDefault()).isTrue();
   }
 
+  @Test
+  public void testNewClassInRootFolder() {
+    JavaFile javaClass = JavaFile.create("Hello.java", "Hello.java", false);
+    assertThat(javaClass.getKey()).isEqualTo("/Hello.java");
+    assertThat(javaClass.getDeprecatedKey(), is(JavaPackage.DEFAULT_PACKAGE_NAME + ".Hello"));
+    assertThat(javaClass.getName(), is("Hello.java"));
+    assertThat(javaClass.getLongName(), is("Hello"));
+    assertThat(javaClass.getParent().getKey()).isEqualTo("/");
+    assertThat(javaClass.getParent().getDeprecatedKey()).isEqualTo(Directory.ROOT);
+    assertThat(javaClass.getParent().isDefault()).isTrue();
+  }
+
   @Test
   public void testNewClassWithEmptyPackageDeprecatedConstructor() {
     JavaFile javaClass = new JavaFile("", "Hello", false);