2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package org.apidesign.livedb.impl;
8 import java.io.IOException;
11 import javax.annotation.processing.AbstractProcessor;
12 import javax.annotation.processing.Processor;
13 import javax.annotation.processing.RoundEnvironment;
14 import javax.annotation.processing.SupportedAnnotationTypes;
15 import javax.annotation.processing.SupportedSourceVersion;
16 import javax.lang.model.SourceVersion;
17 import javax.lang.model.element.Element;
18 import javax.lang.model.element.PackageElement;
19 import javax.lang.model.element.TypeElement;
20 import javax.tools.JavaFileObject;
21 import org.apidesign.livedb.LiveDB;
22 import org.openide.util.lookup.ServiceProvider;
26 * @author Jaroslav Tulach <jtulach@netbeans.org>
28 @SupportedAnnotationTypes("org.apidesign.livedb.LiveDB")
29 @SupportedSourceVersion(SourceVersion.RELEASE_6)
30 @ServiceProvider(service=Processor.class)
31 public class LiveDBProcessor extends AbstractProcessor {
33 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
34 for (Element e : roundEnv.getElementsAnnotatedWith(LiveDB.class)) {
35 LiveDB db = e.getAnnotation(LiveDB.class);
36 PackageElement pe = (PackageElement)e;
37 String clsName = pe.getQualifiedName().toString() + "." + db.classname();
39 JavaFileObject src = processingEnv.getFiler().createSourceFile(clsName, pe);
40 Writer w = src.openWriter();
41 w.append("package " + pe.getQualifiedName() + ";\n");
42 w.append("class " + db.classname() + " {\n");
43 w.append(" public String " + db.field() + ";\n");
46 } catch (IOException ex) {
47 throw new IllegalStateException(ex);