This is an automated email from the ASF dual-hosted git repository.
skygo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 6db5615 Fix resources with same name but different extension from
being hidden inside multi-release JARs.
new 0347bdc Merge pull request #2115 from
neilcsmith-net/mrj-missing-resources
6db5615 is described below
commit 6db56159a7b6260629307a71a462caf2b546ff46
Author: Neil C Smith <[email protected]>
AuthorDate: Fri May 1 12:13:14 2020 +0100
Fix resources with same name but different extension from being hidden
inside multi-release JARs.
Change CachingFileManager and ModuleFileManager to use a Map key that
includes file extension to control file overriding.
---
.../netbeans/modules/java/source/parsing/CachingFileManager.java | 7 +++++--
.../netbeans/modules/java/source/parsing/ModuleFileManager.java | 7 +++++--
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git
a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CachingFileManager.java
b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CachingFileManager.java
index 294be61..eb64f36 100644
---
a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CachingFileManager.java
+++
b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CachingFileManager.java
@@ -247,6 +247,8 @@ public class CachingFileManager implements JavaFileManager,
PropertyChangeListen
Archive archive = provider.getArchive( entry.getURL(),
cacheFile );
if (archive != null) {
final Iterable<JavaFileObject> entries;
+ // multi-release code here duplicated in ModuleFileManager
+ // fixes should be ported across, or ideally this logic
abstracted
if (supportsMultiRelease && archive.isMultiRelease()) {
if (prefixes == null) {
prefixes = multiReleaseRelocations();
@@ -267,11 +269,12 @@ public class CachingFileManager implements
JavaFileManager, PropertyChangeListen
}
final String fqn = inferBinaryName(l, fo);
final String pkg =
FileObjects.getPackageAndName(fqn)[0];
+ final String name = pkg + "/" +
FileObjects.getName(fo, false);
if (base) {
seenPackages.add(pkg);
- fqn2f.put(fqn, fo);
+ fqn2f.put(name, fo);
} else if (seenPackages.contains(pkg)) {
- fqn2f.put(fqn, fo);
+ fqn2f.put(name, fo);
}
}
}
diff --git
a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/ModuleFileManager.java
b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/ModuleFileManager.java
index 914face..dea019c 100644
---
a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/ModuleFileManager.java
+++
b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/ModuleFileManager.java
@@ -100,6 +100,8 @@ final class ModuleFileManager implements JavaFileManager {
final Archive archive = cap.getArchive(root, cacheFile);
if (archive != null) {
final Iterable<JavaFileObject> entries;
+ // multi-release code here duplicated in CachingFileManager
+ // fixes should be ported across, or ideally this logic
abstracted
if (supportsMultiRelease && archive.isMultiRelease()) {
if (prefixes == null) {
prefixes = multiReleaseRelocations();
@@ -120,11 +122,12 @@ final class ModuleFileManager implements JavaFileManager {
}
final String fqn = inferBinaryName(l, fo);
final String pkg =
FileObjects.getPackageAndName(fqn)[0];
+ final String name = pkg + "/" +
FileObjects.getName(fo, false);
if (base) {
seenPackages.add(pkg);
- fqn2f.put(fqn, fo);
+ fqn2f.put(name, fo);
} else if (seenPackages.contains(pkg)) {
- fqn2f.put(fqn, fo);
+ fqn2f.put(name, fo);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists