aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoravasseur <avasseur>2005-06-13 09:21:14 +0000
committeravasseur <avasseur>2005-06-13 09:21:14 +0000
commit191c26bb4fc0b90a183e4448ab57d9b62fed429c (patch)
tree15bdfaf548137b1c769abc9e894326dd1d2f66da /weaver
parent6b4238eb0f0871eae60d71fe596c96c2ae5dce76 (diff)
downloadaspectj-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.java1
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java24
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