use of javax.lang.model.util.Elements 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());
}
use of javax.lang.model.util.Elements in project qpid-broker-j by apache.
the class ConfiguredObjectRegistrationGenerator method getCategory.
private String getCategory(final TypeElement e) {
Elements elementUtils = processingEnv.getElementUtils();
TypeElement annotationElement = elementUtils.getTypeElement(MANAGED_OBJECT_CANONICAL_NAME);
String category = null;
List<? extends AnnotationMirror> annotationMirrors = e.getAnnotationMirrors();
if (annotationMirrors != null) {
for (AnnotationMirror a : annotationMirrors) {
if (a.getAnnotationType().asElement().equals(annotationElement)) {
category = e.getSimpleName().toString().toLowerCase();
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : a.getElementValues().entrySet()) {
if (entry.getKey().getSimpleName().toString().equals("category")) {
if (!Boolean.TRUE.equals(entry.getValue().getValue())) {
category = null;
}
break;
}
}
break;
}
}
}
if (category == null) {
for (TypeMirror interfaceMirror : e.getInterfaces()) {
category = getCategory((TypeElement) processingEnv.getTypeUtils().asElement(interfaceMirror));
if (category != null) {
break;
}
}
}
if (category == null && e.getSuperclass() != null) {
TypeElement parent = (TypeElement) processingEnv.getTypeUtils().asElement(e.getSuperclass());
if (parent != null) {
category = getCategory(parent);
}
}
return category;
}
use of javax.lang.model.util.Elements in project qpid-broker-j by apache.
the class AttributeAnnotationValidator method isValidType.
static boolean isValidType(ProcessingEnvironment processingEnv, final TypeMirror type, final boolean allowAbstractManagedTypes) {
Types typeUtils = processingEnv.getTypeUtils();
Elements elementUtils = processingEnv.getElementUtils();
Element typeElement = typeUtils.asElement(type);
if (VALID_PRIMITIVE_TYPES.contains(type.getKind())) {
return true;
}
for (TypeKind primitive : VALID_PRIMITIVE_TYPES) {
if (typeUtils.isSameType(type, typeUtils.boxedClass(typeUtils.getPrimitiveType(primitive)).asType())) {
return true;
}
}
if (typeElement != null && typeElement.getKind() == ElementKind.ENUM) {
return true;
}
String className = "org.apache.qpid.server.model.ConfiguredObject";
TypeMirror configuredObjectType = getErasure(processingEnv, className);
if (typeUtils.isAssignable(typeUtils.erasure(type), configuredObjectType)) {
return true;
}
final TypeElement managedAttributeTypeValueElement = elementUtils.getTypeElement(ManagedAttributeValueTypeValidator.MANAGED_ATTRIBUTE_VALUE_TYPE_CLASS_NAME);
if (typeElement != null) {
for (AnnotationMirror annotation : typeElement.getAnnotationMirrors()) {
if (annotation.getAnnotationType().asElement().equals(managedAttributeTypeValueElement)) {
if (allowAbstractManagedTypes) {
return true;
} else {
final Map<? extends ExecutableElement, ? extends AnnotationValue> annotationValues = elementUtils.getElementValuesWithDefaults(annotation);
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> element : annotationValues.entrySet()) {
if ("isAbstract".contentEquals(element.getKey().getSimpleName())) {
return element.getValue().getValue().equals(Boolean.FALSE);
}
}
return false;
}
}
}
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.lang.Object").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.lang.String").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.util.UUID").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.util.Date").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.net.URI").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.security.cert.Certificate").asType())) {
return true;
}
if (typeUtils.isSameType(type, elementUtils.getTypeElement("java.security.Principal").asType())) {
return true;
}
TypeMirror erasedType = typeUtils.erasure(type);
if (typeUtils.isSameType(erasedType, getErasure(processingEnv, "java.util.List")) || typeUtils.isSameType(erasedType, getErasure(processingEnv, "java.util.Set")) || typeUtils.isSameType(erasedType, getErasure(processingEnv, "java.util.Collection"))) {
for (TypeMirror paramType : ((DeclaredType) type).getTypeArguments()) {
if (!isValidType(processingEnv, paramType, allowAbstractManagedTypes)) {
return false;
}
}
return true;
}
if (typeUtils.isSameType(erasedType, getErasure(processingEnv, "java.util.Map"))) {
List<? extends TypeMirror> args = ((DeclaredType) type).getTypeArguments();
if (args.size() != 2) {
throw new IllegalArgumentException("Map types " + type + " must have exactly two type arguments");
}
return isValidType(processingEnv, args.get(0), false) && (isValidType(processingEnv, args.get(1), false) || typeUtils.isSameType(args.get(1), getErasure(processingEnv, "java.lang.Object")));
}
return false;
}
use of javax.lang.model.util.Elements in project qpid-broker-j by apache.
the class AttributeAnnotationValidator 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());
}
use of javax.lang.model.util.Elements in project qpid-broker-j by apache.
the class ContentHeaderAnnotationValidator 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());
}
Aggregations