Browse Source

Don't create multiple ExposeTypeMungers for the same type, it is *dumb*

tags/Root_extensions
aclement 17 years ago
parent
commit
87da93e5cb
1 changed files with 15 additions and 6 deletions
  1. 15
    6
      weaver/src/org/aspectj/weaver/CrosscuttingMembers.java

+ 15
- 6
weaver/src/org/aspectj/weaver/CrosscuttingMembers.java View File

@@ -9,8 +9,6 @@
* Contributors:
* PARC initial implementation
* ******************************************************************/


package org.aspectj.weaver;

import java.util.ArrayList;
@@ -168,10 +166,21 @@ public class CrosscuttingMembers {
typeToExpose = UnresolvedType.forSignature(typeToExpose.getErasureSignature());
}
}
ResolvedMember member = new ResolvedMemberImpl(
Member.STATIC_INITIALIZATION, typeToExpose, 0, ResolvedType.VOID, "", UnresolvedType.NONE);
addTypeMunger(world.concreteTypeMunger(
new PrivilegedAccessMunger(member), inAspect));
// Check we haven't already got a munger for this:
String signatureToLookFor = typeToExpose.getSignature();
for (Iterator iterator = typeMungers.iterator(); iterator.hasNext();) {
ConcreteTypeMunger cTM = (ConcreteTypeMunger) iterator.next();
ResolvedTypeMunger rTM = cTM.getMunger();
if (rTM!=null && rTM instanceof ExposeTypeMunger) {
String exposedType = ((ExposeTypeMunger)rTM).getExposedTypeSignature();
if (exposedType.equals(signatureToLookFor)) return; // dont need to bother
}
}
addTypeMunger(world.concreteTypeMunger(new ExposeTypeMunger(typeToExpose), inAspect));
// ResolvedMember member = new ResolvedMemberImpl(
// Member.STATIC_INITIALIZATION, typeToExpose, 0, ResolvedType.VOID, "<clinit>", UnresolvedType.NONE);
// addTypeMunger(world.concreteTypeMunger(
// new PrivilegedAccessMunger(member), inAspect));
}
public void addPrivilegedAccesses(Collection accessedMembers) {

Loading…
Cancel
Save