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 <neilcsm...@apache.org>
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: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to