1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/livedb/src/org/apidesign/livedb/impl/LiveDBProcessor.java Tue Jun 01 12:08:47 2010 +0200
1.3 @@ -0,0 +1,53 @@
1.4 +/*
1.5 + * To change this template, choose Tools | Templates
1.6 + * and open the template in the editor.
1.7 + */
1.8 +
1.9 +package org.apidesign.livedb.impl;
1.10 +
1.11 +import java.io.IOException;
1.12 +import java.io.Writer;
1.13 +import java.util.Set;
1.14 +import javax.annotation.processing.AbstractProcessor;
1.15 +import javax.annotation.processing.Processor;
1.16 +import javax.annotation.processing.RoundEnvironment;
1.17 +import javax.annotation.processing.SupportedAnnotationTypes;
1.18 +import javax.annotation.processing.SupportedSourceVersion;
1.19 +import javax.lang.model.SourceVersion;
1.20 +import javax.lang.model.element.Element;
1.21 +import javax.lang.model.element.PackageElement;
1.22 +import javax.lang.model.element.TypeElement;
1.23 +import javax.tools.JavaFileObject;
1.24 +import org.apidesign.livedb.LiveDB;
1.25 +import org.openide.util.lookup.ServiceProvider;
1.26 +
1.27 +/**
1.28 + *
1.29 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.30 + */
1.31 +@SupportedAnnotationTypes("org.apidesign.livedb.LiveDB")
1.32 +@SupportedSourceVersion(SourceVersion.RELEASE_6)
1.33 +@ServiceProvider(service=Processor.class)
1.34 +public class LiveDBProcessor extends AbstractProcessor {
1.35 + @Override
1.36 + public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
1.37 + for (Element e : roundEnv.getElementsAnnotatedWith(LiveDB.class)) {
1.38 + LiveDB db = e.getAnnotation(LiveDB.class);
1.39 + PackageElement pe = (PackageElement)e;
1.40 + String clsName = pe.getQualifiedName().toString() + "." + db.classname();
1.41 + try {
1.42 + JavaFileObject src = processingEnv.getFiler().createSourceFile(clsName, pe);
1.43 + Writer w = src.openWriter();
1.44 + w.append("package " + pe.getQualifiedName() + ";\n");
1.45 + w.append("class " + db.classname() + " {\n");
1.46 + w.append(" public String " + db.field() + ";\n");
1.47 + w.append("}");
1.48 + w.close();
1.49 + } catch (IOException ex) {
1.50 + throw new IllegalStateException(ex);
1.51 + }
1.52 + }
1.53 + return true;
1.54 + }
1.55 +
1.56 +}