Search in sources :

Example 51 with Types

use of javax.lang.model.util.Types in project qpid-broker-j by apache.

the class OperationAnnotationValidator method checkInterfaceExtendsConfiguredObject.

public void checkInterfaceExtendsConfiguredObject(final TypeElement annotationElement, final Element e) {
    Types typeUtils = processingEnv.getTypeUtils();
    TypeMirror configuredObjectType = getErasure("org.apache.qpid.server.model.ConfiguredObject");
    TypeElement parent = (TypeElement) e.getEnclosingElement();
    if (!typeUtils.isAssignable(typeUtils.erasure(parent.asType()), configuredObjectType)) {
        processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "@" + annotationElement.getSimpleName() + " can only be applied to methods within an interface which extends " + configuredObjectType.toString() + " which does not apply to " + parent.asType().toString(), e);
    }
}
Also used : Types(javax.lang.model.util.Types) SupportedAnnotationTypes(javax.annotation.processing.SupportedAnnotationTypes) TypeMirror(javax.lang.model.type.TypeMirror) TypeElement(javax.lang.model.element.TypeElement)

Example 52 with Types

use of javax.lang.model.util.Types in project qpid-broker-j by apache.

the class CompositeTypeConstructorGenerator method getErasure.

private static TypeMirror getErasure(ProcessingEnvironment processingEnv, final String className) {
    final Types typeUtils = processingEnv.getTypeUtils();
    final Elements elementUtils = processingEnv.getElementUtils();
    return typeUtils.erasure(elementUtils.getTypeElement(className).asType());
}
Also used : Types(javax.lang.model.util.Types) Elements(javax.lang.model.util.Elements)

Example 53 with Types

use of javax.lang.model.util.Types in project auto by google.

the class AutoServiceProcessor method checkImplementer.

/**
   * Verifies {@link ServiceProvider} constraints on the concrete provider class.
   * Note that these constraints are enforced at runtime via the ServiceLoader,
   * we're just checking them at compile time to be extra nice to our users.
   */
private boolean checkImplementer(TypeElement providerImplementer, TypeElement providerType) {
    String verify = processingEnv.getOptions().get("verify");
    if (verify == null || !Boolean.valueOf(verify)) {
        return true;
    }
    // TODO: We're currently only enforcing the subtype relationship
    // constraint. It would be nice to enforce them all.
    Types types = processingEnv.getTypeUtils();
    return types.isSubtype(providerImplementer.asType(), providerType.asType());
}
Also used : Types(javax.lang.model.util.Types)

Example 54 with Types

use of javax.lang.model.util.Types in project requery by requery.

the class AttributeMember method checkMemberType.

private void checkMemberType(ProcessingEnvironment processingEnvironment, TypeMirror type, Set<ElementValidator> validators) {
    builderClass = AttributeBuilder.class;
    Types types = processingEnvironment.getTypeUtils();
    isBoolean = type.getKind() == TypeKind.BOOLEAN;
    if (type.getKind() == TypeKind.DECLARED) {
        TypeElement element = (TypeElement) types.asElement(type);
        if (element != null) {
            // only set if the attribute is relational
            if (cardinality != null) {
                isIterable = Mirrors.isInstance(types, element, Iterable.class);
            }
            isMap = Mirrors.isInstance(types, element, Map.class);
            if (isMap && cardinality != null) {
                builderClass = MapAttributeBuilder.class;
            }
            isOptional = Mirrors.isInstance(types, element, Optional.class);
            isBoolean = Mirrors.isInstance(types, element, Boolean.class);
        }
    }
    if (isIterable) {
        ElementValidator validator = validateCollectionType(processingEnvironment);
        if (validator != null) {
            validators.add(validator);
        }
    }
}
Also used : Types(javax.lang.model.util.Types) Optional(java.util.Optional) TypeElement(javax.lang.model.element.TypeElement) Map(java.util.Map)

Example 55 with Types

use of javax.lang.model.util.Types in project RoboBinding by RoboBinding.

the class TypeMirrorWrapperTest method supportedTypeMirrors.

@DataPoints("supportedTypeMirrors")
public static TypeMirrorToWrapped[] supportedTypeMirrors() {
    Types types = compilation.getTypes();
    NoType voidType = types.getNoType(TypeKind.VOID);
    PrimitiveType primitiveType = types.getPrimitiveType(TypeKind.INT);
    Elements elements = compilation.getElements();
    DeclaredType declaredType = (DeclaredType) elements.getTypeElement(Object.class.getName()).asType();
    ArrayType arrayType = types.getArrayType(declaredType);
    return new TypeMirrorToWrapped[] { a(voidType).itsWrapped(WrappedVoidType.class), a(primitiveType).itsWrapped(WrappedPrimitiveType.class), a(declaredType).itsWrapped(WrappedDeclaredType.class), a(arrayType).itsWrapped(WrappedArrayType.class) };
}
Also used : ArrayType(javax.lang.model.type.ArrayType) Types(javax.lang.model.util.Types) NoType(javax.lang.model.type.NoType) PrimitiveType(javax.lang.model.type.PrimitiveType) Elements(javax.lang.model.util.Elements) DeclaredType(javax.lang.model.type.DeclaredType) FromDataPoints(org.junit.experimental.theories.FromDataPoints) DataPoints(org.junit.experimental.theories.DataPoints)

Aggregations

Types (javax.lang.model.util.Types)113 TypeMirror (javax.lang.model.type.TypeMirror)77 TypeElement (javax.lang.model.element.TypeElement)52 Elements (javax.lang.model.util.Elements)48 ExecutableElement (javax.lang.model.element.ExecutableElement)34 Element (javax.lang.model.element.Element)30 SupportedAnnotationTypes (javax.annotation.processing.SupportedAnnotationTypes)27 DeclaredType (javax.lang.model.type.DeclaredType)26 ArrayList (java.util.ArrayList)25 Map (java.util.Map)24 VariableElement (javax.lang.model.element.VariableElement)24 List (java.util.List)21 AnnotationMirror (javax.lang.model.element.AnnotationMirror)20 TypeKind (javax.lang.model.type.TypeKind)18 Set (java.util.Set)16 Collection (java.util.Collection)15 HashMap (java.util.HashMap)13 ElementKind (javax.lang.model.element.ElementKind)13 Modifier (javax.lang.model.element.Modifier)13 IOException (java.io.IOException)12