package io.gitlab.jfronny.gson.compile.processor.core; import io.gitlab.jfronny.gson.compile.processor.core.value.ValueCreator; import javax.annotation.processing.*; import javax.lang.model.util.Elements; import java.util.*; import java.util.stream.Collectors; public abstract class AbstractProcessor2 extends AbstractProcessor { protected Messager message; protected Filer filer; protected ValueCreator valueCreator; protected Elements elements; protected boolean hasManifold = false; @Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); try { Class.forName("manifold.ext.Model"); System.out.println("Detected manifold!"); hasManifold = true; } catch (ClassNotFoundException e) { hasManifold = false; } message = processingEnv.messager; filer = processingEnv.filer; elements = processingEnv.elementUtils; valueCreator = new ValueCreator(processingEnv); } @Override public Set getSupportedAnnotationTypes() { return Optional.ofNullable(this.getClass().getAnnotation(SupportedAnnotationTypes.class)) .map(SupportedAnnotationTypes::value) .map(Set::of) .or(() -> Optional.ofNullable(this.getClass().getAnnotation(SupportedAnnotationTypes2.class)) .map(SupportedAnnotationTypes2::value) .map(Arrays::stream) .map(s -> s.map(Class::getCanonicalName).collect(Collectors.toSet())) ).orElse(Set.of()); } }