From: Julien HENRY Date: Fri, 17 Jan 2014 16:25:59 +0000 (+0100) Subject: SONAR-926 Fix JavaFile parent key when located in root directory X-Git-Tag: 4.2~615 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b2606fb5c1b0268ad2508a81652d73b0a32c1998;p=sonarqube.git SONAR-926 Fix JavaFile parent key when located in root directory --- diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/resources/JavaFile.java b/sonar-plugin-api/src/main/java/org/sonar/api/resources/JavaFile.java index d8346fa13c4..8d55cac43a0 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/resources/JavaFile.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/resources/JavaFile.java @@ -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; } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/resources/JavaFileTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/resources/JavaFileTest.java index 9dba526fb45..c5f158533ea 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/resources/JavaFileTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/resources/JavaFileTest.java @@ -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);