@Override public final Artifact generate() { return Artifact.empty(); }
@Override public Artifact generate(Class<?> generator, Iterable<Plugin> pluginList) { return annotationInfo.simpleTypeInfoValue("superclass") .flatMap(SimpleTypeInfo::typeInfo) .map(typeInfo -> generate(generator, pluginList, typeInfo)) .orElse(Artifact.empty()); }
private Artifact methodInfo(TypeInfo typeInfo, MethodInfo methodInfo) { methodInfoList.add(methodInfo); methodInfoListenerSet.forEach(listener -> listener.onMethodInfo(methodInfo)); return Artifact.empty(); }
@Override protected final Artifact generate(PackageInfo packageInfo, Iterable<Plugin> pluginList) { return packageInfo.annotationInfo(annotationType()) .map(this::generatorSupplier) .map(info -> info.generate(getClass(), pluginList)) .orElse(Artifact.empty()); }
private Artifact packageInfo(PackageInfo packageInfo) { packageInfoList.add(ForwardingPackageInfo.of(packageInfo)); packageInfoListenerSet.forEach(listener -> listener.onPackageInfo(packageInfo)); return Artifact.empty(); }
private Artifact typeInfo(TypeInfo typeInfo) { typeInfoMap.put(typeInfo.qualifiedName(), typeInfo); typeInfoListenerSet.forEach(listener -> listener.onTypeInfo(typeInfo)); return Artifact.empty(); }
@Override default Artifact generateArtifact(ProcessingEnvironmentWrapper processingEnv, Element element) { Artifact artifact = Artifact.empty(); Element enclosingElement = element.getEnclosingElement(); if (Apt.isType(enclosingElement)) { TypeInfo typeInfo = TypeInfoTypeElement.wrap(processingEnv, (TypeElement) enclosingElement); TypeParameterInfoMap typeParameterInfoMap = typeInfo.typeParameterInfoMap(); MethodInfo methodInfo; methodInfo = MethodInfoExecutableElement.wrap(processingEnv, (ExecutableElement) element, typeParameterInfoMap); artifact = generate(typeInfo, methodInfo); } return artifact; }