public static TypeElement getClassElement(Element element) { if (element instanceof PackageElement) { throw new IllegalArgumentException("Invalid element. A package element can't be used to retrieve a class element"); } else if (element instanceof TypeElement) { return (TypeElement) element; } else { return getClassElement(element.getEnclosingElement()); } }
public static String getClassName(Element element) { TypeElement typeElement = getClassElement(element); return typeElement.getSimpleName().toString(); /* TypeElement typeElement = getClassElement(element); String qualifiedName = typeElement.getQualifiedName().toString(); String packageName = getPackageName(typeElement); if (packageName.isEmpty()) { return qualifiedName; } return qualifiedName.substring(packageName.length() + 1); */ }
public void selectAnnotated(RoundEnvironment env, Types types, AnnotationSelector selector, Map<String, TypeDef> definitions) { for (Object o : env.getElementsAnnotatedWith((TypeElement) types.asElement(annotationMirror(selector)))) { if (o instanceof TypeElement) { TypeDef typeDef = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement((Element) o))) .build(); definitions.put(typeDef.getFullyQualifiedName(), typeDef); } } }
public void selectPackages(Elements elements, PackageSelector selector, Map<String, TypeDef> definitions) { Pattern pattern = Pattern.compile(selector.pattern()); PackageElement packageElement = elements.getPackageElement(selector.value()); List<TypeElement> typeElements = new ArrayList<>(); if (packageElement != null) { for (Element e : packageElement.getEnclosedElements()) { if (e instanceof TypeElement) { typeElements.add((TypeElement) e); } } } else { TypeElement e = elements.getTypeElement(selector.value()); if (e != null) { typeElements.add(e); } } for (TypeElement typeElement : typeElements) { TypeDef typeDef = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(typeElement))) .build(); Matcher m = pattern.matcher(typeDef.getName()); if (m.matches()) { definitions.put(typeDef.getFullyQualifiedName(), typeDef); } } }
TypeDef def = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(element))) .build();
Buildable buildable = element.getAnnotation(Buildable.class); BuilderContext ctx = BuilderContextManager.create(elements, buildable.generateBuilderPackage(), buildable.builderPackage()); ctx.getRepository().register(ModelUtils.getClassElement(element)); for (TypeElement ref : BuilderUtils.getBuildableReferences(ctx, buildable)) { ctx.getRepository().register(ModelUtils.getClassElement(ref)); Buildable buildable = element.getAnnotation(Buildable.class); BuilderContext ctx = BuilderContextManager.create(elements, buildable.generateBuilderPackage(), buildable.builderPackage()); JavaClazz clazz = ctx.getToClazz().apply(ModelUtils.getClassElement(element)); generateLocalDependenciesIfNeeded(); try {
ctx.getRepository().register(ModelUtils.getClassElement(ref)); JavaClazz clazz = ctx.getToClazz().apply(ModelUtils.getClassElement(typeElement)); generateLocalDependenciesIfNeeded(); try {
TypeDef b = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(typeElement))) .addToAttributes(EXTERNAL_BUILDABLE, generated) .addToAttributes(EDIATABLE_ENABLED, generated.editableEnabled()) TypeDef r = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(ref))) .addToAttributes(EXTERNAL_BUILDABLE, generated) .addToAttributes(EDIATABLE_ENABLED, generated.editableEnabled())
TypeDef b = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(element))) .addToAttributes(BUILDABLE, buildable) .addToAttributes(EDIATABLE_ENABLED, buildable.editableEnabled()) TypeDef r = new TypeDefBuilder(ElementTo.TYPEDEF.apply(ModelUtils.getClassElement(ref))) .addToAttributes(BUILDABLE, buildable) .addToAttributes(EDIATABLE_ENABLED, buildable.editableEnabled())