package org.jboss.windup.ast.java.data; /** * Designates a location where a given {@link org.jboss.windup.ast.java.data.ClassReference} was found in a Java source file. * * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> */ public enum TypeReferenceLocation { /** * A Java class imports the type. */ IMPORT("Import of"), /** * A Java class declares the type. */ TYPE("Declares type"), /** * A Java class declares the enumeration. */ ENUM_CONSTANT("Declares enumeration constant"), /** * A Java class declares the referenced method. */ METHOD("Declares method"), /** * A Java class inherits the specified type; works transitively. */ INHERITANCE("Inherits type"), /** * A Java class constructs the specified type. */ CONSTRUCTOR_CALL("Constructing type"), /** * A Java class calls the specified method; works transitively for interfaces. * That means, if there's a rule with an interface FQCN and it has * <code><location>METHOD_CALL</location></code>, * a call of a method on types implementing or exntending that interface will fire the rule. */ METHOD_CALL("Calls method"), /** * A Java class declares the referenced method parameter. */ METHOD_PARAMETER("Method parameter"), /** * A Java class references the annotation. */ ANNOTATION("References annotation"), /** * A Java class returns the specified type. */ RETURN_TYPE("Returns type"), /** * A Java class of the specified type is used in an <code>instanceof</code> statement. */ INSTANCE_OF("Instance of type"), /** * A Java class declares that it may throw the specified type. */ THROWS_METHOD_DECLARATION("Throws"), /** * A method in the Java class throws the an instance of the specified type. */ THROW_STATEMENT("Throw"), /** * A Java class method catches the specified type. */ CATCH_EXCEPTION_STATEMENT("Catches exception"), /** * A Java class declares a field of the specified type. */ FIELD_DECLARATION("Declares field"), /** * A Java class declares a variable of the specified type. */ VARIABLE_DECLARATION("Declares variable"), /** * A Java class implements the specified type; works transitively. */ IMPLEMENTS_TYPE("Implements type"), /** * A variable initalization expression value. For example, this would resolve to "mypackage.MyConstants.FOO" for the following field declaration: * * <pre> * int foo = mypackage.MyConstants.FOO; * </pre> */ VARIABLE_INITIALIZER("Variable Initializer"), /** * This is only relevant for JSP sources and represents the import of a taglib into the JSP source file. */ TAGLIB_IMPORT("Taglib Import"); private final String readablePrefix; private TypeReferenceLocation(String readablePrefix) { this.readablePrefix = readablePrefix; } /** * Returns the enumeration as a human readable value. */ public String toReadablePrefix() { return this.readablePrefix; } }