You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by cc...@apache.org on 2018/05/23 19:28:17 UTC
[09/10] groovy git commit: Cache external class lookup
Cache external class lookup
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/31c93d67
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/31c93d67
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/31c93d67
Branch: refs/heads/master
Commit: 31c93d6755814953e6eb0e92875ffafb8d33b060
Parents: 45e3225
Author: Cedric Champeau <cc...@apache.org>
Authored: Wed May 23 12:12:21 2018 +0200
Committer: Cedric Champeau <cc...@apache.org>
Committed: Wed May 23 12:12:21 2018 +0200
----------------------------------------------------------------------
.../groovy/tools/groovydoc/SimpleGroovyClassDoc.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/31c93d67/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
index 3522fa1..d9f40a5 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
@@ -32,6 +32,7 @@ import org.codehaus.groovy.runtime.DefaultGroovyMethods;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
@@ -80,6 +81,7 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
private final List<GroovyClassDoc> interfaceClasses;
private final List<GroovyClassDoc> nested;
private final List<LinkArgument> links;
+ private final Map<String, Class<?>> resolvedExternalClassesCache;
private GroovyClassDoc superClass;
private GroovyClassDoc outer;
private String superClassName;
@@ -101,6 +103,7 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
interfaceNames = new ArrayList<String>();
interfaceClasses = new ArrayList<GroovyClassDoc>();
nested = new ArrayList<GroovyClassDoc>();
+ resolvedExternalClassesCache = new HashMap<String, Class<?>>();
}
public SimpleGroovyClassDoc(List<String> importedClassesAndPackages, Map<String, String> aliases, String name) {
@@ -667,6 +670,18 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
private Class resolveExternalClassFromImport(String name) {
if (isPrimitiveType(name)) return null;
+ Class<?> clazz = resolvedExternalClassesCache.get(name);
+ if (clazz == null) {
+ if (resolvedExternalClassesCache.containsKey(name)) {
+ return null;
+ }
+ clazz = doResolveExternalClassFromImport(name);
+ resolvedExternalClassesCache.put(name, clazz);
+ }
+ return clazz;
+ }
+
+ private Class doResolveExternalClassFromImport(final String name) {
for (String importName : importedClassesAndPackages) {
String candidate = null;
if (importName.endsWith("/" + name)) {