]> source.dussan.org Git - aspectj.git/commitdiff
166647 fixes: produces a suitable error if XML defined aspects are excluded from...
authoraclement <aclement>
Tue, 4 Dec 2007 09:40:27 +0000 (09:40 +0000)
committeraclement <aclement>
Tue, 4 Dec 2007 09:40:27 +0000 (09:40 +0000)
weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java

index d532b8d94280cfabb01817b88b9150c4ce26bdf3..74654136b040e4ac14d9ebd15946acc9f364acb3 100644 (file)
@@ -52,6 +52,7 @@ import org.aspectj.weaver.bcel.BcelWorld;
 import org.aspectj.weaver.bcel.UnwovenClassFile;
 import org.aspectj.weaver.bcel.Utility;
 
+// OPTIMIZE add guards for all the debug/info/etc
 /**
  * This adaptor allows the AspectJ compiler to be embedded in an existing
  * system to facilitate load-time weaving. It provides an interface for a
@@ -235,10 +236,11 @@ public class WeavingAdaptor implements IMessageContext {
         * Weave a class using aspects previously supplied to the adaptor.
         * @param name the name of the class
         * @param bytes the class bytes
+        * @param mustWeave if true then this class *must* get woven (used for concrete aspects generated from XML)
         * @return the woven bytes
      * @exception IOException weave failed
         */
-       public byte[] weaveClass (String name, byte[] bytes) throws IOException {
+       public byte[] weaveClass (String name, byte[] bytes,boolean mustWeave) throws IOException {
                if (trace.isTraceEnabled()) trace.enter("weaveClass",this,new Object[] {name, bytes});
 
                if (!enabled) {
@@ -259,6 +261,9 @@ public class WeavingAdaptor implements IMessageContext {
                                        debug("weaving '" + name + "'");
                                        bytes = getWovenBytes(name, bytes);
                                } else if (shouldWeaveAnnotationStyleAspect(name, bytes)) {
+                                       if (mustWeave) {
+                                               error("XML Defined aspects must be woven in cases where cflow pointcuts are involved. Currently the include/exclude patterns exclude '"+name+"'");
+                                       }
                            // an @AspectJ aspect needs to be at least munged by the aspectOf munger
                            debug("weaving '" + name + "'");
                            bytes = getAtAspectJAspectBytes(name, bytes);