List of usage examples for org.aspectj.weaver.patterns TypePattern ANY
TypePattern ANY
To view the source code for org.aspectj.weaver.patterns TypePattern ANY.
Click Source Link
From source file:org.caesarj.compiler.aspectj.CaesarKindedPointcut.java
License:Open Source License
private void warnOnConfusingSig(Shadow shadow) { // no warnings for declare error/warning if (munger instanceof Checker) return;//from w w w. jav a 2s.c om World world = shadow.getIWorld(); // warning never needed if the declaring type is any TypeX exactDeclaringType = signature.getDeclaringType().getExactType(); ResolvedTypeX shadowDeclaringType = shadow.getSignature().getDeclaringType().resolve(world); if (signature.getDeclaringType().isStar() || exactDeclaringType == ResolvedTypeX.MISSING) return; // warning not needed if match type couldn't ever be the declaring type if (!shadowDeclaringType.isAssignableFrom(exactDeclaringType)) { return; } // if the method in the declaring type is *not* visible to the // exact declaring type then warning not needed. int shadowModifiers = shadow.getSignature().getModifiers(world); if (!ResolvedTypeX.isVisible(shadowModifiers, shadowDeclaringType, exactDeclaringType.resolve(world))) { return; } // PR60015 - Don't report the warning if the declaring type is object and 'this' is an interface if (exactDeclaringType.isInterface(world) && shadowDeclaringType.equals(world.resolve("java.lang.Object"))) { return; } SignaturePattern nonConfusingPattern = new SignaturePattern(signature.getKind(), signature.getModifiers(), signature.getReturnType(), TypePattern.ANY, signature.getName(), signature.getParameterTypes(), signature.getThrowsPattern()); if (nonConfusingPattern.matches(shadow.getSignature(), shadow.getIWorld())) { shadow.getIWorld().getLint().unmatchedSuperTypeInCall.signal( new String[] { shadow.getSignature().getDeclaringType().toString(), signature.getDeclaringType().toString() }, this.getSourceLocation(), new ISourceLocation[] { shadow.getSourceLocation() }); } }
From source file:org.caesarj.compiler.aspectj.CaesarWrapperPatternParser.java
License:Open Source License
public CaesarPointcutWrapper parsePointcutWrapper() { int start = tokenSource.getIndex(); IToken t = tokenSource.peek();/*from w ww . j a v a 2 s . com*/ Pointcut p = t.maybeGetParsedPointcut(); if (p != null) { tokenSource.next(); return new CaesarPointcutWrapper(p); } String kind = parseIdentifier(); tokenSource.setIndex(start); if (kind.equals("if")) { return parseIfPointcut(); } else if (kind.equals("super")) { return parseSuperPointcut(); } else if (kind.equals("execution") || kind.equals("call") || kind.equals("get") || kind.equals("set")) { return parseKindedPointcut(); } else if (kind.equals("args")) { return parseArgsPointcut(); } else if (kind.equals("this") || kind.equals("target")) { return parseThisOrTargetPointcut(); } else if (kind.equals("within")) { return parseWithinPointcut(); } else if (kind.equals("withincode")) { return parseWithinCodePointcut(); } else if (kind.equals("cflow")) { return parseCflowPointcut(false); } else if (kind.equals("cflowbelow")) { return parseCflowPointcut(true); } else if (kind.equals("adviceexecution")) { parseIdentifier(); eat("("); eat(")"); // Creates the wrapper CaesarKindedPointcut pointcut = new CaesarKindedPointcut(Shadow.AdviceExecution, new SignaturePattern(Member.ADVICE, ModifiersPattern.ANY, TypePattern.ANY, TypePattern.ANY, NamePattern.ANY, TypePatternList.ANY, ThrowsPattern.ANY)); CaesarPointcutWrapper wrapper = new CaesarPointcutWrapper(pointcut); return wrapper; } else if (kind.equals("handler")) { parseIdentifier(); eat("("); TypePattern typePat = parseTypePattern(); eat(")"); // Creates the wrapper HandlerPointcut pointcut = new HandlerPointcut(typePat); CaesarPointcutWrapper wrapper = new CaesarPointcutWrapper(pointcut); wrapper.setExceptionType(typePat); return wrapper; } else if (kind.equals("initialization")) { parseIdentifier(); eat("("); SignaturePattern sig = parseConstructorSignaturePattern(); eat(")"); // Creates the wrapper CaesarKindedPointcut regular = new CaesarKindedPointcut(Shadow.Initialization, sig); return new CaesarPointcutWrapper(regular); } else if (kind.equals("staticinitialization")) { parseIdentifier(); eat("("); TypePattern typePat = parseTypePattern(); eat(")"); SignaturePattern sig = new SignaturePattern(Member.STATIC_INITIALIZATION, ModifiersPattern.ANY, TypePattern.ANY, typePat, NamePattern.ANY, TypePatternList.EMPTY, ThrowsPattern.ANY); // Creates the wrapper and register it CaesarKindedPointcut pt = new CaesarKindedPointcut(Shadow.StaticInitialization, sig); CaesarPointcutWrapper wrapper = new CaesarPointcutWrapper(pt); registerPointcut(wrapper); // Append something like || get(public * Classname_Impl_Mixin_*.field) TypePattern mixinType = createMixinType(sig.getDeclaringType()); SignaturePattern mixinSignature = createMixinSignature(sig, mixinType); CaesarKindedPointcut mixin = new CaesarKindedPointcut(Shadow.StaticInitialization, mixinSignature); // Register the mixin wrapper = new CaesarPointcutWrapper(mixin, sig.getDeclaringType()); wrapper.setDeclaringType(mixinType); registerPointcut(wrapper); // Creates an orPointcut for both the type and the mixin Pointcut orPointcut = new OrPointcut(pt, mixin); return new CaesarPointcutWrapper(orPointcut); } else if (kind.equals("preinitialization")) { parseIdentifier(); eat("("); SignaturePattern sig = parseConstructorSignaturePattern(); eat(")"); CaesarCloner c = CaesarCloner.instance(); SignaturePattern cclassSig = new SignaturePattern(Member.CONSTRUCTOR, sig.getModifiers(), c.clone(sig.getReturnType()), c.clone(sig.getDeclaringType()), c.clone(sig.getName()), createObjectTypeList(), c.clone(sig.getThrowsPattern())); CaesarKindedPointcut regular = new CaesarKindedPointcut(Shadow.PreInitialization, sig); CaesarKindedPointcut cclass = new CaesarKindedPointcut(Shadow.PreInitialization, cclassSig); registerPointcut(new CaesarPointcutWrapper(regular)); registerPointcut(new CaesarPointcutWrapper(cclass)); // Creates an orPointcut for both the regular java and cclass constructors Pointcut orPointcut = new OrPointcut(regular, cclass); return new CaesarPointcutWrapper(orPointcut); } else { return parseReferencePointcut(); } }
From source file:org.caesarj.compiler.aspectj.CaesarWrapperPatternParser.java
License:Open Source License
private NamePattern tryToExtractName(TypePattern nextType) { if (nextType == TypePattern.ANY) { return NamePattern.ANY; } else if (nextType instanceof CaesarWildTypePattern) { CaesarWildTypePattern p = (CaesarWildTypePattern) nextType; return p.extractName(); } else if (nextType instanceof WildTypePattern) { WildTypePattern p = (WildTypePattern) nextType; return p.extractName(); } else {/*from ww w.ja v a 2 s. com*/ return null; } }
From source file:org.caesarj.compiler.aspectj.CaesarWrapperPatternParser.java
License:Open Source License
public TypePattern parseSingleTypePattern() { List<NamePattern> names = parseDottedNamePattern(); // new ArrayList(); // NamePattern p1 = parseNamePattern(); // names.add(p1); // while (maybeEat(".")) { // if (maybeEat(".")) { // names.add(NamePattern.ELLIPSIS); // }// w w w . j a v a 2s.c om // NamePattern p2 = parseNamePattern(); // names.add(p2); // } int dim = 0; while (maybeEat("[")) { eat("]"); dim++; } boolean includeSubtypes = maybeEat("+"); int endPos = tokenSource.peek(-1).getEnd(); //??? what about the source location of any's???? if (names.size() == 1 && ((NamePattern) names.get(0)).isAny() && dim == 0) return TypePattern.ANY; return new CaesarWildTypePattern(names, includeSubtypes, dim, endPos); }
From source file:org.caesarj.compiler.aspectj.CaesarWrapperPatternParser.java
License:Open Source License
/** * Creates a signator which select constructors: * /*from ww w . j a v a 2s . com*/ * * $constructor(..) * * @return */ protected SignaturePattern createConstructorSignature() { return new SignaturePattern(Member.METHOD, ModifiersPattern.ANY, TypePattern.ANY, TypePattern.ANY, new NamePattern("$constructor"), new TypePatternList(new TypePattern[] { TypePattern.ELLIPSIS }), ThrowsPattern.ANY); }