]> source.dussan.org Git - aspectj.git/commitdiff
moved things around so that Xset can change world configuration
authoraclement <aclement>
Mon, 16 Oct 2006 09:20:27 +0000 (09:20 +0000)
committeraclement <aclement>
Mon, 16 Oct 2006 09:20:27 +0000 (09:20 +0000)
tests/src/org/aspectj/systemtest/ajc153/ajc153.xml
weaver/src/org/aspectj/weaver/World.java
weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
weaver/src/org/aspectj/weaver/ltw/LTWWorld.java

index 27b7effc17b946fed90165412505573b53ae2d64..b428413d692cb0833aa4ea38f72d4977ac968821 100644 (file)
             <line text="info AspectJ Weaver Version"/>
             <line text="info register classloader"/>
             <line text="info using"/>
-            <line text="info register aspect"/>
             <line text="info [bcelRepositoryCaching=false] AspectJ will not"/>
+            <line text="info register aspect"/>
             <line text="info processing"/>
             <line text="info successfully"/>
            </stderr>
index fb5fe193b8e90fad7482fe2bbf3c57b0c6a34c79..da29f249ba0c9ad5d96d2a00550fead33283006e 100644 (file)
@@ -775,6 +775,7 @@ public abstract class World implements Dump.INode {
                                extraConfiguration.setProperty(n,v);
                        }
                }
+               ensureAdvancedConfigurationProcessed();
        }
        
        /**
index 5dfeba271b57675d22e86fabb12d2fdb6384bd6b..bee6f126e2495249c91cfabf232d304128bf6fbd 100644 (file)
@@ -85,6 +85,7 @@ public class BcelWorld extends World implements Repository {
        private ClassPathManager classPath;
 
     protected Repository delegate;
+    private ClassLoader loader;
     
     
        //private ClassPathManager aspectPath = null;
@@ -153,15 +154,20 @@ public class BcelWorld extends World implements Repository {
      */
     public BcelWorld(ClassLoader loader, IMessageHandler handler, ICrossReferenceHandler xrefHandler) {
         this.classPath = null;
+        this.loader = loader;
         setMessageHandler(handler);
         setCrossReferenceHandler(xrefHandler);
         // Tell BCEL to use us for resolving any classes
-        delegate = getClassLoaderRepositoryFor(loader);
-        // TODO Alex do we need to call org.aspectj.apache.bcel.Repository.setRepository(delegate);
-        // if so, how can that be safe in J2EE ?? (static stuff in Bcel)
+       //  delegate = getClassLoaderRepositoryFor(loader);
+    }
+    
+    public void ensureRepositorySetup() {
+       if (delegate==null) {
+               delegate = getClassLoaderRepositoryFor(loader);
+       }
     }
     
-    public Repository getClassLoaderRepositoryFor(ClassLoader loader) {
+       public Repository getClassLoaderRepositoryFor(ClassLoader loader) {
        if (bcelRepositoryCaching) {
                return new ClassLoaderRepository(loader);
        } else {
@@ -360,6 +366,7 @@ public class BcelWorld extends World implements Repository {
        private JavaClass lookupJavaClass(ClassPathManager classPath, String name) {
         if (classPath == null) {
             try {
+               ensureRepositorySetup();
                 JavaClass jc = delegate.loadClass(name);
                if (trace.isTraceEnabled()) trace.event("lookupJavaClass",this,new Object[] { name, jc });
                 return jc;
@@ -863,4 +870,5 @@ public class BcelWorld extends World implements Repository {
                        decpToRepeat = decpToRepeatNextTime;
                }
     }
+
 }
\ No newline at end of file
index a89dc6f7742dc72742112c830f4359d06fd62c78..439584ee90645cef25a6425900444d2d12a18d4d 100644 (file)
@@ -246,6 +246,7 @@ public class LTWWorld extends BcelWorld implements IReflectionWorld {
        }
 
        public void storeClass(JavaClass clazz) {
+               ensureRepositorySetup();
                delegate.storeClass(clazz);
        }