/**
* Not supported for a Checker
*/
- public void implementOn(Shadow shadow) {
+ public boolean implementOn(Shadow shadow) {
throw new RuntimeException("illegal state");
}
"mustWeaveXmlDefinedAspects",
"XML Defined aspects must be woven in cases where cflow pointcuts are involved. Currently the include/exclude patterns exclude ''{0}''");
+ public final Kind cannotAdviseJoinpointInInterfaceWithAroundAdvice = new Kind(
+ "cannotAdviseJoinpointInInterfaceWithAroundAdvice",
+ "The joinpoint ''{0}'' cannot be advised and is being skipped as the compiler implementation will lead to creation of methods with bodies in an interface (compiler limitation)");
+
/**
* Indicates an aspect could not be found when attempting reweaving.
*/
World world = getIWorld();
for (Iterator iter = mungers.iterator(); iter.hasNext();) {
ShadowMunger munger = (ShadowMunger) iter.next();
- munger.implementOn(this);
- world.reportMatch(munger, this);
+ if (munger.implementOn(this)) {
+ world.reportMatch(munger, this);
+ }
}
}
public abstract void specializeOn(Shadow shadow);
- public abstract void implementOn(Shadow shadow);
+ /**
+ * Implement this munger at the specified shadow, returning a boolean to indicate success.
+ *
+ * @param shadow the shadow where this munger should be applied
+ * @return true if the munger was successful
+ */
+ public abstract boolean implementOn(Shadow shadow);
/**
* All overriding methods should call super
advisingSynchronizedMethods=warning
mustWeaveXmlDefinedAspects=warning
-missingAspectForReweaving=error
\ No newline at end of file
+missingAspectForReweaving=error
+cannotAdviseJoinpointInInterfaceWithAroundAdvice=warning
\ No newline at end of file