Explorar el Código

annoValMatch: implementation

tags/V1_6_0M2
aclement hace 16 años
padre
commit
596926f6d7

+ 28
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseResolvedMember.java Ver fichero

@@ -13,8 +13,11 @@ package org.aspectj.ajdt.internal.compiler.lookup;

import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AnnotationMethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
@@ -72,6 +75,31 @@ public class EclipseResolvedMember extends ResolvedMemberImpl {
throw new RuntimeException("not yet implemented - please raise an AJ bug");
// return super.getAnnotations();
}
public String getAnnotationDefaultValue() {
if (realBinding instanceof MethodBinding) {
AbstractMethodDeclaration methodDecl = getTypeDeclaration().declarationOf((MethodBinding)realBinding);
if (methodDecl instanceof AnnotationMethodDeclaration) {
AnnotationMethodDeclaration annoMethodDecl = (AnnotationMethodDeclaration)methodDecl;
Expression e = annoMethodDecl.defaultValue;
if (e.resolvedType==null)
e.resolve(methodDecl.scope);
// TODO does not cope with many cases...
if (e instanceof QualifiedNameReference) {
QualifiedNameReference qnr = (QualifiedNameReference)e;
if (qnr.binding instanceof FieldBinding) {
FieldBinding fb = (FieldBinding)qnr.binding;
StringBuffer sb = new StringBuffer();
sb.append(fb.declaringClass.signature());
sb.append(fb.name);
return sb.toString();
}
}
}
}
return null;
}

public ResolvedType[] getAnnotationTypes() {
if (cachedAnnotationTypes == null) {

Cargando…
Cancelar
Guardar