diff options
author | Igor Fedorenko | 2015-05-12 20:14:08 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2015-05-14 01:46:07 +0000 |
commit | adc0605179ecd43bef564f03b858c1ac817e077c (patch) | |
tree | ac6459b6451f5dda48bda45a5aeb3f9cdc8e5242 | |
parent | 699f85df0061a8b41250aa99562a0fc140375ee5 (diff) | |
download | eclipse.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>
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 Binary files differnew file mode 100644 index 0000000000..bfda69c77c --- /dev/null +++ b/org.eclipse.jdt.compiler.apt.tests/resources/targets/filemanager/dependency.zip 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) */ |