summaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core/src
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-05-09 17:31:49 +0000
committerjhugunin <jhugunin>2003-05-09 17:31:49 +0000
commit76f6b9a3004bfbfce6c5452a2447d67948e7c0e4 (patch)
treeb2003fc173324318b87a23b79c7807632f8817d4 /org.aspectj.ajdt.core/src
parentd74d7bfa222e384f4fad1f01d5ea27f209677fea (diff)
downloadaspectj-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.java27
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);
}
}