Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java1
-rw-r--r--org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java4
-rw-r--r--org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/JrtFileSystem.java4
-rw-r--r--org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java4
-rw-r--r--org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247Jdk12.java13
-rw-r--r--org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java10
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/JRTUtil.java20
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java2
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java7
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrtWithReleaseOption.java7
-rw-r--r--org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java6
13 files changed, 47 insertions, 39 deletions
diff --git a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java
index 6399b841e3..75bad9352d 100644
--- a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java
+++ b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java
@@ -31,7 +31,6 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.ServiceLoader;
diff --git a/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java b/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java
index c54b616aec..a34fbbf62e 100644
--- a/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java
+++ b/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java
@@ -92,8 +92,8 @@ public class JrtFileSystem extends Archive {
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
- JrtFileSystem.this.modulePathMap.put(mod.getFileName().toString(), mod);
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
+ JrtFileSystem.this.modulePathMap.put(name, path);
return FileVisitResult.CONTINUE;
}
}, JRTUtil.NOTIFY_MODULES);
diff --git a/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/JrtFileSystem.java b/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/JrtFileSystem.java
index 07cadc27fb..a140e15240 100644
--- a/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/JrtFileSystem.java
+++ b/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/JrtFileSystem.java
@@ -92,8 +92,8 @@ public class JrtFileSystem extends Archive {
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
- JrtFileSystem.this.modulePathMap.put(mod.getFileName().toString(), mod);
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
+ JrtFileSystem.this.modulePathMap.put(name, path);
return FileVisitResult.CONTINUE;
}
}, JRTUtil.NOTIFY_MODULES);
diff --git a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java
index 408f946fcb..8dfa35f38c 100644
--- a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java
+++ b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java
@@ -164,7 +164,7 @@ public class ClasspathJep247 extends ClasspathJrt {
if (content == null)
return FileVisitResult.CONTINUE;
ClasspathJep247.this.acceptModule(content);
- ClasspathJep247.this.moduleNamesCache.add(f.getFileName().toString());
+ ClasspathJep247.this.moduleNamesCache.add(JRTUtil.sanitizedFileName(f));
}
return FileVisitResult.CONTINUE;
}
@@ -221,7 +221,7 @@ public class ClasspathJep247 extends ClasspathJrt {
List<String> sub = new ArrayList<>();
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
for (final java.nio.file.Path subdir: stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (rel.contains(this.releaseInHex)) {
sub.add(rel);
} else {
diff --git a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247Jdk12.java b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247Jdk12.java
index 4ae242da81..917fde6507 100644
--- a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247Jdk12.java
+++ b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247Jdk12.java
@@ -74,7 +74,7 @@ public class ClasspathJep247Jdk12 extends ClasspathJep247 {
Path p = this.fs.getPath(rel);
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(p)) {
for (final java.nio.file.Path subdir: stream) {
- Path f = this.fs.getPath(rel, subdir.getFileName().toString(), qualifiedBinaryFileName);
+ Path f = this.fs.getPath(rel, JRTUtil.sanitizedFileName(subdir), qualifiedBinaryFileName);
if (Files.exists(f)) {
content = JRTUtil.safeReadBytes(f);
if (content != null)
@@ -138,7 +138,7 @@ public class ClasspathJep247Jdk12 extends ClasspathJep247 {
List<String> sub = new ArrayList<>();
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
for (final java.nio.file.Path subdir: stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (rel.contains(this.releaseInHex))
sub.add(rel);
}
@@ -161,7 +161,7 @@ public class ClasspathJep247Jdk12 extends ClasspathJep247 {
if (this.modules == null) {
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
for (final java.nio.file.Path subdir: stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (!rel.contains(this.releaseInHex)) {
continue;
}
@@ -183,8 +183,9 @@ public class ClasspathJep247Jdk12 extends ClasspathJep247 {
if (content == null)
return FileVisitResult.CONTINUE;
Path m = f.subpath(1, f.getNameCount() - 1);
- ClasspathJep247Jdk12.this.acceptModule(m.getFileName().toString(), content);
- ClasspathJep247Jdk12.this.moduleNamesCache.add(m.getFileName().toString());
+ String name = JRTUtil.sanitizedFileName(m);
+ ClasspathJep247Jdk12.this.acceptModule(name, content);
+ ClasspathJep247Jdk12.this.moduleNamesCache.add(name);
}
return FileVisitResult.SKIP_SIBLINGS;
}
@@ -264,7 +265,7 @@ public class ClasspathJep247Jdk12 extends ClasspathJep247 {
this.packageCache.add(Util.EMPTY_STRING);
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
for (final java.nio.file.Path subdir: stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (!rel.contains(this.releaseInHex)) {
continue;
}
diff --git a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java
index e76860d4d6..117ba4758f 100644
--- a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java
+++ b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java
@@ -156,10 +156,10 @@ public class ClasspathJrt extends ClasspathLocation implements IMultiModuleEntry
}
@Override
- public FileVisitResult visitModule(java.nio.file.Path modPath) throws IOException {
+ public FileVisitResult visitModule(Path p, String name) throws IOException {
if (moduleName == null)
return FileVisitResult.CONTINUE;
- if (!moduleName.equals(modPath.toString())) {
+ if (!moduleName.equals(name)) {
return FileVisitResult.SKIP_SUBTREE;
}
return FileVisitResult.CONTINUE;
@@ -219,10 +219,10 @@ public class ClasspathJrt extends ClasspathLocation implements IMultiModuleEntry
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
+ public FileVisitResult visitModule(Path p, String name) throws IOException {
try {
- ClasspathJrt.this.acceptModule(JRTUtil.getClassfileContent(ClasspathJrt.this.file, IModule.MODULE_INFO_CLASS, mod.toString()));
- ClasspathJrt.this.moduleNamesCache.add(mod.getFileName().toString());
+ ClasspathJrt.this.acceptModule(JRTUtil.getClassfileContent(ClasspathJrt.this.file, IModule.MODULE_INFO_CLASS, name));
+ ClasspathJrt.this.moduleNamesCache.add(name);
} catch (ClassFormatException e) {
e.printStackTrace();
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/JRTUtil.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/JRTUtil.java
index ae56b650e8..5d9b78bb81 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/JRTUtil.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/JRTUtil.java
@@ -79,7 +79,7 @@ public class JRTUtil {
* how the JRT needs to be processed, for e.g., clients can skip a particular module
* by returning FileVisitResult.SKIP_SUBTREE
*/
- public FileVisitResult visitModule(T mod) throws IOException;
+ public FileVisitResult visitModule(T path, String name) throws IOException;
}
static abstract class AbstractFileVisitor<T> implements FileVisitor<T> {
@@ -184,6 +184,16 @@ public class JRTUtil {
public static boolean hasCompilationUnit(File jrt, String qualifiedPackageName, String moduleName) {
return getJrtSystem(jrt).hasClassFile(qualifiedPackageName, moduleName);
}
+ /*
+ * Returns only the file name after removing trailing '/' if any for folders
+ */
+ public static String sanitizedFileName(Path path) {
+ String p = path.getFileName().toString();
+ if (p.length() > 1 && p.charAt(p.length() - 1) == '/') {
+ return p.substring(0, p.length() - 1);
+ }
+ return p;
+ }
/**
* Tries to read all bytes of the file denoted by path,
* returns null if the file could not be found or if the read was interrupted.
@@ -257,7 +267,7 @@ class JrtFileSystemWithOlderRelease extends JrtFileSystem {
List<String> sub = new ArrayList<>();
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(releasePath)) {
for (final java.nio.file.Path subdir: stream) {
- String r = subdir.getFileName().toString();
+ String r = JRTUtil.sanitizedFileName(subdir);
if (r.contains(this.releaseInHex)) {
sub.add(r);
} else {
@@ -293,7 +303,7 @@ class JrtFileSystemWithOlderRelease extends JrtFileSystem {
return FileVisitResult.SKIP_SUBTREE;
}
return ((notify & JRTUtil.NOTIFY_MODULES) == 0) ? FileVisitResult.CONTINUE
- : visitor.visitModule(dir);
+ : visitor.visitModule(dir, JRTUtil.sanitizedFileName(mod));
}
if ((notify & JRTUtil.NOTIFY_PACKAGES) == 0) {
// client is not interested in packages
@@ -467,7 +477,7 @@ class JrtFileSystem {
byte[] getClassfileContent(String fileName, String module) throws IOException, ClassFormatException {
byte[] content = null;
if (module != null) {
- content = getClassfileBytes(fileName, new String(module.toCharArray()));
+ content = getClassfileBytes(fileName, module);
} else {
String[] modules = getModules(fileName);
for (String mod : modules) {
@@ -544,7 +554,7 @@ class JrtFileSystem {
return FileVisitResult.SKIP_SUBTREE;
}
return ((notify & JRTUtil.NOTIFY_MODULES) == 0) ?
- FileVisitResult.CONTINUE : visitor.visitModule(mod);
+ FileVisitResult.CONTINUE : visitor.visitModule(dir, JRTUtil.sanitizedFileName(mod));
}
if ((notify & JRTUtil.NOTIFY_PACKAGES) == 0) {
// We are dealing with a module or not client is not interested in packages
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
index 301df83247..fdb13ad30c 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
@@ -935,8 +935,8 @@ public class JavaProject
}
@Override
- public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
- JrtPackageFragmentRoot root = new JrtPackageFragmentRoot(imagePath, mod.toString(), JavaProject.this);
+ public FileVisitResult visitModule(java.nio.file.Path path, String name) throws IOException {
+ JrtPackageFragmentRoot root = new JrtPackageFragmentRoot(imagePath, name, JavaProject.this);
roots.add(root);
if (rootToResolvedEntries != null)
rootToResolvedEntries.put(root, ((ClasspathEntry)resolvedEntry).combineWith((ClasspathEntry) referringEntry));
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java
index cd3e8158c8..dba3e1a374 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java
@@ -78,8 +78,8 @@ public class JrtPackageFragmentRoot extends JarPackageFragmentRoot implements IM
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
- if (!JrtPackageFragmentRoot.this.moduleName.equals(mod.toString())) {
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
+ if (!JrtPackageFragmentRoot.this.moduleName.equals(name)) {
return FileVisitResult.SKIP_SUBTREE;
}
return FileVisitResult.CONTINUE;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
index 64cf749f1f..4c99d4add2 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
@@ -530,7 +530,7 @@ public class SourceMapper
}
@Override
- public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+ public FileVisitResult visitModule(java.nio.file.Path path, String name) throws IOException {
return FileVisitResult.CONTINUE;
}
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java
index c9a57cda0b..9576ce72fe 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java
@@ -101,8 +101,7 @@ static HashMap<String, SimpleSet> findPackagesInModules(final ClasspathJrt jrt)
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
- String name = mod.toString();
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
try {
jrt.acceptModule(JRTUtil.getClassfileContent(imageFile, IModule.MODULE_INFO_CLASS, name));
} catch (ClassFormatException e) {
@@ -144,9 +143,9 @@ public static void loadModules(final ClasspathJrt jrt) {
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
try {
- jrt.acceptModule(JRTUtil.getClassfileContent(imageFile, IModule.MODULE_INFO_CLASS, mod.toString()));
+ jrt.acceptModule(JRTUtil.getClassfileContent(imageFile, IModule.MODULE_INFO_CLASS, name));
} catch (ClassFormatException e) {
e.printStackTrace();
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrtWithReleaseOption.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrtWithReleaseOption.java
index fdef682456..9a388393ce 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrtWithReleaseOption.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJrtWithReleaseOption.java
@@ -96,7 +96,7 @@ public class ClasspathJrtWithReleaseOption extends ClasspathJrt {
private boolean isJRE12Plus(Path path) {
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(path)) {
for (final java.nio.file.Path subdir : stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (Files.exists(this.fs.getPath(rel, "system-modules"))) { //$NON-NLS-1$
int parseInt = Integer.parseInt(rel, 16);
return (parseInt > 11);
@@ -158,7 +158,7 @@ public class ClasspathJrtWithReleaseOption extends ClasspathJrt {
List<String> sub = new ArrayList<>();
try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(releasePath)) {
for (final java.nio.file.Path subdir : stream) {
- String rel = subdir.getFileName().toString();
+ String rel = JRTUtil.sanitizedFileName(subdir);
if (rel.contains(this.releaseInHex)) {
sub.add(rel);
} else {
@@ -205,8 +205,7 @@ public class ClasspathJrtWithReleaseOption extends ClasspathJrt {
}
@Override
- public FileVisitResult visitModule(Path mod) throws IOException {
- String name = mod.getName(1).toString();
+ public FileVisitResult visitModule(Path path, String name) throws IOException {
this.packageSet = new SimpleSet(41);
this.packageSet.add(""); //$NON-NLS-1$
packagesInModule.put(name, this.packageSet);
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java
index df04833ee0..baa8c67ccd 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java
@@ -98,7 +98,7 @@ public class AddJrtToIndex extends BinaryContainer {
@Override
public FileVisitResult visitFile(java.nio.file.Path path, java.nio.file.Path mod, BasicFileAttributes attrs)
throws IOException {
- String name = path.getFileName().toString();
+ String name = JRTUtil.sanitizedFileName(path);
if (Util.isClassFileName(name) &&
isValidPackageNameForClassOrisModule(name)) {
this.indexedFileNames.put(name, FILE_INDEX_STATE.EXISTS);
@@ -106,7 +106,7 @@ public class AddJrtToIndex extends BinaryContainer {
return FileVisitResult.CONTINUE;
}
@Override
- public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+ public FileVisitResult visitModule(java.nio.file.Path path, String name) throws IOException {
return FileVisitResult.CONTINUE;
}
}
@@ -132,7 +132,7 @@ public class AddJrtToIndex extends BinaryContainer {
@Override
public FileVisitResult visitFile(java.nio.file.Path path, java.nio.file.Path mod, BasicFileAttributes attrs)
throws IOException {
- String name = path.getFileName().toString();
+ String name = JRTUtil.sanitizedFileName(path);
if (Util.isClassFileName(name) &&
isValidPackageNameForClassOrisModule(name)) {
try {

Back to the top