Search in sources :

Example 1 with FieldNameConstants

use of lombok.experimental.FieldNameConstants in project lombok by rzwitserloot.

the class HandleFieldNameConstants method handle.

public void handle(AnnotationValues<FieldNameConstants> annotation, JCAnnotation ast, JavacNode annotationNode) {
    handleExperimentalFlagUsage(annotationNode, ConfigurationKeys.FIELD_NAME_CONSTANTS_FLAG_USAGE, "@FieldNameConstants");
    deleteAnnotationIfNeccessary(annotationNode, FieldNameConstants.class);
    deleteImportFromCompilationUnit(annotationNode, "lombok.AccessLevel");
    JavacNode node = annotationNode.up();
    FieldNameConstants annotationInstance = annotation.getInstance();
    AccessLevel level = annotationInstance.level();
    boolean asEnum = annotationInstance.asEnum();
    boolean usingLombokv1_18_2 = annotation.isExplicit("prefix") || annotation.isExplicit("suffix") || node.getKind() == Kind.FIELD;
    if (usingLombokv1_18_2) {
        annotationNode.addError("@FieldNameConstants has been redesigned in lombok v1.18.4; please upgrade your project dependency on lombok. See https://projectlombok.org/features/experimental/FieldNameConstants for more information.");
        return;
    }
    if (level == AccessLevel.NONE) {
        annotationNode.addWarning("AccessLevel.NONE is not compatible with @FieldNameConstants. If you don't want the inner type, simply remove @FieldNameConstants.");
        return;
    }
    IdentifierName innerTypeName;
    try {
        innerTypeName = IdentifierName.valueOf(annotationInstance.innerTypeName());
    } catch (IllegalArgumentException e) {
        annotationNode.addError("InnerTypeName " + annotationInstance.innerTypeName() + " is not a valid Java identifier.");
        return;
    }
    if (innerTypeName == null)
        innerTypeName = annotationNode.getAst().readConfiguration(ConfigurationKeys.FIELD_NAME_CONSTANTS_INNER_TYPE_NAME);
    if (innerTypeName == null)
        innerTypeName = FIELDS;
    Boolean uppercase = annotationNode.getAst().readConfiguration(ConfigurationKeys.FIELD_NAME_CONSTANTS_UPPERCASE);
    if (uppercase == null)
        uppercase = false;
    generateFieldNameConstantsForType(node, annotationNode, level, asEnum, innerTypeName, annotationInstance.onlyExplicitlyIncluded(), uppercase);
}
Also used : JavacNode(lombok.javac.JavacNode) FieldNameConstants(lombok.experimental.FieldNameConstants) AccessLevel(lombok.AccessLevel) IdentifierName(lombok.core.configuration.IdentifierName)

Example 2 with FieldNameConstants

use of lombok.experimental.FieldNameConstants in project lombok by rzwitserloot.

the class HandleFieldNameConstants method handle.

@Override
public void handle(AnnotationValues<FieldNameConstants> annotation, Annotation ast, EclipseNode annotationNode) {
    handleExperimentalFlagUsage(annotationNode, ConfigurationKeys.FIELD_NAME_CONSTANTS_FLAG_USAGE, "@FieldNameConstants");
    EclipseNode node = annotationNode.up();
    FieldNameConstants annotationInstance = annotation.getInstance();
    AccessLevel level = annotationInstance.level();
    boolean asEnum = annotationInstance.asEnum();
    boolean usingLombokv1_18_2 = annotation.isExplicit("prefix") || annotation.isExplicit("suffix") || node.getKind() == Kind.FIELD;
    if (usingLombokv1_18_2) {
        annotationNode.addError("@FieldNameConstants has been redesigned in lombok v1.18.4; please upgrade your project dependency on lombok. See https://projectlombok.org/features/experimental/FieldNameConstants for more information.");
        return;
    }
    if (level == AccessLevel.NONE) {
        annotationNode.addWarning("AccessLevel.NONE is not compatible with @FieldNameConstants. If you don't want the inner type, simply remove FieldNameConstants.");
        return;
    }
    IdentifierName innerTypeName;
    try {
        innerTypeName = IdentifierName.valueOf(annotationInstance.innerTypeName());
    } catch (IllegalArgumentException e) {
        annotationNode.addError("InnerTypeName " + annotationInstance.innerTypeName() + " is not a valid Java identifier.");
        return;
    }
    if (innerTypeName == null)
        innerTypeName = annotationNode.getAst().readConfiguration(ConfigurationKeys.FIELD_NAME_CONSTANTS_INNER_TYPE_NAME);
    if (innerTypeName == null)
        innerTypeName = FIELDS;
    Boolean uppercase = annotationNode.getAst().readConfiguration(ConfigurationKeys.FIELD_NAME_CONSTANTS_UPPERCASE);
    if (uppercase == null)
        uppercase = false;
    generateFieldNameConstantsForType(node, annotationNode, level, asEnum, innerTypeName, annotationInstance.onlyExplicitlyIncluded(), uppercase);
}
Also used : FieldNameConstants(lombok.experimental.FieldNameConstants) EclipseNode(lombok.eclipse.EclipseNode) AccessLevel(lombok.AccessLevel) IdentifierName(lombok.core.configuration.IdentifierName)

Aggregations

AccessLevel (lombok.AccessLevel)2 IdentifierName (lombok.core.configuration.IdentifierName)2 FieldNameConstants (lombok.experimental.FieldNameConstants)2 EclipseNode (lombok.eclipse.EclipseNode)1 JavacNode (lombok.javac.JavacNode)1