Skip to content

Commit

Permalink
Resolves #8
Browse files Browse the repository at this point in the history
  • Loading branch information
ralscha committed Jan 27, 2016
1 parent d722574 commit ada1542
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions src/main/java/ch/rasc/bsoncodec/CodecAnnotationProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedOptions;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
Expand All @@ -47,12 +48,19 @@
@AutoService(Processor.class)
@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedOptions({ "generateCodecProvider" })
public class CodecAnnotationProcessor extends AbstractProcessor {

@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {

String option = this.processingEnv.getOptions().get("generateCodecProvider");
boolean generateCodecProvider = true;
if (option != null && !option.trim().isEmpty()) {
generateCodecProvider = Boolean.valueOf(option);
}

// this.processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE,
// "Running " + getClass().getSimpleName());

Expand Down Expand Up @@ -119,21 +127,23 @@ public boolean process(Set<? extends TypeElement> annotations,
}

// Create Codec Providers
try {
for (Map.Entry<String, List<CodecInfo>> providerInfo : codecInfosPerProvider
.entrySet()) {
ProviderCodeGenerator codeGenerator = new ProviderCodeGenerator(
providerInfo.getKey(), providerInfo.getValue());
JavaFileObject jfo = this.processingEnv.getFiler()
.createSourceFile(codeGenerator.getFullyQualifiedName());
try (Writer writer = jfo.openWriter()) {
codeGenerator.generate(writer);
if (generateCodecProvider) {
try {
for (Map.Entry<String, List<CodecInfo>> providerInfo : codecInfosPerProvider
.entrySet()) {
ProviderCodeGenerator codeGenerator = new ProviderCodeGenerator(
providerInfo.getKey(), providerInfo.getValue());
JavaFileObject jfo = this.processingEnv.getFiler()
.createSourceFile(codeGenerator.getFullyQualifiedName());
try (Writer writer = jfo.openWriter()) {
codeGenerator.generate(writer);
}
}
}
}
catch (IOException e) {
this.processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
e.getMessage());
catch (IOException e) {
this.processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
e.getMessage());
}
}

return false;
Expand Down

0 comments on commit ada1542

Please sign in to comment.