samples/componentinjection/anagram-modular/src-api-compiletimecaches/org/apidesign/anagram/impl/annotations/WordsProcessor.java
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package org.apidesign.anagram.impl.annotations;
9 import javax.annotation.processing.Processor;
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.lang.model.util.Elements;
17 import org.apidesign.anagram.api.annotations.Words;
18 import org.openide.filesystems.annotations.LayerBuilder.File;
19 import org.openide.filesystems.annotations.LayerGeneratingProcessor;
20 import org.openide.filesystems.annotations.LayerGenerationException;
21 import org.openide.util.lookup.ServiceProvider;
23 /** Compile time caches example. Processor that is triggered
24 * during compilation when a <code>@Words</code> annotations is found.
25 * It generates some declarative registrations, so the annotated object
26 * is found later during runtime, but not instantiated before it is really
29 * @author Jaroslav Tulach <jtulach@netbeans.org>
31 // BEGIN: anagram.api.WordsProcessor
32 @ServiceProvider(service=Processor.class)
33 @SupportedAnnotationTypes("org.apidesign.anagram.api.annotations.Words")
34 @SupportedSourceVersion(SourceVersion.RELEASE_5)
35 public class WordsProcessor extends LayerGeneratingProcessor {
38 protected boolean handleProcess(
39 Set<? extends TypeElement> set, RoundEnvironment env
40 ) throws LayerGenerationException {
41 Elements elements = processingEnv.getElementUtils();
43 for (Element e : env.getElementsAnnotatedWith(Words.class)) {
44 Words w = e.getAnnotation(Words.class);
46 TypeElement te = (TypeElement)e.getEnclosingElement();
47 String teName = elements.getBinaryName(te).toString();
48 // FINISH: anagram.api.WordsProcessor
50 // BEGIN: anagram.api.WordsProcessorLayer
51 File f = layer(e).file(
52 "Services/" + teName.replace('.', '-') + ".instance"
56 "org.apidesign.anagram.impl.annotations.WordsImpl",
61 "org.apidesign.anagram.impl.annotations.WordsImpl"
65 "org.apidesign.anagram.api.WordLibrary"
70 e.getSimpleName().toString()
73 // END: anagram.api.WordsProcessorLayer