@@ -72,7 +72,7 @@ public class Checker extends ShadowMunger { | |||
/** | |||
* Not supported for a Checker | |||
*/ | |||
public void implementOn(Shadow shadow) { | |||
public boolean implementOn(Shadow shadow) { | |||
throw new RuntimeException("illegal state"); | |||
} | |||
@@ -126,6 +126,10 @@ public class Lint { | |||
"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. | |||
*/ |
@@ -610,8 +610,9 @@ public abstract class Shadow { | |||
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); | |||
} | |||
} | |||
} | |||
@@ -54,7 +54,13 @@ public abstract class ShadowMunger implements PartialOrder.PartialComparable, IH | |||
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 |
@@ -44,4 +44,5 @@ calculatingSerialVersionUID=ignore | |||
advisingSynchronizedMethods=warning | |||
mustWeaveXmlDefinedAspects=warning | |||
missingAspectForReweaving=error | |||
missingAspectForReweaving=error | |||
cannotAdviseJoinpointInInterfaceWithAroundAdvice=warning |