import org.aspectj.apache.bcel.classfile.ClassParser;
import org.aspectj.apache.bcel.classfile.JavaClass;
+import org.aspectj.asm.AsmManager;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.IProgressListener;
import org.aspectj.bridge.ISourceLocation;
private Manifest manifest = null;
private boolean needToReweaveWorld = false;
+ private boolean isBatchWeave = true;
private List shadowMungerList = null; // setup by prepareForWeave
private List typeMungerList = null; // setup by prepareForWeave
private List lateTypeMungerList = null; // setup by prepareForWeave
// ---- weave preparation
+ public void setIsBatchWeave(boolean b) {
+ isBatchWeave=b;
+ }
+
public void prepareForWeave() {
needToReweaveWorld = xcutSet.hasChangedSinceLastReset();
Collection wovenClassNames = new ArrayList();
IWeaveRequestor requestor = input.getRequestor();
+ for (Iterator i = input.getClassFileIterator(); i.hasNext(); ) {
+ UnwovenClassFile classFile = (UnwovenClassFile)i.next();
+ if (AsmManager.isCreatingModel() && !isBatchWeave) {
+ // remove all relationships where this file being woven is the target of the relationship
+ AsmManager.getDefault().removeRelationshipsTargettingThisType(classFile.getClassName());
+ }
+ }
+
// special case for AtAspectJMungerOnly - see #113587
if (input.isApplyAtAspectJMungersOnly()) {
ContextToken atAspectJMungersOnly = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.PROCESSING_ATASPECTJTYPE_MUNGERS_ONLY, "");