diff options
author | jhugunin <jhugunin> | 2003-05-09 17:31:49 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-05-09 17:31:49 +0000 |
commit | 76f6b9a3004bfbfce6c5452a2447d67948e7c0e4 (patch) | |
tree | b2003fc173324318b87a23b79c7807632f8817d4 /org.aspectj.ajdt.core/src | |
parent | d74d7bfa222e384f4fad1f01d5ea27f209677fea (diff) | |
download | aspectj-76f6b9a3004bfbfce6c5452a2447d67948e7c0e4.tar.gz aspectj-76f6b9a3004bfbfce6c5452a2447d67948e7c0e4.zip |
fix to use cache for isPackage method (as indicated by previous !!! comment)
this fixes the two failing incremental test cases just added by Wes and now
moved to ajcTests as passing
Diffstat (limited to 'org.aspectj.ajdt.core/src')
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java index 552a409dd..af72b9a9a 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java @@ -13,7 +13,11 @@ package org.aspectj.ajdt.internal.core.builder; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.Map; +import java.util.Set; import org.aspectj.weaver.bcel.UnwovenClassFile; import org.eclipse.jdt.core.compiler.CharOperation; @@ -25,11 +29,27 @@ import org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer; public class StatefulNameEnvironment implements INameEnvironment { Map classesFromName; + Set packageNames; INameEnvironment baseEnvironment; public StatefulNameEnvironment(INameEnvironment baseEnvironment, Map classesFromName) { this.classesFromName = classesFromName; this.baseEnvironment = baseEnvironment; + + packageNames = new HashSet(); + for (Iterator i = classesFromName.keySet().iterator(); i.hasNext(); ) { + String className = (String)i.next(); + addAllPackageNames(className); + } +// System.err.println(packageNames); + } + + private void addAllPackageNames(String className) { + int dot = className.indexOf('.'); + while (dot != -1) { + packageNames.add(className.substring(0, dot)); + dot = className.indexOf('.', dot+1); + } } public void cleanup() { @@ -38,6 +58,8 @@ public class StatefulNameEnvironment implements INameEnvironment { private NameEnvironmentAnswer findType(String name) { UnwovenClassFile cf = (UnwovenClassFile)classesFromName.get(name); + //System.err.println("find: " + name + " found: " + cf); + if (cf == null) return null; try { @@ -64,9 +86,10 @@ public class StatefulNameEnvironment implements INameEnvironment { } public boolean isPackage(char[][] parentPackageName, char[] packageName) { - //!!! need to use cache here too - return baseEnvironment.isPackage(parentPackageName, packageName); + if (baseEnvironment.isPackage(parentPackageName, packageName)) return true; + String fullPackageName = new String(CharOperation.concatWith(parentPackageName, packageName, '.')); + return packageNames.contains(fullPackageName); } } |