Browse Source

Java5 upgrades

tags/V1_6_6
aclement 14 years ago
parent
commit
20028ccf87

+ 1
- 0
org.aspectj.matcher/.isJava5 View File

@@ -0,0 +1 @@
.isJava5

+ 4
- 4
org.aspectj.matcher/src/org/aspectj/weaver/AbstractAnnotationAJ.java View File

@@ -17,7 +17,7 @@ public abstract class AbstractAnnotationAJ implements AnnotationAJ {

protected final ResolvedType type;

private Set supportedTargets = null; // @target meta annotation
private Set<String> supportedTargets = null; // @target meta annotation

public AbstractAnnotationAJ(ResolvedType type) {
this.type = type;
@@ -84,7 +84,7 @@ public abstract class AbstractAnnotationAJ implements AnnotationAJ {
if (supportedTargets == null) {
AnnotationAJ atTargetAnnotation = retrieveAnnotationOnAnnotation(UnresolvedType.AT_TARGET);
if (atTargetAnnotation == null) {
supportedTargets = Collections.EMPTY_SET;
supportedTargets = Collections.emptySet();
} else {
supportedTargets = atTargetAnnotation.getTargets();
}
@@ -97,8 +97,8 @@ public abstract class AbstractAnnotationAJ implements AnnotationAJ {
public final String getValidTargets() {
StringBuffer sb = new StringBuffer();
sb.append("{");
for (Iterator iter = supportedTargets.iterator(); iter.hasNext();) {
String evalue = (String) iter.next();
for (Iterator<String> iter = supportedTargets.iterator(); iter.hasNext();) {
String evalue = iter.next();
sb.append(evalue);
if (iter.hasNext()) {
sb.append(",");

+ 8
- 3
org.aspectj.matcher/src/org/aspectj/weaver/Advice.java View File

@@ -43,9 +43,8 @@ public abstract class Advice extends ShadowMunger {

protected boolean hasMatchedAtLeastOnce = false;

protected List/* Lint.Kind */suppressedLintKinds = null; // based on
// annotations on
// this advice
// based on annotations on this advice
protected List<Lint.Kind> suppressedLintKinds = null;

public ISourceLocation lastReportedMonitorExitJoinpointLocation = null;

@@ -106,6 +105,7 @@ public abstract class Advice extends ShadowMunger {
}
}

@Override
public boolean match(Shadow shadow, World world) {
if (super.match(shadow, world)) {
if (shadow.getKind() == Shadow.ExceptionHandler) {
@@ -380,6 +380,7 @@ public abstract class Advice extends ShadowMunger {
}
}

@Override
public Pointcut getPointcut() {
return pointcut;
}
@@ -390,6 +391,7 @@ public abstract class Advice extends ShadowMunger {
* @param fromType is guaranteed to be a non-abstract aspect
* @param clause has been concretized at a higher level
*/
@Override
public ShadowMunger concretize(ResolvedType fromType, World world, PerClause clause) {
// assert !fromType.isAbstract();
Pointcut p = pointcut.concretize(fromType, getDeclaringType(), signature.getArity(), this);
@@ -414,6 +416,7 @@ public abstract class Advice extends ShadowMunger {

// ---- from object

@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("(").append(getKind()).append(extraParametersToString());
@@ -430,6 +433,7 @@ public abstract class Advice extends ShadowMunger {
}

// XXX this perhaps ought to take account of the other fields in advice ...
@Override
public boolean equals(Object other) {
if (!(other instanceof Advice)) {
return false;
@@ -448,6 +452,7 @@ public abstract class Advice extends ShadowMunger {

private volatile int hashCode = 0;

@Override
public int hashCode() {
if (hashCode == 0) {
int result = 17;

+ 52
- 57
org.aspectj.matcher/src/org/aspectj/weaver/CrosscuttingMembers.java View File

@@ -47,18 +47,18 @@ public class CrosscuttingMembers {

private PerClause perClause;

private List shadowMungers = new ArrayList(4);
private List typeMungers = new ArrayList(4);
private List lateTypeMungers = new ArrayList(0);
private List<ShadowMunger> shadowMungers = new ArrayList<ShadowMunger>(4);
private List<ConcreteTypeMunger> typeMungers = new ArrayList<ConcreteTypeMunger>(4);
private List<ConcreteTypeMunger> lateTypeMungers = new ArrayList<ConcreteTypeMunger>(0);

private Set declareParents = new HashSet();
private Set declareSofts = new HashSet();
private List declareDominates = new ArrayList(4);
private Set<DeclareParents> declareParents = new HashSet<DeclareParents>();
private Set<DeclareSoft> declareSofts = new HashSet<DeclareSoft>();
private List<Declare> declareDominates = new ArrayList<Declare>(4);

// These are like declare parents type mungers
private Set declareAnnotationsOnType = new HashSet();
private Set declareAnnotationsOnField = new HashSet();
private Set declareAnnotationsOnMethods = new HashSet();
private Set<DeclareAnnotation> declareAnnotationsOnType = new HashSet<DeclareAnnotation>();
private Set<DeclareAnnotation> declareAnnotationsOnField = new HashSet<DeclareAnnotation>();
private Set<DeclareAnnotation> declareAnnotationsOnMethods = new HashSet<DeclareAnnotation>();
// declareAnnotationsOnMethods includes constructors too

private boolean shouldConcretizeIfNeeded = true;
@@ -81,9 +81,9 @@ public class CrosscuttingMembers {
shadowMungers.add(m);
}

public void addShadowMungers(Collection c) {
for (Iterator i = c.iterator(); i.hasNext();) {
addShadowMunger((ShadowMunger) i.next());
public void addShadowMungers(Collection<ShadowMunger> c) {
for (ShadowMunger munger : c) {
addShadowMunger(munger);
}
}

@@ -94,7 +94,7 @@ public class CrosscuttingMembers {
addConcreteShadowMunger(m.concretize(inAspect, world, perClause));
}

public void addTypeMungers(Collection c) {
public void addTypeMungers(Collection<ConcreteTypeMunger> c) {
typeMungers.addAll(c);
}

@@ -105,7 +105,7 @@ public class CrosscuttingMembers {
typeMungers.add(m);
}

public void addLateTypeMungers(Collection c) {
public void addLateTypeMungers(Collection<ConcreteTypeMunger> c) {
lateTypeMungers.addAll(c);
}

@@ -177,8 +177,8 @@ public class CrosscuttingMembers {
}
// 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();
for (Iterator<ConcreteTypeMunger> iterator = typeMungers.iterator(); iterator.hasNext();) {
ConcreteTypeMunger cTM = iterator.next();
ResolvedTypeMunger rTM = cTM.getMunger();
if (rTM != null && rTM instanceof ExposeTypeMunger) {
String exposedType = ((ExposeTypeMunger) rTM).getExposedTypeSignature();
@@ -205,10 +205,9 @@ public class CrosscuttingMembers {
addTypeMunger(world.getWeavingSupport().concreteTypeMunger(new PrivilegedAccessMunger(member), inAspect));
}

public Collection getCflowEntries() {
ArrayList ret = new ArrayList();
for (Iterator i = shadowMungers.iterator(); i.hasNext();) {
ShadowMunger m = (ShadowMunger) i.next();
public Collection<ShadowMunger> getCflowEntries() {
List<ShadowMunger> ret = new ArrayList<ShadowMunger>();
for (ShadowMunger m : shadowMungers) {
if (m instanceof Advice) {
Advice a = (Advice) m;
if (a.getKind().isCflow()) {
@@ -246,10 +245,9 @@ public class CrosscuttingMembers {

if (careAboutShadowMungers) {
// bug 129163: use set equality rather than list equality
Set theseShadowMungers = new HashSet();
Set theseInlinedAroundMungers = new HashSet();
for (Iterator iter = shadowMungers.iterator(); iter.hasNext();) {
ShadowMunger munger = (ShadowMunger) iter.next();
Set<ShadowMunger> theseShadowMungers = new HashSet<ShadowMunger>();
Set<ShadowMunger> theseInlinedAroundMungers = new HashSet<ShadowMunger>();
for (ShadowMunger munger : shadowMungers) {
if (munger instanceof Advice) {
Advice adviceMunger = (Advice) munger;
// bug 154054: if we're around advice that has been inlined
@@ -264,12 +262,11 @@ public class CrosscuttingMembers {
theseShadowMungers.add(munger);
}
}
Set tempSet = new HashSet();
Set<ShadowMunger> tempSet = new HashSet<ShadowMunger>();
tempSet.addAll(other.shadowMungers);
Set otherShadowMungers = new HashSet();
Set otherInlinedAroundMungers = new HashSet();
for (Iterator iter = tempSet.iterator(); iter.hasNext();) {
ShadowMunger munger = (ShadowMunger) iter.next();
Set<ShadowMunger> otherShadowMungers = new HashSet<ShadowMunger>();
Set<ShadowMunger> otherInlinedAroundMungers = new HashSet<ShadowMunger>();
for (ShadowMunger munger : tempSet) {
if (munger instanceof Advice) {
Advice adviceMunger = (Advice) munger;
// bug 154054: if we're around advice that has been inlined
@@ -294,10 +291,9 @@ public class CrosscuttingMembers {
// bug 158573 - if there are no changes then preserve whether
// or not a particular shadowMunger has matched something.
if (!changed) {
for (Iterator iter = shadowMungers.iterator(); iter.hasNext();) {
ShadowMunger munger = (ShadowMunger) iter.next();
for (ShadowMunger munger : shadowMungers) {
int i = other.shadowMungers.indexOf(munger);
ShadowMunger otherMunger = (ShadowMunger) other.shadowMungers.get(i);
ShadowMunger otherMunger = other.shadowMungers.get(i);
if (munger instanceof Advice) {
((Advice) otherMunger).setHasMatchedSomething(((Advice) munger).hasMatchedSomething());
}
@@ -314,10 +310,10 @@ public class CrosscuttingMembers {
// if we dont care about shadow mungers then ignore those
// typeMungers which are created to help with the implementation
// of shadowMungers
Set theseTypeMungers = new HashSet();
Set otherTypeMungers = new HashSet();
Set<Object> theseTypeMungers = new HashSet<Object>();
Set<Object> otherTypeMungers = new HashSet<Object>();
if (!careAboutShadowMungers) {
for (Iterator iter = typeMungers.iterator(); iter.hasNext();) {
for (Iterator<ConcreteTypeMunger> iter = typeMungers.iterator(); iter.hasNext();) {
Object o = iter.next();
if (o instanceof ConcreteTypeMunger) {
ConcreteTypeMunger typeMunger = (ConcreteTypeMunger) o;
@@ -329,7 +325,7 @@ public class CrosscuttingMembers {
}
}

for (Iterator iter = other.typeMungers.iterator(); iter.hasNext();) {
for (Iterator<ConcreteTypeMunger> iter = other.typeMungers.iterator(); iter.hasNext();) {
Object o = iter.next();
if (o instanceof ConcreteTypeMunger) {
ConcreteTypeMunger typeMunger = (ConcreteTypeMunger) o;
@@ -353,11 +349,10 @@ public class CrosscuttingMembers {
} else {
boolean shouldOverwriteThis = false;
boolean foundInequality = false;
for (Iterator iter = theseTypeMungers.iterator(); iter.hasNext() && !foundInequality;) {
for (Iterator<Object> iter = theseTypeMungers.iterator(); iter.hasNext() && !foundInequality;) {
Object thisOne = iter.next();
boolean foundInOtherSet = false;
for (Iterator iterator = otherTypeMungers.iterator(); iterator.hasNext();) {
Object otherOne = iterator.next();
for (Object otherOne : otherTypeMungers) {
if (thisOne instanceof ConcreteTypeMunger) {
if (((ConcreteTypeMunger) thisOne).shouldOverwrite()) {
shouldOverwriteThis = true;
@@ -406,16 +401,16 @@ public class CrosscuttingMembers {
// the up front comparison
if (!careAboutShadowMungers) {
// this means we are in front end compilation and if the differences are purely mixin parents, we can continue OK
Set trimmedThis = new HashSet();
for (Iterator iterator = declareParents.iterator(); iterator.hasNext();) {
DeclareParents decp = (DeclareParents) iterator.next();
Set<DeclareParents> trimmedThis = new HashSet<DeclareParents>();
for (Iterator<DeclareParents> iterator = declareParents.iterator(); iterator.hasNext();) {
DeclareParents decp = iterator.next();
if (!decp.isMixin()) {
trimmedThis.add(decp);
}
}
Set trimmedOther = new HashSet();
for (Iterator iterator = other.declareParents.iterator(); iterator.hasNext();) {
DeclareParents decp = (DeclareParents) iterator.next();
Set<DeclareParents> trimmedOther = new HashSet<DeclareParents>();
for (Iterator<DeclareParents> iterator = other.declareParents.iterator(); iterator.hasNext();) {
DeclareParents decp = iterator.next();
if (!decp.isMixin()) {
trimmedOther.add(decp);
}
@@ -454,14 +449,14 @@ public class CrosscuttingMembers {
return changed;
}

private boolean equivalent(Set theseInlinedAroundMungers, Set otherInlinedAroundMungers) {
private boolean equivalent(Set<ShadowMunger> theseInlinedAroundMungers, Set<ShadowMunger> otherInlinedAroundMungers) {
if (theseInlinedAroundMungers.size() != otherInlinedAroundMungers.size()) {
return false;
}
for (Iterator iter = theseInlinedAroundMungers.iterator(); iter.hasNext();) {
for (Iterator<ShadowMunger> iter = theseInlinedAroundMungers.iterator(); iter.hasNext();) {
Advice thisAdvice = (Advice) iter.next();
boolean foundIt = false;
for (Iterator iterator = otherInlinedAroundMungers.iterator(); iterator.hasNext();) {
for (Iterator<ShadowMunger> iterator = otherInlinedAroundMungers.iterator(); iterator.hasNext();) {
Advice otherAdvice = (Advice) iterator.next();
if (thisAdvice.equals(otherAdvice)) {
if (thisAdvice.getSignature() instanceof ResolvedMemberImpl) {
@@ -500,42 +495,42 @@ public class CrosscuttingMembers {
}
}

public List getDeclareDominates() {
public List<Declare> getDeclareDominates() {
return declareDominates;
}

public Collection getDeclareParents() {
public Collection<DeclareParents> getDeclareParents() {
return declareParents;
}

public Collection getDeclareSofts() {
public Collection<DeclareSoft> getDeclareSofts() {
return declareSofts;
}

public List getShadowMungers() {
public List<ShadowMunger> getShadowMungers() {
return shadowMungers;
}

public List getTypeMungers() {
public List<ConcreteTypeMunger> getTypeMungers() {
return typeMungers;
}

public List getLateTypeMungers() {
public List<ConcreteTypeMunger> getLateTypeMungers() {
return lateTypeMungers;
}

public Collection getDeclareAnnotationOnTypes() {
public Collection<DeclareAnnotation> getDeclareAnnotationOnTypes() {
return declareAnnotationsOnType;
}

public Collection getDeclareAnnotationOnFields() {
public Collection<DeclareAnnotation> getDeclareAnnotationOnFields() {
return declareAnnotationsOnField;
}

/**
* includes declare @method and @constructor
*/
public Collection getDeclareAnnotationOnMethods() {
public Collection<DeclareAnnotation> getDeclareAnnotationOnMethods() {
return declareAnnotationsOnMethods;
}


+ 41
- 40
org.aspectj.matcher/src/org/aspectj/weaver/CrosscuttingMembersSet.java View File

@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;

import org.aspectj.weaver.patterns.DeclareAnnotation;
import org.aspectj.weaver.patterns.DeclareParents;
import org.aspectj.weaver.patterns.IVerificationRequired;
import org.aspectj.weaver.tools.Trace;
@@ -40,19 +41,19 @@ public class CrosscuttingMembersSet {
private transient World world;

// FIXME AV - ? we may need a sequencedHashMap there to ensure source based precedence for @AJ advice
private final Map /* ResolvedType (the aspect) > CrosscuttingMembers */members = new HashMap();
private final Map /* ResolvedType (the aspect) > CrosscuttingMembers */<ResolvedType, CrosscuttingMembers> members = new HashMap<ResolvedType, CrosscuttingMembers>();

// List of things to be verified once the type system is 'complete'
private transient List /* IVerificationRequired */verificationList = null;
private transient List /* IVerificationRequired */<IVerificationRequired> verificationList = null;

private List /* ShadowMunger */shadowMungers = null;
private List<ShadowMunger> shadowMungers = null;
private List typeMungers = null;
private List lateTypeMungers = null;
private List declareSofts = null;
private List declareParents = null;
private List declareAnnotationOnTypes = null;
private List declareAnnotationOnFields = null;
private List declareAnnotationOnMethods = null; // includes constructors
private List<DeclareAnnotation> declareAnnotationOnMethods = null; // includes constructors
private List declareDominates = null;
private boolean changedSinceLastReset = false;

@@ -75,7 +76,7 @@ public class CrosscuttingMembersSet {
}

boolean change = false;
CrosscuttingMembers xcut = (CrosscuttingMembers) members.get(aspectType);
CrosscuttingMembers xcut = members.get(aspectType);
if (xcut == null) {
members.put(aspectType, aspectType.collectCrosscuttingMembers(inWeavingPhase));
clearCaches();
@@ -105,17 +106,17 @@ public class CrosscuttingMembersSet {

private boolean addOrReplaceDescendantsOf(ResolvedType aspectType, boolean inWeavePhase) {
// System.err.println("Looking at descendants of "+aspectType.getName());
Set knownAspects = members.keySet();
Set toBeReplaced = new HashSet();
for (Iterator it = knownAspects.iterator(); it.hasNext();) {
ResolvedType candidateDescendant = (ResolvedType) it.next();
Set<ResolvedType> knownAspects = members.keySet();
Set<ResolvedType> toBeReplaced = new HashSet<ResolvedType>();
for (Iterator<ResolvedType> it = knownAspects.iterator(); it.hasNext();) {
ResolvedType candidateDescendant = it.next();
if ((candidateDescendant != aspectType) && (aspectType.isAssignableFrom(candidateDescendant))) {
toBeReplaced.add(candidateDescendant);
}
}
boolean change = false;
for (Iterator it = toBeReplaced.iterator(); it.hasNext();) {
ResolvedType next = (ResolvedType) it.next();
for (Iterator<ResolvedType> it = toBeReplaced.iterator(); it.hasNext();) {
ResolvedType next = it.next();
boolean thisChange = addOrReplaceAspect(next, inWeavePhase);
change = change || thisChange;
}
@@ -126,7 +127,7 @@ public class CrosscuttingMembersSet {
if (!members.containsKey(aspectType)) {
return;
}
CrosscuttingMembers xcut = (CrosscuttingMembers) members.get(aspectType);
CrosscuttingMembers xcut = members.get(aspectType);
xcut.addDeclares(aspectType.collectDeclares(true));
}

@@ -161,8 +162,8 @@ public class CrosscuttingMembersSet {
public List getShadowMungers() {
if (shadowMungers == null) {
ArrayList ret = new ArrayList();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getShadowMungers());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getShadowMungers());
}
shadowMungers = ret;
}
@@ -172,8 +173,8 @@ public class CrosscuttingMembersSet {
public List getTypeMungers() {
if (typeMungers == null) {
ArrayList ret = new ArrayList();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getTypeMungers());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getTypeMungers());
}
typeMungers = ret;
}
@@ -183,8 +184,8 @@ public class CrosscuttingMembersSet {
public List getLateTypeMungers() {
if (lateTypeMungers == null) {
ArrayList ret = new ArrayList();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getLateTypeMungers());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getLateTypeMungers());
}
lateTypeMungers = ret;
}
@@ -194,8 +195,8 @@ public class CrosscuttingMembersSet {
public List getDeclareSofts() {
if (declareSofts == null) {
Set ret = new HashSet();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareSofts());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareSofts());
}
declareSofts = new ArrayList();
declareSofts.addAll(ret);
@@ -206,8 +207,8 @@ public class CrosscuttingMembersSet {
public List getDeclareParents() {
if (declareParents == null) {
Set ret = new HashSet();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareParents());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareParents());
}
declareParents = new ArrayList();
declareParents.addAll(ret);
@@ -219,8 +220,8 @@ public class CrosscuttingMembersSet {
public List getDeclareAnnotationOnTypes() {
if (declareAnnotationOnTypes == null) {
Set ret = new HashSet();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareAnnotationOnTypes());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareAnnotationOnTypes());
}
declareAnnotationOnTypes = new ArrayList();
declareAnnotationOnTypes.addAll(ret);
@@ -231,8 +232,8 @@ public class CrosscuttingMembersSet {
public List getDeclareAnnotationOnFields() {
if (declareAnnotationOnFields == null) {
Set ret = new HashSet();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareAnnotationOnFields());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareAnnotationOnFields());
}
declareAnnotationOnFields = new ArrayList();
declareAnnotationOnFields.addAll(ret);
@@ -243,13 +244,13 @@ public class CrosscuttingMembersSet {
/**
* Return an amalgamation of the declare @method/@constructor statements.
*/
public List getDeclareAnnotationOnMethods() {
public List<DeclareAnnotation> getDeclareAnnotationOnMethods() {
if (declareAnnotationOnMethods == null) {
Set ret = new HashSet();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareAnnotationOnMethods());
Set<DeclareAnnotation> ret = new HashSet<DeclareAnnotation>();
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareAnnotationOnMethods());
}
declareAnnotationOnMethods = new ArrayList();
declareAnnotationOnMethods = new ArrayList<DeclareAnnotation>();
declareAnnotationOnMethods.addAll(ret);
}
return declareAnnotationOnMethods;
@@ -258,8 +259,8 @@ public class CrosscuttingMembersSet {
public List getDeclareDominates() {
if (declareDominates == null) {
ArrayList ret = new ArrayList();
for (Iterator i = members.values().iterator(); i.hasNext();) {
ret.addAll(((CrosscuttingMembers) i.next()).getDeclareDominates());
for (Iterator<CrosscuttingMembers> i = members.values().iterator(); i.hasNext();) {
ret.addAll(i.next().getDeclareDominates());
}
declareDominates = ret;
}
@@ -267,10 +268,10 @@ public class CrosscuttingMembersSet {
}

public ResolvedType findAspectDeclaringParents(DeclareParents p) {
Set keys = this.members.keySet();
for (Iterator iter = keys.iterator(); iter.hasNext();) {
ResolvedType element = (ResolvedType) iter.next();
for (Iterator i = ((CrosscuttingMembers) members.get(element)).getDeclareParents().iterator(); i.hasNext();) {
Set<ResolvedType> keys = this.members.keySet();
for (Iterator<ResolvedType> iter = keys.iterator(); iter.hasNext();) {
ResolvedType element = iter.next();
for (Iterator i = members.get(element).getDeclareParents().iterator(); i.hasNext();) {
DeclareParents dp = (DeclareParents) i.next();
if (dp.equals(p)) {
return element;
@@ -295,7 +296,7 @@ public class CrosscuttingMembersSet {
*/
public void recordNecessaryCheck(IVerificationRequired verification) {
if (verificationList == null) {
verificationList = new ArrayList();
verificationList = new ArrayList<IVerificationRequired>();
}
verificationList.add(verification);
}
@@ -307,8 +308,8 @@ public class CrosscuttingMembersSet {
if (verificationList == null) {
return;
}
for (Iterator iter = verificationList.iterator(); iter.hasNext();) {
IVerificationRequired element = (IVerificationRequired) iter.next();
for (Iterator<IVerificationRequired> iter = verificationList.iterator(); iter.hasNext();) {
IVerificationRequired element = iter.next();
element.verify();
}
verificationList = null;

+ 9
- 14
org.aspectj.matcher/src/org/aspectj/weaver/Lint.java View File

@@ -30,7 +30,7 @@ import org.aspectj.weaver.tools.Trace;
import org.aspectj.weaver.tools.TraceFactory;

public class Lint {
/* private */Map kinds = new HashMap();
Map<String, Lint.Kind> kinds = new HashMap<String, Lint.Kind>();
/* private */World world;

public final Kind invalidAbsoluteTypeName = new Kind("invalidAbsoluteTypeName", "no match for this type name: {0}");
@@ -155,8 +155,7 @@ public class Lint {
}

private void setAll(IMessage.Kind messageKind) {
for (Iterator i = kinds.values().iterator(); i.hasNext();) {
Kind kind = (Kind) i.next();
for (Kind kind : kinds.values()) {
kind.setKind(messageKind);
}
}
@@ -215,7 +214,7 @@ public class Lint {
public void setFromProperties(Properties properties) {
for (Iterator i = properties.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
Kind kind = (Kind) kinds.get(entry.getKey());
Kind kind = kinds.get(entry.getKey());
if (kind == null) {
MessageUtil.error(world.getMessageHandler(), WeaverMessages.format(WeaverMessages.XLINT_KEY_ERROR, entry.getKey()));
} else {
@@ -224,12 +223,12 @@ public class Lint {
}
}

public Collection allKinds() {
public Collection<Kind> allKinds() {
return kinds.values();
}

public Kind getLintKind(String name) {
return (Kind) kinds.get(name);
return kinds.get(name);
}

// temporarily suppress the given lint messages
@@ -244,17 +243,13 @@ public class Lint {

// remove any suppression of lint warnings in place
public void clearAllSuppressions() {
for (Iterator iter = kinds.values().iterator(); iter.hasNext();) {
Kind k = (Kind) iter.next();
for (Kind k : kinds.values()) {
k.setSuppressed(false);
}
}

public void clearSuppressions(Collection lintKind) {
if (lintKind.isEmpty())
return;
for (Iterator iter = lintKind.iterator(); iter.hasNext();) {
Kind k = (Kind) iter.next();
public void clearSuppressions(Collection<Lint.Kind> lintKinds) {
for (Kind k : lintKinds) {
k.setSuppressed(false);
}
}
@@ -272,7 +267,7 @@ public class Lint {
}

public Kind fromKey(String lintkey) {
return (Lint.Kind) kinds.get(lintkey);
return kinds.get(lintkey);
}

public class Kind {

+ 22
- 10
org.aspectj.matcher/src/org/aspectj/weaver/ResolvedMemberImpl.java View File

@@ -39,7 +39,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
*/
protected ResolvedMember backingGenericMember = null;

protected Set annotationTypes = null;
protected Set<UnresolvedType> annotationTypes = null;
protected ResolvedType[][] parameterAnnotationTypes = null;

// Some members are 'created' to represent other things (for example ITDs).
@@ -231,16 +231,19 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno

// ----

@Override
public final int getModifiers(World world) {
return modifiers;
}

@Override
public final int getModifiers() {
return modifiers;
}

// ----

@Override
public final UnresolvedType[] getExceptions(World world) {
return getExceptions();
}
@@ -302,9 +305,10 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
}
return backingGenericMember.getAnnotationTypes();
}
if (annotationTypes == null)
if (annotationTypes == null) {
return null;
return (ResolvedType[]) annotationTypes.toArray(new ResolvedType[] {});
}
return annotationTypes.toArray(new ResolvedType[] {});
}

public String getAnnotationDefaultValue() {
@@ -312,6 +316,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
"You should resolve this member and call getAnnotationDefaultValue() on the result...");
}

@Override
public AnnotationAJ[] getAnnotations() {
if (backingGenericMember != null)
return backingGenericMember.getAnnotations();
@@ -319,8 +324,9 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
}

public void setAnnotationTypes(UnresolvedType[] annotationtypes) {
if (annotationTypes == null)
annotationTypes = new HashSet();
if (annotationTypes == null) {
annotationTypes = new HashSet<UnresolvedType>();
}
for (int i = 0; i < annotationtypes.length; i++) {
UnresolvedType typeX = annotationtypes[i];
annotationTypes.add(typeX);
@@ -343,8 +349,9 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
public void addAnnotation(AnnotationAJ annotation) {
// FIXME asc only allows for annotation types, not instances - should
// it?
if (annotationTypes == null)
annotationTypes = new HashSet();
if (annotationTypes == null) {
annotationTypes = new HashSet<UnresolvedType>();
}
annotationTypes.add(annotation.getType());
}

@@ -509,6 +516,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno

// OPTIMIZE dont like how resolve(world) on ResolvedMemberImpl does
// something different to world.resolve(member)
@Override
public ResolvedMember resolve(World world) {
// make sure all the pieces of a resolvedmember really are resolved
try {
@@ -519,9 +527,10 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
}
world.setTypeVariableLookupScope(this);
if (annotationTypes != null) {
Set r = new HashSet();
for (Iterator iter = annotationTypes.iterator(); iter.hasNext();) {
UnresolvedType element = (UnresolvedType) iter.next();
Set<UnresolvedType> r = new HashSet<UnresolvedType>();
for (UnresolvedType element : annotationTypes) {
// for (Iterator iter = annotationTypes.iterator(); iter.hasNext();) {
// UnresolvedType element = (UnresolvedType) iter.next();
r.add(world.resolve(element));
}
annotationTypes = r;
@@ -556,6 +565,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
parameterNames = pnames;
}

@Override
public final String[] getParameterNames(World world) {
return getParameterNames();
}
@@ -638,6 +648,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
/**
* Get the UnresolvedType for the return type, taking generic signature into account
*/
@Override
public UnresolvedType getGenericReturnType() {
return getReturnType();
}
@@ -645,6 +656,7 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno
/**
* Get the TypeXs of the parameter types, taking generic signature into account
*/
@Override
public UnresolvedType[] getGenericParameterTypes() {
return getParameterTypes();
}

+ 2
- 2
org.aspectj.matcher/src/org/aspectj/weaver/Shadow.java View File

@@ -44,7 +44,7 @@ public abstract class Shadow {
private Member matchingSignature;
private ResolvedMember resolvedSignature;
protected final Shadow enclosingShadow;
protected List mungers = Collections.EMPTY_LIST;
protected List<ShadowMunger> mungers = Collections.emptyList();

public int shadowId = nextShadowID++; // every time we build a shadow, it gets a new id

@@ -59,7 +59,7 @@ public abstract class Shadow {

public abstract World getIWorld();

public List /* ShadowMunger */getMungers() {
public List<ShadowMunger> getMungers() {
return mungers;
}


+ 4
- 1
org.aspectj.matcher/src/org/aspectj/weaver/World.java View File

@@ -36,6 +36,7 @@ import org.aspectj.bridge.IMessage.Kind;
import org.aspectj.bridge.context.PinpointingMessageHandler;
import org.aspectj.util.IStructureModel;
import org.aspectj.weaver.UnresolvedType.TypeKind;
import org.aspectj.weaver.patterns.DeclareAnnotation;
import org.aspectj.weaver.patterns.DeclarePrecedence;
import org.aspectj.weaver.patterns.Pointcut;
import org.aspectj.weaver.patterns.TypePattern;
@@ -657,7 +658,7 @@ public abstract class World implements Dump.INode {
return crosscuttingMembersSet.getDeclareAnnotationOnFields();
}

public List getDeclareAnnotationOnMethods() {
public List<DeclareAnnotation> getDeclareAnnotationOnMethods() {
return crosscuttingMembersSet.getDeclareAnnotationOnMethods();
}

@@ -1173,6 +1174,7 @@ public abstract class World implements Dump.INode {
aspect2 = a2;
}

@Override
public boolean equals(Object obj) {
if (!(obj instanceof PrecedenceCacheKey))
return false;
@@ -1180,6 +1182,7 @@ public abstract class World implements Dump.INode {
return (aspect1 == other.aspect1 && aspect2 == other.aspect2);
}

@Override
public int hashCode() {
return aspect1.hashCode() + aspect2.hashCode();
}

+ 1
- 1
org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareAnnotation.java View File

@@ -290,7 +290,7 @@ public class DeclareAnnotation extends Declare {
}
}

public AnnotationAJ getAnnotationX() {
public AnnotationAJ getAnnotation() {
ensureAnnotationDiscovered();
return annotation;
}

+ 20
- 20
org.aspectj.matcher/src/org/aspectj/weaver/patterns/PatternParser.java View File

@@ -213,7 +213,7 @@ public class PatternParser {
}

public DeclarePrecedence parseDominates() {
List l = new ArrayList();
List<TypePattern> l = new ArrayList<TypePattern>();
do {
l.add(parseTypePattern());
} while (maybeEat(","));
@@ -236,7 +236,7 @@ public class PatternParser {
}
boolean isExtends = t.getString().equals("extends");

List l = new ArrayList();
List<TypePattern> l = new ArrayList<TypePattern>();
do {
l.add(parseTypePattern());
} while (maybeEat(","));
@@ -593,8 +593,8 @@ public class PatternParser {
return new PointcutDesignatorHandlerBasedPointcut(pcExpr, world);
}

public List parseDottedIdentifier() {
List ret = new ArrayList();
public List<String> parseDottedIdentifier() {
List<String> ret = new ArrayList<String>();
ret.add(parseIdentifier());
while (maybeEat(".")) {
ret.add(parseIdentifier());
@@ -761,7 +761,7 @@ public class PatternParser {
// PVAL cope with annotation values at other places in this code
public AnnotationTypePattern maybeParseSingleAnnotationPattern() {
AnnotationTypePattern ret = null;
Map values = null;
Map<String, String> values = null;
// LALR(2) - fix by making "!@" a single token
int startIndex = tokenSource.getIndex();
if (maybeEat("!")) {
@@ -812,8 +812,8 @@ public class PatternParser {

// Parse annotation values. In an expression in @A(a=b,c=d) this method will be
// parsing the a=b,c=d.)
public Map/* String,String */parseAnnotationValues() {
Map values = new HashMap();
public Map/* String,String */<String, String>parseAnnotationValues() {
Map<String, String> values = new HashMap<String, String>();
boolean seenDefaultValue = false;
do {
String possibleKeyString = parseAnnotationNameValuePattern();
@@ -853,7 +853,7 @@ public class PatternParser {
return parseHasFieldTypePattern();
}

List names = parseDottedNamePattern();
List<NamePattern> names = parseDottedNamePattern();

int dim = 0;
while (maybeEat("[")) {
@@ -875,7 +875,7 @@ public class PatternParser {
boolean isVarArgs = maybeEat("...");

// ??? what about the source location of any's????
if (names.size() == 1 && ((NamePattern) names.get(0)).isAny() && dim == 0 && !isVarArgs && typeParameters == null)
if (names.size() == 1 && names.get(0).isAny() && dim == 0 && !isVarArgs && typeParameters == null)
return TypePattern.ANY;

// Notice we increase the dimensions if varargs is set. this is to allow type matching to
@@ -910,7 +910,7 @@ public class PatternParser {
}

public TypePattern parseGenericsWildcardTypePattern() {
List names = new ArrayList();
List<NamePattern> names = new ArrayList<NamePattern>();
names.add(new NamePattern("?"));
TypePattern upperBound = null;
TypePattern[] additionalInterfaceBounds = new TypePattern[0];
@@ -1018,8 +1018,8 @@ public class PatternParser {
// return p;
// }

public List parseDottedNamePattern() {
List names = new ArrayList();
public List<NamePattern> parseDottedNamePattern() {
List<NamePattern> names = new ArrayList<NamePattern>();
StringBuffer buf = new StringBuffer();
IToken previous = null;
boolean justProcessedEllipsis = false; // Remember if we just dealt with an ellipsis (PR61536)
@@ -1224,7 +1224,7 @@ public class PatternParser {
}

public TypePatternList parseArgumentsPattern(boolean parameterAnnotationsPossible) {
List patterns = new ArrayList();
List<TypePattern> patterns = new ArrayList<TypePattern>();
eat("(");

// ()
@@ -1245,7 +1245,7 @@ public class PatternParser {
}

public AnnotationPatternList parseArgumentsAnnotationPattern() {
List patterns = new ArrayList();
List<AnnotationTypePattern> patterns = new ArrayList<AnnotationTypePattern>();
eat("(");
if (maybeEat(")")) {
return new AnnotationPatternList();
@@ -1269,8 +1269,8 @@ public class PatternParser {
IToken t = tokenSource.peek();
if (t.isIdentifier() && t.getString().equals("throws")) {
tokenSource.next();
List required = new ArrayList();
List forbidden = new ArrayList();
List<TypePattern> required = new ArrayList<TypePattern>();
List<TypePattern> forbidden = new ArrayList<TypePattern>();
do {
boolean isForbidden = maybeEat("!");
// ???might want an error for a second ! without a paren
@@ -1404,7 +1404,7 @@ public class PatternParser {
public TypeVariablePatternList maybeParseTypeVariableList() {
if (!maybeEat("<"))
return null;
List typeVars = new ArrayList();
List<TypeVariablePattern> typeVars = new ArrayList<TypeVariablePattern>();
TypeVariablePattern t = parseTypeVariable();
typeVars.add(t);
while (maybeEat(",")) {
@@ -1421,7 +1421,7 @@ public class PatternParser {
public String[] maybeParseSimpleTypeVariableList() {
if (!maybeEat("<"))
return null;
List typeVarNames = new ArrayList();
List<String> typeVarNames = new ArrayList<String>();
do {
typeVarNames.add(parseIdentifier());
} while (maybeEat(","));
@@ -1434,7 +1434,7 @@ public class PatternParser {
public TypePatternList maybeParseTypeParameterList() {
if (!maybeEat("<"))
return null;
List typePats = new ArrayList();
List<TypePattern> typePats = new ArrayList<TypePattern>();
do {
TypePattern tp = parseTypePattern(true, false);
typePats.add(tp);
@@ -1460,7 +1460,7 @@ public class PatternParser {
}

private TypePattern[] maybeParseAdditionalInterfaceBounds() {
List boundsList = new ArrayList();
List<TypePattern> boundsList = new ArrayList<TypePattern>();
while (maybeEat("&")) {
TypePattern tp = parseTypePattern();
boundsList.add(tp);

Loading…
Cancel
Save