public JFieldVar getContextField() { if (contextField == null) { contextField = generatedClass.field(PRIVATE, getClasses().CONTEXT, "context" + generationSuffix()); } return contextField; }
private boolean classOrModelClassExists(String className) { Elements elementUtils = environment.getProcessingEnvironment().getElementUtils(); if (className.endsWith(classSuffix())) { className = className.substring(0, className.length() - classSuffix().length()); } return elementUtils.getTypeElement(className) != null; }
@Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); androidAnnotationsEnv = new InternalAndroidAnnotationsEnvironment(processingEnv); ModelConstants.init(androidAnnotationsEnv); // Configure Logger LoggerContext loggerContext = LoggerContext.getInstance(); loggerContext.setEnvironment(androidAnnotationsEnv); try { AndroidAnnotationsPlugin corePlugin = new CorePlugin(); corePlugin.loadVersion(); coreVersion = corePlugin.getVersion(); LOGGER.info("Initialize AndroidAnnotations {} with options {}", coreVersion, processingEnv.getOptions()); List<AndroidAnnotationsPlugin> plugins = loadPlugins(); plugins.add(0, corePlugin); androidAnnotationsEnv.setPlugins(plugins); } catch (Exception e) { LOGGER.error(e, "Can't load plugins"); } }
@Override protected void setInit() { init = generatedClass.method(PRIVATE, getCodeModel().VOID, "init" + generationSuffix()); } }
public String generatedClassQualifiedNameFromQualifiedName(String qualifiedName) { TypeElement type = typeElementFromQualifiedName(qualifiedName); if (type.getNestingKind() == NestingKind.MEMBER) { String parentGeneratedClass = generatedClassQualifiedNameFromQualifiedName(type.getEnclosingElement().asType().toString()); return parentGeneratedClass + "." + type.getSimpleName().toString() + classSuffix(); } else { return qualifiedName + classSuffix(); } }
@Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); androidAnnotationsEnv = new InternalAndroidAnnotationsEnvironment(processingEnv); ModelConstants.init(androidAnnotationsEnv); // Configure Logger LoggerContext loggerContext = LoggerContext.getInstance(); loggerContext.setEnvironment(androidAnnotationsEnv); try { AndroidAnnotationsPlugin corePlugin = new CorePlugin(); corePlugin.loadVersion(); coreVersion = corePlugin.getVersion(); LOGGER.info("Initialize AndroidAnnotations {} with options {}", coreVersion, processingEnv.getOptions()); List<AndroidAnnotationsPlugin> plugins = loadPlugins(); plugins.add(0, corePlugin); androidAnnotationsEnv.setPlugins(plugins); } catch (Exception e) { LOGGER.error(e, "Can't load plugins"); } }
private void setContentView() { contentView = generatedClass.field(PRIVATE, getClasses().VIEW, "contentView" + generationSuffix()); }
if (elementTypeName.endsWith(classSuffix())) { String prefTypeName = elementTypeName.substring(0, elementTypeName.length() - classSuffix().length()); prefTypeName = prefTypeName.replace(classSuffix() + ".", ".");
@Override protected void setInit() { init = generatedClass.method(PRIVATE, getCodeModel().VOID, "init" + generationSuffix()); }
public void componentRegistered(Element element, AndroidManifest androidManifest, boolean printWarning, ElementValidation valid) { TypeElement typeElement = (TypeElement) element; if (typeElement.getModifiers().contains(Modifier.ABSTRACT)) { return; } if (androidManifest.isLibraryProject()) { return; } String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); List<String> componentQualifiedNames = androidManifest.getComponentQualifiedNames(); if (!componentQualifiedNames.contains(generatedComponentQualifiedName)) { String simpleName = typeElement.getSimpleName().toString(); String generatedSimpleName = simpleName + classSuffix(); if (componentQualifiedNames.contains(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component. Please register " + generatedSimpleName + " instead of " + simpleName); } else { if (printWarning) { valid.addWarning("The component " + generatedSimpleName + " is not registered in the AndroidManifest.xml file."); } } } }
private void setAlreadyInflated() { alreadyInflated = generatedClass.field(PRIVATE, getCodeModel().BOOLEAN, "alreadyInflated" + generationSuffix(), JExpr.FALSE); }
@Override public void assignValue(JBlock targetBlock, IJAssignmentTarget fieldRef, EComponentHolder holder, Element element, Element param) { String applicationQualifiedName = param.asType().toString(); AbstractJClass applicationClass = getJClass(applicationQualifiedName + classSuffix()); targetBlock.add(fieldRef.assign(applicationClass.staticInvoke(EApplicationHolder.GET_APPLICATION_INSTANCE))); }
@Override protected void setInit() { init = generatedClass.method(PRIVATE, getCodeModel().VOID, "init" + generationSuffix()); createOnCreate(); }
public JInvocation newBeanOrEBean(DeclaredType beanType, JVar contextVar) { if (beanType.asElement().getAnnotation(EBean.class) != null) { String typeQualifiedName = beanType.toString(); AbstractJClass injectedClass = environment.getJClass(typeQualifiedName + classSuffix()); return injectedClass.staticInvoke(EBeanHolder.GET_INSTANCE_METHOD_NAME).arg(contextVar); } else { return _new(environment.getJClass(beanType.toString())); } }
public JFieldVar getEventManagerField() { if (eventManager == null) { eventManager = getGeneratedClass().field(JMod.PROTECTED, getJClass(RoboGuiceClasses.EVENT_MANAGER), "eventManager" + generationSuffix()); } return eventManager; }
private void createEditorClass() throws JClassAlreadyExistsException { String interfaceSimpleName = annotatedElement.getSimpleName().toString(); editorClass = generatedClass._class(PUBLIC | STATIC | FINAL, interfaceSimpleName + "Editor" + classSuffix()); editorClass._extends(getJClass(EditorHelper.class).narrow(editorClass)); createEditorConstructor(); }
@Override protected void setInit() { init = generatedClass.method(PRIVATE, getCodeModel().VOID, "init" + generationSuffix()); setOnCreate(); }
public void applicationRegistered(Element element, AndroidManifest manifest, ElementValidation valid) { if (manifest.isLibraryProject()) { return; } String applicationClassName = manifest.getApplicationClassName(); if (applicationClassName != null) { TypeElement typeElement = (TypeElement) element; String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); if (!typeElement.getModifiers().contains(Modifier.ABSTRACT) && !applicationClassName.equals(generatedComponentQualifiedName)) { if (applicationClassName.equals(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component." + " Please register " + generatedComponentQualifiedName + " instead of " + componentQualifiedName); } else { valid.addWarning("The component " + generatedComponentQualifiedName + " is not registered in the AndroidManifest.xml file."); } } } else { valid.addError("No application class registered in the AndroidManifest.xml"); } }
private void createAdditionalConstructor() { if (hasFragmentInClasspath()) { fragmentField = addFragmentConstructor(getClasses().FRAGMENT, "fragment" + generationSuffix()); } if (hasAndroidxFragmentInClasspath()) { fragmentSupportField = addFragmentConstructor(getClasses().ANDROIDX_FRAGMENT, "fragmentSupport" + generationSuffix()); } else if (hasFragmentSupportInClasspath()) { fragmentSupportField = addFragmentConstructor(getClasses().SUPPORT_V4_FRAGMENT, "fragmentSupport" + generationSuffix()); } }
private void rebindContextIfBean(Element element, JBlock initIfNonConfigurationNotNullBlock, JFieldVar field) { boolean hasBeanAnnotation = element.getAnnotation(Bean.class) != null; if (hasBeanAnnotation) { TypeMirror elementType = annotationHelper.extractAnnotationClassParameter(element, Bean.class.getName()); if (elementType == null) { elementType = element.asType(); } String typeQualifiedName = elementType.toString(); AbstractJClass fieldGeneratedBeanClass = getJClass(typeQualifiedName + classSuffix()); // do not generate rebind call for singleton beans Element eBeanTypeElement = annotationHelper.getTypeUtils().asElement(elementType); EBean eBean = eBeanTypeElement.getAnnotation(EBean.class); if (eBean != null && eBean.scope() != EBean.Scope.Singleton) { initIfNonConfigurationNotNullBlock.invoke(cast(fieldGeneratedBeanClass, field), "rebind").arg(_this()); } } } }