suraj1291993

Eclipse - Annotation Processor Exception

Nov 2nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. Annotation Processor Code
  2.  
  3. import com.google.auto.service.AutoService;
  4. import com.squareup.javapoet.JavaFile;
  5. import com.squareup.javapoet.TypeName;
  6. import com.squareup.javapoet.TypeSpec;
  7.  
  8. import javax.annotation.processing.AbstractProcessor;
  9. import javax.annotation.processing.Processor;
  10. import javax.annotation.processing.RoundEnvironment;
  11. import javax.lang.model.SourceVersion;
  12. import javax.lang.model.element.Element;
  13. import javax.lang.model.element.Modifier;
  14. import javax.lang.model.element.TypeElement;
  15. import java.io.IOException;
  16. import java.util.Arrays;
  17. import java.util.HashSet;
  18. import java.util.Set;
  19.  
  20. @AutoService(Processor.class)
  21. public class TestAnnotationProcessor extends AbstractProcessor {
  22. private static String ANNOTATION = TestAnnotation.class.getName();
  23.  
  24. @Override
  25. public Set<String> getSupportedAnnotationTypes() {
  26. return new HashSet<>(Arrays.asList(ANNOTATION));
  27. }
  28.  
  29. @Override
  30. public SourceVersion getSupportedSourceVersion() {
  31. return SourceVersion.latestSupported();
  32. }
  33.  
  34. @Override
  35. public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
  36. boolean match = annotations.stream().anyMatch(e -> e.toString().equals(ANNOTATION));
  37. if (!match) {
  38. return false;
  39. }
  40.  
  41. Set<? extends Element> elementsAnnotatedWith = roundEnv.getElementsAnnotatedWith(TestAnnotation.class);
  42. for (Element element : elementsAnnotatedWith) {
  43. TypeSpec typeSpec = TypeSpec.classBuilder(element.getSimpleName().toString() + "_Impl")
  44. .addSuperinterface(TypeName.get(element.asType()))
  45. .addModifiers(Modifier.PUBLIC)
  46. .build();
  47.  
  48. String packageName = element.getEnclosingElement().toString();
  49. JavaFile javaFile = JavaFile.builder(packageName, typeSpec).build();
  50. try {
  51. javaFile.writeTo(processingEnv.getFiler());
  52. } catch (IOException e) {
  53. throw new RuntimeException(e);
  54. }
  55. }
  56.  
  57. return false;
  58. }
  59. }
  60.  
  61. Annotation
  62.  
  63. import java.lang.annotation.ElementType;
  64. import java.lang.annotation.Retention;
  65. import java.lang.annotation.RetentionPolicy;
  66. import java.lang.annotation.Target;
  67.  
  68. @Target(ElementType.TYPE)
  69. @Retention(RetentionPolicy.CLASS)
  70. public @interface TestAnnotation {
  71.  
  72. }
  73.  
  74.  
  75. Test Code :
  76.  
  77. @TestAnnotation
  78. public interface Mapper {
  79.  
  80. }
  81.  
  82.  
  83. Eclipse Exception Trace
  84.  
  85. Description Resource Path Location Type
  86. java.lang.NullPointerException
  87. at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedFileManager.saveCompilationUnit(GeneratedFileManager.java:1494)
  88. at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedFileManager.generateFileDuringBuild(GeneratedFileManager.java:542)
  89. at org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeJavaSourceOutputStream.close(IdeJavaSourceOutputStream.java:68)
  90. at sun.nio.cs.StreamEncoder.implClose(Unknown Source)
  91. at sun.nio.cs.StreamEncoder.close(Unknown Source)
  92. at java.io.OutputStreamWriter.close(Unknown Source)
  93. at java.io.BufferedWriter.close(Unknown Source)
  94. at java.io.PrintWriter.close(Unknown Source)
  95. at com.squareup.javapoet.JavaFile.$closeResource(JavaFile.java:99)
  96. at com.squareup.javapoet.JavaFile.writeTo(JavaFile.java:117)
  97. at com.test.processor.TestAnnotationProcessor.process(TestAnnotationProcessor.java:57)
  98. at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139)
  99. at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121)
  100. at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)
  101. at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:135)
  102. at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:933)
  103. at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:443)
  104. at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:419)
  105. at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:372)
  106. at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:331)
  107. at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:305)
  108. at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:136)
  109. at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267)
  110. at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195)
  111. at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
  112. at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
  113. at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
  114. at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
  115. at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
  116. at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
  117. at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
  118. at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
  119. at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
  120. at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142)
  121. at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
  122. at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
  123. Mapper.java /TestPOJO/src/com/test line 12 Annotation Problem (Java 6 processor)
Add Comment
Please, Sign In to add comment