use of org.androidannotations.handler.AnnotationHandler in project androidannotations by androidannotations.
the class RoboGuicePlugin method getHandlers.
@Override
public List<AnnotationHandler<?>> getHandlers(AndroidAnnotationsEnvironment androidAnnotationEnv) {
List<AnnotationHandler<?>> annotationHandlers = new ArrayList<>();
annotationHandlers.add(new RoboGuiceHandler(androidAnnotationEnv));
return annotationHandlers;
}
use of org.androidannotations.handler.AnnotationHandler in project androidannotations by androidannotations.
the class OrmLitePlugin method getHandlers.
@Override
public List<AnnotationHandler<?>> getHandlers(AndroidAnnotationsEnvironment androidAnnotationEnv) {
List<AnnotationHandler<?>> annotationHandlers = new ArrayList<>();
annotationHandlers.add(new OrmLiteDaoHandler(androidAnnotationEnv));
return annotationHandlers;
}
use of org.androidannotations.handler.AnnotationHandler in project androidannotations by androidannotations.
the class AnnotationHandlers method getSupportedAnnotationTypes.
public Set<String> getSupportedAnnotationTypes() {
if (supportedAnnotationNames == null) {
Set<String> annotationNames = new HashSet<>();
for (AnnotationHandler annotationHandler : annotationHandlers) {
annotationNames.add(annotationHandler.getTarget());
}
supportedAnnotationNames = Collections.unmodifiableSet(annotationNames);
}
return supportedAnnotationNames;
}
use of org.androidannotations.handler.AnnotationHandler in project androidannotations by androidannotations.
the class RestSpringPlugin method getHandlers.
@Override
public List<AnnotationHandler<?>> getHandlers(AndroidAnnotationsEnvironment androidAnnotationEnv) {
List<AnnotationHandler<?>> annotationHandlers = new ArrayList<>();
annotationHandlers.add(new RestHandler(androidAnnotationEnv));
annotationHandlers.add(new FieldHandler(androidAnnotationEnv));
annotationHandlers.add(new PartHandler(androidAnnotationEnv));
annotationHandlers.add(new BodyHandler(androidAnnotationEnv));
annotationHandlers.add(new GetHandler(androidAnnotationEnv));
annotationHandlers.add(new PostHandler(androidAnnotationEnv));
annotationHandlers.add(new PutHandler(androidAnnotationEnv));
annotationHandlers.add(new PatchHandler(androidAnnotationEnv));
annotationHandlers.add(new DeleteHandler(androidAnnotationEnv));
annotationHandlers.add(new HeadHandler(androidAnnotationEnv));
annotationHandlers.add(new OptionsHandler(androidAnnotationEnv));
annotationHandlers.add(new PathHandler(androidAnnotationEnv));
annotationHandlers.add(new HeaderHandler(androidAnnotationEnv));
annotationHandlers.add(new HeadersHandler(androidAnnotationEnv));
annotationHandlers.add(new RestServiceHandler(androidAnnotationEnv));
return annotationHandlers;
}
use of org.androidannotations.handler.AnnotationHandler in project androidannotations by androidannotations.
the class ModelProcessor method process.
@SuppressWarnings({ "unchecked", "rawtypes" })
public ProcessResult process(AnnotationElements validatedModel) throws Exception {
ProcessHolder processHolder = new ProcessHolder(environment.getProcessingEnvironment());
environment.setProcessHolder(processHolder);
LOGGER.info("Processing root elements");
/*
* We generate top classes then inner classes, then inner classes of
* inner classes, etc... until there is no more classes to generate.
*/
while (generateElements(validatedModel, processHolder)) {
// CHECKSTYLE:OFF
;
// CHECKSTYLE:ON
}
LOGGER.info("Processing enclosed elements");
for (AnnotationHandler annotationHandler : environment.getDecoratingHandlers()) {
if (!annotationHandler.isEnabled()) {
continue;
}
String annotationName = annotationHandler.getTarget();
/*
* For ancestors, the annotationHandler manipulates the annotated
* elements, but uses the holder for the root element
*/
Set<AnnotatedAndRootElements> ancestorAnnotatedElements = validatedModel.getAncestorAnnotatedElements(annotationName);
if (!ancestorAnnotatedElements.isEmpty()) {
LOGGER.debug("Processing enclosed elements with {}: {}", annotationHandler.getClass().getSimpleName(), ancestorAnnotatedElements);
}
for (AnnotatedAndRootElements elements : ancestorAnnotatedElements) {
GeneratedClassHolder holder = processHolder.getGeneratedClassHolder(elements.rootTypeElement);
/*
* Annotations coming from ancestors may be applied to root
* elements that are not validated, and therefore not available.
*/
if (holder != null) {
processThrowing(annotationHandler, elements.annotatedElement, holder);
}
}
Set<? extends Element> rootAnnotatedElements = validatedModel.getRootAnnotatedElements(annotationName);
for (Element annotatedElement : rootAnnotatedElements) {
Element enclosingElement;
if (annotatedElement instanceof TypeElement) {
enclosingElement = annotatedElement;
} else {
enclosingElement = annotatedElement.getEnclosingElement();
/*
* we are processing a method parameter
*/
if (enclosingElement instanceof ExecutableElement) {
enclosingElement = enclosingElement.getEnclosingElement();
}
}
/*
* We do not generate code for elements belonging to abstract
* classes, because the generated classes are final anyway
*/
if (!isAbstractClass(enclosingElement)) {
GeneratedClassHolder holder = processHolder.getGeneratedClassHolder(enclosingElement);
/*
* The holder can be null if the annotated holder class is
* already invalidated.
*/
if (holder != null) {
processThrowing(annotationHandler, annotatedElement, holder);
}
} else {
LOGGER.trace("Skip element {} because enclosing element {} is abstract", annotatedElement, enclosingElement);
}
}
}
return new //
ProcessResult(//
processHolder.codeModel(), processHolder.getOriginatingElements());
}
Aggregations