This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push: new 4de9597dde minor refactor: don't cache inner classes for the purpose of default import resolving 4de9597dde is described below commit 4de9597dde2e3d0177e6589d45aa2c9020bf2709 Author: Paul King <pa...@asert.com.au> AuthorDate: Fri May 3 20:42:13 2024 +1000 minor refactor: don't cache inner classes for the purpose of default import resolving --- .../codehaus/groovy/vmplugin/v9/ClassFinder.java | 27 ++++++++++++++++------ .../org/codehaus/groovy/vmplugin/v9/Java9.java | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java index 9c4befea33..290c30e00b 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java @@ -83,6 +83,19 @@ public class ClassFinder { * @since 3.0.2 */ public static Map<String, Set<String>> find(URI classpathEntryURI, String packageName, boolean recursive) { + return find(classpathEntryURI, packageName, recursive, true); + } + /** + * Returns the found classes + * + * @param classpathEntryURI the classpath entry + * @param packageName the package under which we find classes + * @param recursive whether to find sub-packages + * @param innerClasses whether to find inner classes (class names containing a "$") + * @return the found classes + * @since 5.0.0 + */ + public static Map<String, Set<String>> find(URI classpathEntryURI, String packageName, boolean recursive, boolean innerClasses) { URI uri; String prefix; String scheme = classpathEntryURI.getScheme(); @@ -99,22 +112,22 @@ public class ClassFinder { uri = URI.create("file:/"); prefix = path.toString(); } else { - uri = URI.create("jar:" + classpathEntryURI.toString()); + uri = URI.create("jar:" + classpathEntryURI); prefix = ""; } } else { throw new UnsupportedOperationException(classpathEntryURI + " is not supported"); } - return find(uri, prefix, packageName, recursive); + return find(uri, prefix, packageName, recursive, innerClasses); } - private static Map<String, Set<String>> find(URI uri, String prefix, String packageName, boolean recursive) { + private static Map<String, Set<String>> find(URI uri, String prefix, String packageName, boolean recursive, final boolean innerClasses) { boolean wfs = "file".equals(uri.getScheme()); if (wfs) prefix = prefix.replace("/", File.separator); - final String sepPatten = Pattern.quote(wfs ? File.separator : "/"); - final int prefixElemCnt = prefix.trim().isEmpty() ? 0 : prefix.split(sepPatten).length; + final String sepPattern = Pattern.quote(wfs ? File.separator : "/"); + final int prefixElemCnt = prefix.trim().isEmpty() ? 0 : prefix.split(sepPattern).length; Map<String, Set<String>> result = new LinkedHashMap<>(); Tuple2<FileSystem, Boolean> fsMaybeNew = null; @@ -128,14 +141,14 @@ public class ClassFinder { @Override public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) { - String[] pathElems = path.toString().split(sepPatten); + String[] pathElems = path.toString().split(sepPattern); int nameCount = pathElems.length; if (nameCount <= prefixElemCnt) { return FileVisitResult.CONTINUE; } String filename = pathElems[nameCount - 1]; - if (!filename.endsWith(".class") || "module-info.class".equals(filename) || "package-info.class".equals(filename)) { + if ((!innerClasses && filename.contains("$")) || !filename.endsWith(".class") || "module-info.class".equals(filename) || "package-info.class".equals(filename)) { return FileVisitResult.CONTINUE; } diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java index 76ac1af03f..f9db6051a0 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java @@ -132,7 +132,7 @@ public class Java9 extends Java8 { } private static Map<String, Set<String>> doFindClasses(final URI uri, final String packageName, final List<String> defaultPackageNames) { - Map<String, Set<String>> result = ClassFinder.find(uri, packageName, true) + Map<String, Set<String>> result = ClassFinder.find(uri, packageName, true, false) .entrySet().stream() .filter(e -> e.getValue().stream().anyMatch(defaultPackageNames::contains)) .collect(