mirror of
https://github.com/ethauvin/version-processor.git
synced 2025-04-24 23:47:11 -07:00
Generate the file.
This commit is contained in:
parent
72ed28c902
commit
7bc705da95
1 changed files with 48 additions and 4 deletions
|
@ -1,26 +1,70 @@
|
||||||
package com.beust.apt.processor;
|
package com.beust.apt.processor;
|
||||||
|
|
||||||
import javax.annotation.processing.AbstractProcessor;
|
import javax.annotation.processing.*;
|
||||||
import javax.annotation.processing.RoundEnvironment;
|
|
||||||
import javax.lang.model.SourceVersion;
|
import javax.lang.model.SourceVersion;
|
||||||
|
import javax.lang.model.element.Element;
|
||||||
|
import javax.lang.model.element.ElementKind;
|
||||||
|
import javax.lang.model.element.PackageElement;
|
||||||
import javax.lang.model.element.TypeElement;
|
import javax.lang.model.element.TypeElement;
|
||||||
|
import javax.lang.model.util.Elements;
|
||||||
|
import javax.lang.model.util.Types;
|
||||||
|
import javax.tools.JavaFileObject;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class MainProcessor extends AbstractProcessor {
|
public class MainProcessor extends AbstractProcessor {
|
||||||
|
private Types typeUtils;
|
||||||
|
private Elements elementUtils;
|
||||||
|
private Filer filer;
|
||||||
|
private Messager messager;
|
||||||
|
|
||||||
public MainProcessor() {
|
public MainProcessor() {
|
||||||
System.out.println("Instantiating MainProcessor");
|
System.out.println("Instantiating MainProcessor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void init(ProcessingEnvironment processingEnv) {
|
||||||
|
super.init(processingEnv);
|
||||||
|
typeUtils = processingEnv.getTypeUtils();
|
||||||
|
elementUtils = processingEnv.getElementUtils();
|
||||||
|
filer = processingEnv.getFiler();
|
||||||
|
messager = processingEnv.getMessager();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
||||||
System.out.println("Processing annotations $annotations");
|
for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(Version.class)) {
|
||||||
|
Version version = annotatedElement.getAnnotation(Version.class);
|
||||||
|
if (annotatedElement.getKind() == ElementKind.CLASS) {
|
||||||
|
Element enclosing = annotatedElement.getEnclosingElement();
|
||||||
|
if (enclosing.getKind() == ElementKind.PACKAGE) {
|
||||||
|
PackageElement packageElement = (PackageElement) enclosing;
|
||||||
|
String packageName = packageElement.getQualifiedName().toString();
|
||||||
|
JavaFileObject jfo = null;
|
||||||
|
try {
|
||||||
|
System.out.println("version = " + version.value());
|
||||||
|
jfo = filer.createSourceFile(packageName + ".GeneratedVersion");
|
||||||
|
BufferedWriter writer = new BufferedWriter(jfo.openWriter());
|
||||||
|
writer.write("package " + packageName + ";\n\n");
|
||||||
|
writer.write("public class GeneratedVersion {\n");
|
||||||
|
writer.write(" public static final String VERSION = \"" + version.value() + "\";\n");
|
||||||
|
writer.write("}\n");
|
||||||
|
writer.close();
|
||||||
|
System.out.println("Generated " + jfo.getName());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getSupportedAnnotationTypes() {
|
public Set<String> getSupportedAnnotationTypes() {
|
||||||
Set<String> result = new HashSet<>();
|
Set<String> result = new HashSet<>();
|
||||||
result.add("Version");
|
result.add(Version.class.getCanonicalName());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue