org.aspectj.weaver.AnnotationAJ Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.servicemix.bundles.aspectj
Show all versions of org.apache.servicemix.bundles.aspectj
This OSGi bundle wraps aspectjrt and aspectjweaver ${pkgVersion} jar files.
/* *******************************************************************
* Copyright (c) 2006-2008 Contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* ******************************************************************/
package org.aspectj.weaver;
import java.util.Set;
/**
* Simple representation of an annotation that the weaver can work with.
*
* @author AndyClement
*/
public interface AnnotationAJ {
public static final AnnotationAJ[] EMPTY_ARRAY = new AnnotationAJ[0];
/**
* @return the signature for the annotation type, eg. Lcom/foo/MyAnno;
*/
public String getTypeSignature();
/**
* @return the type name for the annotation, eg. com.foo.MyAnno
*/
public String getTypeName();
/**
* @return the type of the annotation
*/
public ResolvedType getType();
/**
* return true if this annotation can target an annotation type
*/
public boolean allowedOnAnnotationType();
/**
* @return true if this annotation can be put on a field
*/
public boolean allowedOnField();
/**
* @return true if this annotation can target a 'regular' type. A 'regular' type is enum/class/interface - it is *not*
* annotation.
*/
public boolean allowedOnRegularType();
/**
* @return for the @target annotation, this will return a set of the element-types it can be applied to. For other annotations ,
* it returns the empty set.
*/
public Set getTargets();
/**
* @param name the name of the value
* @return true if there is a value with that name
*/
public boolean hasNamedValue(String name);
/**
* @param name the name of the annotation field
* @param value the value of the annotation field
* @return true if there is a value with the specified name and value
*/
public boolean hasNameValuePair(String name, String value);
/**
* @return String representation of the valid targets for this annotation, eg. "{TYPE,FIELD}"
*/
public String getValidTargets();
/**
* @return String form of the annotation and any values, eg. @Foo(a=b,c=d)
*/
public String stringify();
/**
* @return true if this annotation is marked with @target
*/
public boolean specifiesTarget();
/**
* @return true if the annotation is marked for runtime visibility
*/
public boolean isRuntimeVisible();
/**
* Determine the string representation of the value of a field. For example in @SuppressAjWarnings({"adviceDidNotMatch"}) the
* return value for getStringFormOfValue("value") would be "[adviceDidNotMatch]".
*
* @param name the name of the annotation field being looked up
* @return string representation of the value of that field, may be null if no such field set
*/
public String getStringFormOfValue(String name);
}