Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Fedorenko2015-05-12 20:14:08 +0000
committerJay Arthanareeswaran2015-05-14 01:46:07 +0000
commitadc0605179ecd43bef564f03b858c1ac817e077c (patch)
treeac6459b6451f5dda48bda45a5aeb3f9cdc8e5242
parent699f85df0061a8b41250aa99562a0fc140375ee5 (diff)
downloadeclipse.jdt.core-adc0605179ecd43bef564f03b858c1ac817e077c.tar.gz
eclipse.jdt.core-adc0605179ecd43bef564f03b858c1ac817e077c.tar.xz
eclipse.jdt.core-adc0605179ecd43bef564f03b858c1ac817e077c.zip
Bug 466878 - EclipseFileManager#getFileForInput can't find resource in
Default package Change-Id: Ibe237bfba6e456ffbc15a02a6cb2fe6b93debc9d Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
-rw-r--r--org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/classes/dirresource.txt1
-rw-r--r--org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/dependency.zipbin0 -> 510 bytes
-rw-r--r--org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/FileManagerTests.java12
-rw-r--r--org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java14
4 files changed, 25 insertions, 2 deletions
diff --git a/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/classes/dirresource.txt b/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/classes/dirresource.txt
new file mode 100644
index 0000000000..1df6728f70
--- /dev/null
+++ b/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/classes/dirresource.txt
@@ -0,0 +1 @@
+dir resource
diff --git a/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/dependency.zip b/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/dependency.zip
new file mode 100644
index 0000000000..bfda69c77c
--- /dev/null
+++ b/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/dependency.zip
Binary files differ
diff --git a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/FileManagerTests.java b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/FileManagerTests.java
index 92cad41ac3..4e55a12b55 100644
--- a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/FileManagerTests.java
+++ b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/FileManagerTests.java
@@ -186,4 +186,16 @@ public class FileManagerTests extends TestCase {
e.printStackTrace();
}
}
+
+ public void testBug466878_getResource_defaultPackage() throws Exception {
+ EclipseFileManager fileManager = new EclipseFileManager(Locale.getDefault(), Charset.defaultCharset());
+ List<File> classpath = new ArrayList<>();
+ classpath.add(new File("resources/targets/filemanager/classes"));
+ classpath.add(new File("resources/targets/filemanager/dependency.zip"));
+ fileManager.setLocation(javax.tools.StandardLocation.CLASS_PATH, classpath);
+ assertNotNull(fileManager.getFileForInput(javax.tools.StandardLocation.CLASS_PATH, "", "dirresource.txt"));
+ assertNotNull(fileManager.getFileForInput(javax.tools.StandardLocation.CLASS_PATH, "", "jarresource.txt"));
+ fileManager.close();
+ }
+
}
diff --git a/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java b/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
index 99192e72eb..b59f8d8d0a 100644
--- a/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
+++ b/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
@@ -329,7 +329,7 @@ public class EclipseFileManager implements StandardJavaFileManager {
if (files == null) {
throw new IllegalArgumentException("Unknown location : " + location);//$NON-NLS-1$
}
- String normalizedFileName = normalized(packageName) + '/' + relativeName.replace('\\', '/');
+ String normalizedFileName = normalizedFileName(packageName, relativeName);
for (File file : files) {
if (file.isDirectory()) {
// handle directory
@@ -351,7 +351,17 @@ public class EclipseFileManager implements StandardJavaFileManager {
}
return null;
}
-
+
+ private String normalizedFileName(String packageName, String relativeName) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(normalized(packageName));
+ if (sb.length() > 0) {
+ sb.append('/');
+ }
+ sb.append(relativeName.replace('\\', '/'));
+ return sb.toString();
+ }
+
/* (non-Javadoc)
* @see javax.tools.JavaFileManager#getFileForOutput(javax.tools.JavaFileManager.Location, java.lang.String, java.lang.String, javax.tools.FileObject)
*/

Back to the top