@Override public TypeElement asElement() { return ensureDelegateType().asElement(); }
private void setModifiers() { if (isAbstract(this.domainDataType.asElement())) { addModifier(Modifier.ABSTRACT); } }
private Element toElement(MutableDeclaredType type) { Element domainElement = type.asElement(); if (domainElement == null) { TypeMirror fromMutableType = envContext.getProcessingEnv().getTypeUtils().fromMutableType(type); domainElement = ((DeclaredType)fromMutableType).asElement(); } return domainElement; }
List<ExecutableElement> methods = ElementFilter.methodsIn(processingType.asElement().getEnclosedElements());
private boolean hasAbstractMethod(TypeElement processingElement) { List<ExecutableElement> methods = ElementFilter.methodsIn(processingElement.getEnclosedElements()); ElementSorter.sort(methods); for (ExecutableElement method: methods) { if (!MethodHelper.isGetterMethod(method) && !MethodHelper.isSetterMethod(method) && !isObjectMethod(method)) { return true; } if (MethodHelper.isGetterMethod(method) && !ProcessorUtils.hasMethod(MethodHelper.toSetter(method), domainDataType.asElement(), true)) { return true; } } for (TypeMirror interfaceType: processingElement.getInterfaces()) { TypeElement interfaceTypeElement = (TypeElement)((DeclaredType)interfaceType).asElement(); if (hasAbstractMethod(interfaceTypeElement)) { return true; } } return false; } }
public BaseObjectType(MutableDeclaredType dataDefinition, MutableProcessingEnvironment processingEnv) { super(dataDefinition, processingEnv); TypeElement dataElement = dataDefinition.asElement();
public DomainDataInterfaceType(MutableDeclaredType dataDefinition, MutableProcessingEnvironment processingEnv) { super(dataDefinition, processingEnv); Element element = processingEnv.getElementUtils().getTypeElement(dataDefinition.getCanonicalName()); if (getBaseObjects().size() > 1) { processingEnv.getMessager().printMessage(Kind.ERROR, "Multiple base objects interfaces are defined in " + domainDataType + ". You should define only one base object interface!", domainDataType.asElement()); } List<MutableDeclaredType> interfaces = getDataInterfaces(); if (interfaces.size() == 0) { if (new PersistentObjectAccessor(element, processingEnv).isEntity()) { MutableDeclaredType dmainObjectMutableType = processingEnv.getTypeUtils().toMutableType(IMutableDomainObject.class.getName()); interfaces.add(dmainObjectMutableType); } else { interfaces.add(processingEnv.getTypeUtils().toMutableType(Serializable.class)); } } changePackage(dataDefinition.getPackageName() + "." + LocationType.SERVER.getName() + "." + LayerType.MODEL.getName() + "." + ImplementationType.DATA.getName()); setInterfaces(interfaces); setKind(MutableTypeKind.INTERFACE); setDataTypeVariables(); }
@Override protected void processElement(ProcessorContext context) { FormattedPrintWriter pw = context.getPrintWriter(); converterProviderPrinter = getConverterProviderPrinter(pw); TypeElement cachedConverterType = processingEnv.getElementUtils().getTypeElement(BasicCachedConverter.class.getCanonicalName()); ParameterElement[] constructorAdditionalParameters = getParametersResolverProvider().getParameterResolver(UsageType.DEFINITION).getConstructorAditionalParameters(); ConstructorPrinter constructorPrinter = new ConstructorPrinter(context.getOutputType(), processingEnv); constructorPrinter.printConstructors(cachedConverterType, constructorAdditionalParameters); TypeElement superClassElement = context.getOutputType().getSuperClass() != null ? context.getOutputType().getSuperClass().asElement() : null; for (ParameterElement constructorAdditionalParameter: constructorAdditionalParameters) { String parameterName = constructorAdditionalParameter.getName().toString(); if (constructorAdditionalParameter.getPropagationType().equals(PropagationType.PROPAGATED_MUTABLE) && !containsField(superClassElement, constructorAdditionalParameter)) { MutableVariableElement field = processingEnv.getElementUtils().getParameterElement(constructorAdditionalParameter.getType(), parameterName); context.getOutputType().addField((MutableVariableElement) field.addModifier(Modifier.PROTECTED)); MutableExecutableType setterMethod = processingEnv.getTypeUtils().getExecutable( processingEnv.getTypeUtils().toMutableType(processingEnv.getTypeUtils().getNoType(TypeKind.VOID)), MethodHelper.toSetter(parameterName)). addParameter(processingEnv.getElementUtils().getParameterElement(constructorAdditionalParameter.getType(), parameterName)).addModifier(Modifier.PUBLIC); context.getOutputType().addMethod(setterMethod); setterMethod.getPrintWriter().println("this." + parameterName + " = " + parameterName + ";"); } } super.processElement(context); converterProviderPrinter.printConverterMethods(context.getOutputType(), false, ConverterInstancerType.REFERENCED_CONVERTER_INSTANCER); }