1 package com.freemindcafe.apt.sample1;
3 import java.io.IOException;
6 import javax.annotation.processing.AbstractProcessor;
7 import javax.annotation.processing.Filer;
8 import javax.annotation.processing.Messager;
9 import javax.annotation.processing.ProcessingEnvironment;
10 import javax.annotation.processing.RoundEnvironment;
11 import javax.annotation.processing.SupportedAnnotationTypes;
12 import javax.annotation.processing.SupportedSourceVersion;
13 import javax.lang.model.SourceVersion;
14 import javax.lang.model.element.Element;
15 import javax.lang.model.element.TypeElement;
16 import javax.tools.Diagnostic.Kind;
17 import javax.tools.JavaFileObject;
19 @SupportedAnnotationTypes(value= {
"com.freemindcafe.apt.sample1.SillyMe"})
20 @SupportedSourceVersion(SourceVersion.RELEASE_6)
24 private Messager messager;
27 public void init(ProcessingEnvironment env) {
28 filer = env.getFiler();
29 messager = env.getMessager();
33 public boolean process(Set<? extends TypeElement> elements, RoundEnvironment env) {
35 for (Element element : env.getElementsAnnotatedWith(
SillyMe.class)){
38 if (element.getSimpleName().toString().startsWith(
"Silly")) {
44 if (element.getSimpleName().toString().startsWith(
"TestSilly")) {
45 messager.printMessage(Kind.WARNING,
46 "This class name starts with a T!",
50 String sillyClassName =
"Silly" + element.getSimpleName();
51 String sillyClassContent =
53 +
"public class " + sillyClassName +
" {\n"
54 +
" public String foobar;\n"
57 JavaFileObject file = null;
60 file = filer.createSourceFile(
61 "silly/" + sillyClassName,
64 .append(sillyClassContent)
66 }
catch (IOException e) {