use of javax.lang.model.util.Types in project requery by requery.
the class AttributeMember method validateCollectionType.
private ElementValidator validateCollectionType(ProcessingEnvironment processingEnvironment) {
Types types = processingEnvironment.getTypeUtils();
TypeElement collectionElement = (TypeElement) types.asElement(typeMirror());
if (collectionElement != null) {
ElementValidator validator = new ElementValidator(collectionElement, processingEnvironment);
if (Mirrors.isInstance(types, collectionElement, List.class)) {
builderClass = ListAttributeBuilder.class;
} else if (Mirrors.isInstance(types, collectionElement, Set.class)) {
builderClass = SetAttributeBuilder.class;
} else if (Mirrors.isInstance(types, collectionElement, Iterable.class)) {
builderClass = ResultAttributeBuilder.class;
} else {
validator.error("Invalid collection type, must be Set, List or Iterable");
}
return validator;
}
return null;
}
use of javax.lang.model.util.Types in project requery by requery.
the class ListenerMethod method process.
@Override
public Set<ElementValidator> process(ProcessingEnvironment processingEnvironment) {
ElementValidator validator = new ElementValidator(element(), processingEnvironment);
annotations = ListenerAnnotations.all().map(this::annotationOf).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());
if (!annotations.isEmpty()) {
ExecutableElement element = element();
if (!element.getParameters().isEmpty()) {
validator.error("Callback method cannot have arguments");
}
if (element.getModifiers().contains(Modifier.PRIVATE)) {
validator.error("Callback method cannot be private");
}
if (element.getModifiers().contains(Modifier.ABSTRACT)) {
validator.error("Callback method cannot be abstract");
}
if (!element.getThrownTypes().isEmpty()) {
Types types = processingEnvironment.getTypeUtils();
for (TypeMirror mirror : element.getThrownTypes()) {
Element exceptionElement = types.asElement(mirror);
if (exceptionElement != null && exceptionElement.getKind() == ElementKind.CLASS) {
TypeElement typeElement = (TypeElement) exceptionElement;
if (!Mirrors.isInstance(types, typeElement, RuntimeException.class)) {
validator.error("Callback method cannot throw checked exception(s)");
}
}
}
}
annotations.stream().filter(annotation -> element().getSimpleName().contentEquals(Names.lowerCaseFirst(annotation.getClass().getSimpleName()))).forEach(annotation -> validator.error("Callback method cannot have the same name as the listener method"));
}
return Collections.singleton(validator);
}
use of javax.lang.model.util.Types in project neo4j by neo4j.
the class ProcedureProcessor method init.
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
Types typeUtils = processingEnv.getTypeUtils();
Elements elementUtils = processingEnv.getElementUtils();
visitedProcedures.clear();
messagePrinter = new MessagePrinter(processingEnv.getMessager());
visitor = new StoredProcedureVisitor(typeUtils, elementUtils, processingEnv.getOptions().containsKey(IGNORE_CONTEXT_WARNINGS));
duplicationPredicate = new DuplicatedProcedureValidator<>(elementUtils, sprocType, ProcedureProcessor::getCustomName);
}
use of javax.lang.model.util.Types in project neo4j by neo4j.
the class UserFunctionProcessor method init.
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
Types typeUtils = processingEnv.getTypeUtils();
Elements elementUtils = processingEnv.getElementUtils();
visitedFunctions.clear();
messagePrinter = new MessagePrinter(processingEnv.getMessager());
visitor = new UserFunctionVisitor(typeUtils, elementUtils, new TypeMirrorUtils(typeUtils, elementUtils));
duplicationPredicate = new DuplicatedProcedureValidator<>(elementUtils, userFunctionType, UserFunctionProcessor::getCustomName);
}
use of javax.lang.model.util.Types in project neo4j by neo4j.
the class RecordTypeVisitorTest method prepare.
@Before
public void prepare() {
Types types = compilation.getTypes();
Elements elements = compilation.getElements();
TypeMirrorUtils typeMirrors = new TypeMirrorUtils(types, elements);
typeMirrorTestUtils = new TypeMirrorTestUtils(compilation);
visitor = new RecordTypeVisitor(types, typeMirrors);
}
Aggregations