diff options
author | avasseur <avasseur> | 2005-06-13 09:21:14 +0000 |
---|---|---|
committer | avasseur <avasseur> | 2005-06-13 09:21:14 +0000 |
commit | 191c26bb4fc0b90a183e4448ab57d9b62fed429c (patch) | |
tree | 15bdfaf548137b1c769abc9e894326dd1d2f66da /weaver | |
parent | 6b4238eb0f0871eae60d71fe596c96c2ae5dce76 (diff) | |
download | aspectj-191c26bb4fc0b90a183e4448ab57d9b62fed429c.tar.gz aspectj-191c26bb4fc0b90a183e4448ab57d9b62fed429c.zip |
fixed bug with LTW Xreweavable, fix this reflective issue in RunAllBeforeCommit (was misnamed..)
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java | 1 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java | 24 |
2 files changed, 6 insertions, 19 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java index f3a8cf88f..98ad849bb 100644 --- a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java +++ b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java @@ -541,6 +541,7 @@ public class AtAjAttributes { Pointcut pc = null; if (preResolvedPointcut != null) { pc = preResolvedPointcut.getPointcut(); + //pc.resolve(binding); } else { pc = parsePointcut(beforeAdvice.getValue().stringifyValue(), struct, false); if (pc == null) return false;//parse error diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java index ade0a191f..a96237b19 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java @@ -242,8 +242,7 @@ public class BcelWeaver implements IWeaver { // // The ANT copy task should be used to copy resources across. // private final static boolean CopyResourcesFromInpathDirectoriesToOutput=false; - private Set alreadyConfirmedReweavableState; - + /** * Add any .class files in the directory to the outdir. Anything other than .class files in * the directory (or its subdirectories) are considered resources and are also copied. @@ -486,6 +485,7 @@ public class BcelWeaver implements IWeaver { int numArgs = advice.getSignature().getParameterTypes().length; if (numFormals > 0) { names = advice.getSignature().getParameterNames(world); + System.out.println(advice.getSignature().toLongString());//AVB validateBindings(newP,p,numArgs,names); } } else { @@ -947,18 +947,6 @@ public class BcelWeaver implements IWeaver { processReweavableStateIfPresent(className, classType); } - // register all aspect that have been extracted from reweavable state for LTW - // note: when doing AJC, the missing aspect is already catch in the previous state thru Type.MISSING - if (alreadyConfirmedReweavableState != null) { - for (Iterator iterator = alreadyConfirmedReweavableState.iterator(); iterator.hasNext();) { - String aspectClassName = (String) iterator.next(); - addLibraryAspect(aspectClassName); - } - // refresh all the stuff... perhaps too much here... - if (!alreadyConfirmedReweavableState.isEmpty()) - prepareForWeave(); - } - requestor.addingTypeMungers(); // We process type mungers in two groups, first mungers that change the type @@ -1075,9 +1063,6 @@ public class BcelWeaver implements IWeaver { world.showMessage(IMessage.INFO, WeaverMessages.format(WeaverMessages.REWEAVABLE_MODE), null, null); - - //TODO AV - can't we avoid this creation (LTW = happens for each class load!) - alreadyConfirmedReweavableState = new HashSet(); } public void processReweavableStateIfPresent(String className, BcelObjectType classType) { @@ -1089,6 +1074,8 @@ public class BcelWeaver implements IWeaver { null,null); Set aspectsPreviouslyInWorld = wsi.getAspectsAffectingType(); if (aspectsPreviouslyInWorld!=null) { + // keep track of them just to ensure unique missing aspect error reporting + Set alreadyConfirmedReweavableState = new HashSet(); for (Iterator iter = aspectsPreviouslyInWorld.iterator(); iter.hasNext();) { String requiredTypeName = (String) iter.next(); if (!alreadyConfirmedReweavableState.contains(requiredTypeName)) { @@ -1171,8 +1158,7 @@ public class BcelWeaver implements IWeaver { onType.clearInterTypeMungers(); List decpToRepeat = new ArrayList(); - List decaToRepeat = new ArrayList(); - + boolean aParentChangeOccurred = false; boolean anAnnotationChangeOccurred = false; // First pass - apply all decp mungers |