public class EclipseHandlerUtil extends Object
Modifier and Type | Class and Description |
---|---|
static class |
EclipseHandlerUtil.FieldAccess |
static class |
EclipseHandlerUtil.MemberExistsResult
Serves as return value for the methods that check for the existence of fields and methods.
|
Modifier and Type | Method and Description |
---|---|
static Annotation[] |
addGenerated(EclipseNode node,
ASTNode source,
Annotation[] originalAnnotationArray) |
static Annotation[] |
addSuppressWarningsAll(EclipseNode node,
ASTNode source,
Annotation[] originalAnnotationArray) |
static boolean |
annotationTypeMatches(Class<? extends Annotation> type,
EclipseNode node)
Checks if the provided annotation type is likely to be the intended type for the given annotation node.
|
static TypeReference |
cloneSelfType(EclipseNode context) |
static TypeReference |
cloneSelfType(EclipseNode context,
ASTNode source) |
static EclipseHandlerUtil.MemberExistsResult |
constructorExists(EclipseNode node)
Checks if there is a (non-default) constructor.
|
static Annotation |
copyAnnotation(Annotation annotation,
ASTNode source) |
static Annotation[] |
copyAnnotations(ASTNode source,
Annotation[]... allAnnotations) |
static TypeReference |
copyType(TypeReference ref) |
static TypeReference |
copyType(TypeReference ref,
ASTNode source)
You can't share TypeReference objects or subtle errors start happening.
|
static TypeParameter[] |
copyTypeParams(TypeParameter[] params,
ASTNode source)
You can't share TypeParameter objects or bad things happen; for example, one 'T' resolves differently
from another 'T', even for the same T in a single class file.
|
static TypeReference[] |
copyTypes(TypeReference[] refs) |
static TypeReference[] |
copyTypes(TypeReference[] refs,
ASTNode source)
Convenience method that creates a new array and copies each TypeReference in the source array via
copyType(TypeReference, ASTNode) . |
static <A extends Annotation> |
createAnnotation(Class<A> type,
EclipseNode annotationNode)
Provides AnnotationValues with the data it needs to do its thing.
|
static List<Integer> |
createListOfNonExistentFields(List<String> list,
EclipseNode type,
boolean excludeStandard,
boolean excludeTransient)
Given a list of field names and a node referring to a type, finds each name in the list that does not match a field within the type.
|
static NameReference |
createNameReference(String name,
Annotation source) |
static void |
error(CompilationUnitDeclaration cud,
String message,
Throwable ex)
Generates an error in the Eclipse error log.
|
static EclipseHandlerUtil.MemberExistsResult |
fieldExists(String fieldName,
EclipseNode node)
Checks if there is a field with the provided name.
|
static boolean |
filterField(FieldDeclaration declaration)
Checks if the field should be included in operations that work on 'all' fields:
If the field is static, or starts with a '$', or is actually an enum constant, 'false' is returned, indicating you should skip it.
|
static boolean |
filterField(FieldDeclaration declaration,
boolean skipStatic) |
static MarkerAnnotation |
generateDeprecatedAnnotation(ASTNode source) |
static Statement |
generateNullCheck(AbstractVariableDeclaration variable,
EclipseNode sourceNode)
Generates a new statement that checks if the given variable is null, and if so, throws a specified exception with the
variable name as message.
|
static AnnotationValues<Accessors> |
getAccessorsForField(EclipseNode field) |
static ASTNode |
getGeneratedBy(ASTNode node) |
static boolean |
hasAnnotation(Class<? extends Annotation> type,
EclipseNode node) |
static EclipseNode |
injectField(EclipseNode type,
FieldDeclaration field)
Inserts a field into an existing type.
|
static EclipseNode |
injectFieldAndMarkGenerated(EclipseNode type,
FieldDeclaration field)
Inserts a field into an existing type.
|
static EclipseNode |
injectMethod(EclipseNode type,
AbstractMethodDeclaration method)
Inserts a method into an existing type.
|
static EclipseNode |
injectType(EclipseNode typeNode,
TypeDeclaration type)
Adds an inner type (class, interface, enum) to the given type.
|
static boolean |
isBoolean(TypeReference typeReference) |
static boolean |
isEnumConstant(FieldDeclaration field) |
static boolean |
isFieldDeprecated(EclipseNode fieldNode) |
static boolean |
isGenerated(ASTNode node) |
static CastExpression |
makeCastExpression(Expression ref,
TypeReference castTo,
ASTNode source)
In eclipse 3.7+, the CastExpression constructor was changed from a really weird version to
a less weird one.
|
static IntLiteral |
makeIntLiteral(char[] token,
ASTNode source)
In eclipse 3.7+, IntLiterals are created using a factory-method
Unfortunately that means we need to use reflection as we want to be compatible
with eclipse versions before 3.7.
|
static MarkerAnnotation |
makeMarkerAnnotation(char[][] name,
ASTNode source)
Create an annotation of the given name, and is marked as being generated by the given source.
|
static TypeReference |
makeType(TypeBinding binding,
ASTNode pos,
boolean allowCompound) |
static EclipseHandlerUtil.MemberExistsResult |
methodExists(String methodName,
EclipseNode node,
boolean caseSensitive,
int params)
Checks if there is a method with the provided name.
|
static EclipseHandlerUtil.MemberExistsResult |
methodExists(String methodName,
EclipseNode node,
int params)
|
static TypeReference |
namePlusTypeParamsToTypeReference(char[] typeName,
TypeParameter[] params,
long p) |
static char[] |
removePrefixFromField(EclipseNode field) |
static void |
sanityCheckForMethodGeneratingAnnotationsOnBuilderClass(EclipseNode typeNode,
EclipseNode errorNode) |
static <T extends ASTNode> |
setGeneratedBy(T node,
ASTNode source) |
static boolean |
shouldReturnThis(EclipseNode field)
When generating a setter, the setter either returns void (beanspec) or Self (fluent).
|
static List<String> |
toAllGetterNames(EclipseNode field,
boolean isBoolean)
Translates the given field into all possible getter names.
|
static List<String> |
toAllSetterNames(EclipseNode field,
boolean isBoolean)
Translates the given field into all possible setter names.
|
static List<String> |
toAllWitherNames(EclipseNode field,
boolean isBoolean)
Translates the given field into all possible wither names.
|
static int |
toEclipseModifier(AccessLevel value)
Turns an
AccessLevel instance into the flag bit used by eclipse. |
static String |
toGetterName(EclipseNode field,
boolean isBoolean) |
static String |
toSetterName(EclipseNode field,
boolean isBoolean) |
static String |
toWitherName(EclipseNode field,
boolean isBoolean) |
static boolean |
typeMatches(Class<?> type,
EclipseNode node,
TypeReference typeRef)
Checks if the given TypeReference node is likely to be a reference to the provided class.
|
static List<Annotation> |
unboxAndRemoveAnnotationParameter(Annotation annotation,
String annotationName,
String errorName,
EclipseNode errorNode) |
static void |
warning(String message,
Throwable ex)
Generates a warning in the Eclipse error log.
|
public static void error(CompilationUnitDeclaration cud, String message, Throwable ex)
cud
- The CompilationUnitDeclaration
where the error occurred.
An error will be generated on line 0 linking to the error log entry. Can be null
.message
- Human readable description of the problem.ex
- The associated exception. Can be null
.public static void warning(String message, Throwable ex)
message
- Human readable description of the problem.ex
- The associated exception. Can be null
.public static ASTNode getGeneratedBy(ASTNode node)
public static boolean isGenerated(ASTNode node)
public static <T extends ASTNode> T setGeneratedBy(T node, ASTNode source)
public static MarkerAnnotation generateDeprecatedAnnotation(ASTNode source)
public static boolean isFieldDeprecated(EclipseNode fieldNode)
public static boolean typeMatches(Class<?> type, EclipseNode node, TypeReference typeRef)
type
- An actual type. This method checks if typeNode
is likely to be a reference to this type.node
- A Lombok AST node. Any node in the appropriate compilation unit will do (used to get access to import statements).typeRef
- A type reference to check.public static void sanityCheckForMethodGeneratingAnnotationsOnBuilderClass(EclipseNode typeNode, EclipseNode errorNode)
public static Annotation copyAnnotation(Annotation annotation, ASTNode source)
public static TypeParameter[] copyTypeParams(TypeParameter[] params, ASTNode source)
public static TypeReference namePlusTypeParamsToTypeReference(char[] typeName, TypeParameter[] params, long p)
public static TypeReference[] copyTypes(TypeReference[] refs)
public static TypeReference[] copyTypes(TypeReference[] refs, ASTNode source)
copyType(TypeReference, ASTNode)
.public static TypeReference copyType(TypeReference ref)
public static TypeReference copyType(TypeReference ref, ASTNode source)
public static Annotation[] copyAnnotations(ASTNode source, Annotation[]... allAnnotations)
public static boolean hasAnnotation(Class<? extends Annotation> type, EclipseNode node)
public static boolean annotationTypeMatches(Class<? extends Annotation> type, EclipseNode node)
public static TypeReference cloneSelfType(EclipseNode context)
public static TypeReference cloneSelfType(EclipseNode context, ASTNode source)
public static TypeReference makeType(TypeBinding binding, ASTNode pos, boolean allowCompound)
public static <A extends Annotation> AnnotationValues<A> createAnnotation(Class<A> type, EclipseNode annotationNode)
public static int toEclipseModifier(AccessLevel value)
AccessLevel
instance into the flag bit used by eclipse.public static boolean isBoolean(TypeReference typeReference)
public static List<String> toAllGetterNames(EclipseNode field, boolean isBoolean)
TransformationsUtil#toAllGetterNames(lombok.core.AnnotationValues, CharSequence, boolean)
.public static String toGetterName(EclipseNode field, boolean isBoolean)
TransformationsUtil#toGetterName(lombok.core.AnnotationValues, CharSequence, boolean)
.public static List<String> toAllSetterNames(EclipseNode field, boolean isBoolean)
TransformationsUtil#toAllSetterNames(lombok.core.AnnotationValues, CharSequence, boolean)
.public static String toSetterName(EclipseNode field, boolean isBoolean)
TransformationsUtil#toSetterName(lombok.core.AnnotationValues, CharSequence, boolean)
.public static List<String> toAllWitherNames(EclipseNode field, boolean isBoolean)
TransformationsUtil#toAllWitherNames(lombok.core.AnnotationValues, CharSequence, boolean)
.public static String toWitherName(EclipseNode field, boolean isBoolean)
TransformationsUtil#toWitherName(lombok.core.AnnotationValues, CharSequence, boolean)
.public static boolean shouldReturnThis(EclipseNode field)
Accessors
annotation and associated config properties to figure that out.public static boolean filterField(FieldDeclaration declaration)
public static boolean filterField(FieldDeclaration declaration, boolean skipStatic)
public static char[] removePrefixFromField(EclipseNode field)
public static AnnotationValues<Accessors> getAccessorsForField(EclipseNode field)
public static EclipseHandlerUtil.MemberExistsResult fieldExists(String fieldName, EclipseNode node)
fieldName
- the field name to check for.node
- Any node that represents the Type (TypeDeclaration) to look in, or any child node thereof.public static EclipseHandlerUtil.MemberExistsResult methodExists(String methodName, EclipseNode node, int params)
public static EclipseHandlerUtil.MemberExistsResult methodExists(String methodName, EclipseNode node, boolean caseSensitive, int params)
methodName
- the method name to check for.node
- Any node that represents the Type (TypeDeclaration) to look in, or any child node thereof.caseSensitive
- If the search should be case sensitive.params
- The number of parameters the method should have; varargs count as 0-*. Set to -1 to find any method with the appropriate name regardless of parameter count.public static EclipseHandlerUtil.MemberExistsResult constructorExists(EclipseNode node)
node
- Any node that represents the Type (TypeDeclaration) to look in, or any child node thereof.public static EclipseNode injectFieldAndMarkGenerated(EclipseNode type, FieldDeclaration field)
TypeDeclaration
.
The field carries the @SuppressWarnings
("all") annotation.public static EclipseNode injectField(EclipseNode type, FieldDeclaration field)
TypeDeclaration
.public static boolean isEnumConstant(FieldDeclaration field)
public static EclipseNode injectMethod(EclipseNode type, AbstractMethodDeclaration method)
TypeDeclaration
.public static EclipseNode injectType(EclipseNode typeNode, TypeDeclaration type)
typeNode
- parent type to inject new type intotype
- New type (class, interface, etc) to inject.public static Annotation[] addSuppressWarningsAll(EclipseNode node, ASTNode source, Annotation[] originalAnnotationArray)
public static Annotation[] addGenerated(EclipseNode node, ASTNode source, Annotation[] originalAnnotationArray)
public static Statement generateNullCheck(AbstractVariableDeclaration variable, EclipseNode sourceNode)
exName
- The name of the exception to throw; normally java.lang.NullPointerException
.public static MarkerAnnotation makeMarkerAnnotation(char[][] name, ASTNode source)
public static List<Integer> createListOfNonExistentFields(List<String> list, EclipseNode type, boolean excludeStandard, boolean excludeTransient)
public static CastExpression makeCastExpression(Expression ref, TypeReference castTo, ASTNode source)
ref
- The foo
in (String)foo
.castTo
- The String
in (String)foo
.public static IntLiteral makeIntLiteral(char[] token, ASTNode source)
public static List<Annotation> unboxAndRemoveAnnotationParameter(Annotation annotation, String annotationName, String errorName, EclipseNode errorNode)
public static NameReference createNameReference(String name, Annotation source)
Copyright © 2009-2015 The Project Lombok Authors, licensed under the MIT licence.