private void compile(Class<? extends AbstractProcessor> processorClass, List<String> classes) throws IOException {
List<String> options = new ArrayList<String>();
options.add("-s");
options.add("src/test/java");
options.add("-proc:only");
options.add("-processor");
options.add(processorClass.getName());
options.add("-sourcepath");
options.add("src/test/java");
options.addAll(getAPTOptions());
options.addAll(classes);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream err = new ByteArrayOutputStream();
int compilationResult = compiler.run(null, out, err, options.toArray(new String[options.size()]));
// Processor.elementCache.clear();
if (compilationResult != 0) {
Assert.fail("Compilation Failed:\n " + new String(err.toByteArray(), "UTF-8"));
}
}
java类javax.annotation.processing.AbstractProcessor的实例源码
RestControllerProcessorTest.java 文件源码
项目:spring-web-api-test-stubber
阅读 24
收藏 0
点赞 0
评论 0
IjarTests.java 文件源码
项目:bazel
阅读 27
收藏 0
点赞 0
评论 0
/**
* Test that the ijar tool preserves EnclosingMethod attributes and doesn't
* prevent annotation processors from accessing all the elements in a package.
*/
@Test
public void testEnclosingMethod() throws IOException {
JavaCompiler.CompilationTask task = makeCompilationTask("third_party/ijar/test/package-info.java");
task.setProcessors(Arrays.asList(new AbstractProcessor() {
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
roundEnv.getElementsAnnotatedWith(java.lang.Override.class);
return true;
}
}));
if (!task.call()) {
fail(getFailedCompilationMessage());
}
}
MetaApiInfoClassGenerator.java 文件源码
项目:atlas-deer
阅读 25
收藏 0
点赞 0
评论 0
public boolean generateInfoClasses(AbstractProcessor processor, List<Class<?>> sourceClasses)
throws Exception {
ImmutableSet<? extends AbstractProcessor> processors = ImmutableSet.of(processor);
List<Diagnostic<? extends JavaFileObject>> diagnostics = compileWithProcessors(
sourceClasses,
processors
);
boolean failed = false;
for (Diagnostic<?> diagnostic : diagnostics) {
failed = failed | (diagnostic.getKind().equals(Kind.ERROR));
System.out.println(String.format("[%s] %s [%s,%s]",
diagnostic.getKind(), diagnostic.getMessage(Locale.getDefault()),
diagnostic.getLineNumber(), diagnostic.getColumnNumber()
));
}
return failed;
}
FieldNameProcessorTest.java 文件源码
项目:atlas-deer
阅读 23
收藏 0
点赞 0
评论 0
@Test
public void testModelInfoClassGeneration() throws Exception {
AbstractProcessor fieldNameProcessor = createFieldNameProcessor(outputClasses);
// TODO hacky - can this be avoided?
MetaApiInfoClassGenerator.addPath("./src/test/java/");
boolean hasFailed = generator.generateInfoClasses(fieldNameProcessor, sourceClasses);
assertFalse("generation of model info classes failed", hasFailed);
File file;
for (Class<?> outputClass : outputClasses) {
file = new File(filePathFrom(outputClass));
assertTrue("file "
+ outputClass.getSimpleName()
+ "Info.java should exist but does not", file.exists());
}
}
FieldNameProcessorTest.java 文件源码
项目:atlas-deer
阅读 22
收藏 0
点赞 0
评论 0
private AbstractProcessor createFieldNameProcessor(Iterable<Class<?>> classesToOutput) {
SourceGenerator<ModelTypeInfo, ModelMethodInfo> classGenerator = new ModelClassInfoSourceGenerator();
HierarchyExtractor hierarchyExtractor = new ReflectionBasedHierarchyExtractor();
SourceFileWriter<ModelTypeInfo> writer = new JavaxSourceFileWriter<>();
TypeParser<ModelTypeInfo, ModelMethodInfo> typeParser = new ModelTypeParser(
javadocParser,
classesToOutput
);
return new FieldNameProcessor(
classGenerator,
hierarchyExtractor,
writer,
typeParser,
classesToOutput
);
}
ProducesTypeProcessorTest.java 文件源码
项目:atlas-deer
阅读 22
收藏 0
点赞 0
评论 0
@Test
public void testModelInfoClassGeneration() throws Exception {
AbstractProcessor fieldNameProcessor = createFieldNameProcessor(sourceClasses);
// TODO hacky - can this be avoided?
MetaApiInfoClassGenerator.addPath("./src/test/java/");
boolean hasFailed = generator.generateInfoClasses(fieldNameProcessor, sourceClasses);
assertFalse("generation of model info classes failed", hasFailed);
File file;
for (Class<?> outputClass : sourceClasses) {
file = new File(filePathFrom(outputClass));
assertTrue("file "
+ outputClass.getSimpleName()
+ "EndpointInfo.java should exist but does not", file.exists());
}
}
ResolveHarness.java 文件源码
项目:openjdk-jdk10
阅读 22
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"--should-stop:at=ATTR",
"--debug:verboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
ResolveHarness.java 文件源码
项目:openjdk9
阅读 20
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"-XDshouldStopPolicy=ATTR",
"-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
AnnotationProcessor.java 文件源码
项目:lombok-ianchiu
阅读 35
收藏 0
点赞 0
评论 0
private static AbstractProcessor createWrappedInstance() {
ClassLoader cl = Main.createShadowClassLoader();
try {
Class<?> mc = cl.loadClass("lombok.core.AnnotationProcessor");
return (AbstractProcessor) mc.newInstance();
} catch (Throwable t) {
if (t instanceof Error) throw (Error) t;
if (t instanceof RuntimeException) throw (RuntimeException) t;
throw new RuntimeException(t);
}
}
ResolveHarness.java 文件源码
项目:lookaside_java-1.8.0-openjdk
阅读 24
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"-XDshouldStopPolicy=ATTR",
"-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
ResolveHarness.java 文件源码
项目:jsr308-langtools
阅读 20
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"-XDshouldStopPolicy=ATTR",
"-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
AnnotationProcessor.java 文件源码
项目:EasyMPermission
阅读 28
收藏 0
点赞 0
评论 0
private static AbstractProcessor createWrappedInstance() {
ClassLoader cl = Main.createShadowClassLoader();
try {
Class<?> mc = cl.loadClass("lombok.core.AnnotationProcessor");
return (AbstractProcessor) mc.newInstance();
} catch (Throwable t) {
if (t instanceof Error) throw (Error) t;
if (t instanceof RuntimeException) throw (RuntimeException) t;
throw new RuntimeException(t);
}
}
ResolveHarness.java 文件源码
项目:infobip-open-jdk-8
阅读 22
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"-XDshouldStopPolicy=ATTR",
"-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
ResolveHarness.java 文件源码
项目:OLD-OpenJDK8
阅读 26
收藏 0
点赞 0
评论 0
protected void check() throws Exception {
String[] options = {
"-XDshouldStopPolicy=ATTR",
"-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
};
AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
@SuppressWarnings("unchecked")
DiagnosticListener<? super JavaFileObject>[] diagListeners =
new DiagnosticListener[] { new DiagnosticHandler(false), new DiagnosticHandler(true) };
for (int i = 0 ; i < options.length ; i ++) {
JavacTask ct = (JavacTask)comp.getTask(null, fm, diagListeners[i],
Arrays.asList(options[i]), null, Arrays.asList(jfo));
if (processors[i] != null) {
ct.setProcessors(Collections.singleton(processors[i]));
}
ct.analyze();
}
//check diags
for (Diagnostic<? extends JavaFileObject> diag : diags) {
for (DiagnosticProcessor proc : diagProcessors) {
if (proc.matches(diag)) {
proc.process(diag);
break;
}
}
}
//check all candidates have been used up
for (Map.Entry<ElementKey, Candidate> entry : candidatesMap.entrySet()) {
if (!seenCandidates.contains(entry.getKey())) {
error("Redundant @Candidate annotation on method " + entry.getKey().elem + " sig = " + entry.getKey().elem.asType());
}
}
}
Utils.java 文件源码
项目:vertx-codegen
阅读 21
收藏 0
点赞 0
评论 0
static void assertProcess(BiConsumer<ProcessingEnvironment, RoundEnvironment> test) {
File f = null;
try {
f = Files.createTempFile("test", ".java").toFile();
try (PrintWriter writer = new PrintWriter(f)) {
writer.print("class Empty {}");
}
} catch (IOException e) {
throw new AssertionError(e);
}
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, Locale.getDefault(), Charset.defaultCharset());
JavaCompiler.CompilationTask task = compiler.getTask(new PrintWriter(System.out),
fileManager,
diagnostics,
Collections.singletonList("-proc:only"),
Collections.emptyList(),
fileManager.getJavaFileObjectsFromFiles(Collections.singletonList(f)));
task.setLocale(Locale.getDefault());
task.setProcessors(Collections.singleton(new AbstractProcessor() {
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
test.accept(processingEnv, roundEnv);
return true;
}
}));
assertTrue(task.call());
}
BaseProcessorTest.java 文件源码
项目:vertx-docgen
阅读 24
收藏 0
点赞 0
评论 0
@Test
public void testGen() throws Exception {
AtomicInteger count = new AtomicInteger();
AbstractProcessor proc = new AbstractProcessor() {
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (count.getAndIncrement() == 0) {
try {
Filer filer = processingEnv.getFiler();
Element elt = processingEnv.getElementUtils().getTypeElement("gen.GeneratedClass");
JavaFileObject src = filer.createSourceFile("io.vertx.test.gen.GeneratedClass", elt);
try (Writer writer = src.openWriter()) {
writer.append("package io.vertx.test.gen;\npublic class GeneratedClass {\n}");
}
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
};
Compiler<TestGenProcessor> compiler = buildCompiler(new TestGenProcessor(), "io.vertx.test.gen");
compiler.addProcessor(proc);
compiler.assertCompile();
assertEquals(3, count.get());
}
PostEnterTaskListenerTest.java 文件源码
项目:buck
阅读 22
收藏 0
点赞 0
评论 0
@Test
public void testCallbackIssuedAfterEnterWithAPs() throws IOException {
// We add an unrelated source file here to make the compiler do something
compiler.addSourceFileContents("Bar.java", "class Bar { }");
compiler.setProcessors(
ImmutableList.of(
new AbstractProcessor() {
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public boolean process(
Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (roundEnv.processingOver()) {
Filer filer = processingEnv.getFiler();
// We wait until the last possible momemt to generate Foo; if the callback is able to
// get an element for it, that means it ran after the enter phase
try (OutputStream outputStream =
filer.createSourceFile("Foo").openOutputStream()) {
outputStream.write("class Foo { }".getBytes());
} catch (IOException e) {
throw new AssertionError(e);
}
}
return false;
}
}));
addCallback("callback");
compiler.compile();
assertThat(callbacksIssued, Matchers.contains("callback: Bar, Foo"));
}
MetaApiInfoClassGenerator.java 文件源码
项目:atlas-deer
阅读 24
收藏 0
点赞 0
评论 0
private List<Diagnostic<? extends JavaFileObject>> compileWithProcessors(
Iterable<Class<?>> classes,
ImmutableSet<? extends AbstractProcessor> processors) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
diagnosticCollector,
DEFAULT_LOCALE,
DEFAULT_CHARSET
);
Iterable<? extends JavaFileObject> sourceCompilationUnits = transformToCompilationUnits(
classes,
fileManager
);
CompilationTask task = compiler.getTask(new OutputStreamWriter(System.out),
fileManager, diagnosticCollector,
Arrays.asList(
"-proc:only",
"-s", "./src/main/java"
),
null,
sourceCompilationUnits
);
task.setProcessors(processors);
task.call();
try {
fileManager.close();
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
return diagnosticCollector.getDiagnostics();
}
ProducesTypeProcessorTest.java 文件源码
项目:atlas-deer
阅读 24
收藏 0
点赞 0
评论 0
private AbstractProcessor createFieldNameProcessor(Iterable<Class<?>> classesToOutput) {
SourceGenerator<EndpointTypeInfo, EndpointMethodInfo> classGenerator = new EndpointClassInfoSourceGenerator();
SourceFileWriter<EndpointTypeInfo> writer = new JavaxSourceFileWriter<>();
TypeParser<EndpointTypeInfo, EndpointMethodInfo> typeParser = new EndpointTypeParser(
javadocParser);
return new ControllerAnnotationProcessor(
classGenerator,
writer,
typeParser,
classesToOutput
);
}
ElasticSearchDocumentAnnotationProcessorTest.java 文件源码
项目:elasticsearch-annotations
阅读 22
收藏 0
点赞 0
评论 0
private JavaCompiler.CompilationTask processAnnotations(String[] testSourceFileNames, ElasticSearchDocumentAnnotationProcessor annotationProcessor) throws URISyntaxException {
// Get an instance of java compiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Get a new instance of the standard file manager implementation
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
// Get the list of java file objects, in this case we have only
// one file, TestClass.java
// http://stackoverflow.com/a/676102/693752
List<File> listSourceFiles = new ArrayList<>();
for (String sourceFileName : testSourceFileNames) {
URL filename = ClassLoader.getSystemResource(sourceFileName);
listSourceFiles.add(new File(filename.toURI()));
}
Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(listSourceFiles);
// Create the compilation task
List<String> options = new ArrayList<>(Arrays.asList("-d", sandBoxDir.getAbsolutePath()));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, compilationUnits1);
if (annotationProcessor != null) {
// Create a list to hold annotation processors
LinkedList<AbstractProcessor> processors = new LinkedList<AbstractProcessor>();
// Add an annotation processor to the list
processors.add(annotationProcessor);
// Set the annotation processor to the compiler task
task.setProcessors(processors);
}
return task;
}
ElasticSearchTypeAnnotationProcessorTest.java 文件源码
项目:elasticsearch-annotations
阅读 22
收藏 0
点赞 0
评论 0
private JavaCompiler.CompilationTask processAnnotations(String[] testSourceFileNames, ElasticSearchTypeAnnotationProcessor annotationProcessor) throws URISyntaxException {
// Get an instance of java compiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Get a new instance of the standard file manager implementation
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
// Get the list of java file objects, in this case we have only
// one file, TestClass.java
// http://stackoverflow.com/a/676102/693752
List<File> listSourceFiles = new ArrayList<>();
for (String sourceFileName : testSourceFileNames) {
URL filename = ClassLoader.getSystemResource(sourceFileName);
listSourceFiles.add(new File(filename.toURI()));
}
Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(listSourceFiles);
// Create the compilation task
List<String> options = new ArrayList<>(Arrays.asList("-d", sandBoxDir.getAbsolutePath()));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, compilationUnits1);
if (annotationProcessor != null) {
// Create a list to hold annotation processors
LinkedList<AbstractProcessor> processors = new LinkedList<AbstractProcessor>();
// Add an annotation processor to the list
processors.add(annotationProcessor);
// Set the annotation processor to the compiler task
task.setProcessors(processors);
}
return task;
}
AnnotationProcessorWrapperTest.java 文件源码
项目:annotation-processor-toolkit
阅读 21
收藏 0
点赞 0
评论 0
@Test
public void testWrappedInitCall() {
AbstractProcessor processorSpy = Mockito.spy(AbstractProcessor.class);
Messager messager = Mockito.spy(Messager.class);
ProcessingEnvironment processingEnvironment = Mockito.spy(ProcessingEnvironment.class);
Mockito.when(processingEnvironment.getMessager()).thenReturn(messager);
Processor unit = AnnotationProcessorWrapper.wrapProcessor(processorSpy);
unit.init(processingEnvironment);
Mockito.verify(processorSpy).init(processingEnvironment);
}
AnnotationProcessorWrapperTest.java 文件源码
项目:annotation-processor-toolkit
阅读 21
收藏 0
点赞 0
评论 0
@Test
public void testWrappedProcessCall() {
AbstractProcessor processorSpy = Mockito.spy(AbstractProcessor.class);
Messager messager = Mockito.spy(Messager.class);
ProcessingEnvironment processingEnvironment = Mockito.spy(ProcessingEnvironment.class);
Mockito.when(processingEnvironment.getMessager()).thenReturn(messager);
Processor unit = AnnotationProcessorWrapper.wrapProcessor(processorSpy);
unit.init(processingEnvironment);
Set<? extends TypeElement> set = new HashSet<TypeElement>();
RoundEnvironment roundEnvironment = Mockito.mock(RoundEnvironment.class);
unit.process(set, roundEnvironment);
Mockito.verify(messager).printMessage(Diagnostic.Kind.NOTE, AbstractAnnotationProcessorTest.TEST_EXECUTION_MESSAGE);
Mockito.verify(processorSpy).process(set, roundEnvironment);
}
AnnotationProcessorWrapperTest.java 文件源码
项目:annotation-processor-toolkit
阅读 23
收藏 0
点赞 0
评论 0
@Test
public void testWrappedCompletionsCall() {
AbstractProcessor processorSpy = Mockito.spy(AbstractProcessor.class);
Element element = Mockito.mock(Element.class);
AnnotationMirror annotationMirror = Mockito.mock(AnnotationMirror.class);
ExecutableElement executableElement = Mockito.mock(ExecutableElement.class);
String str = "XX";
Processor unit = AnnotationProcessorWrapper.wrapProcessor(processorSpy);
unit.getCompletions(element, annotationMirror, executableElement, str);
Mockito.verify(processorSpy).getCompletions(element, annotationMirror, executableElement, str);
}
DataClassBuilderHandler.java 文件源码
项目:jdoocsoup
阅读 23
收藏 0
点赞 0
评论 0
public DataClassBuilderHandler(AbstractProcessor processor, ProcessingEnvironment processingEnvironment) {
super(processor, processingEnvironment, DataClassBuilder.class, ElementKind.INTERFACE, ElementKind.CLASS);
}
BaseAnnotationHandler.java 文件源码
项目:jdoocsoup
阅读 21
收藏 0
点赞 0
评论 0
public BaseAnnotationHandler(AbstractProcessor processor, ProcessingEnvironment processingEnvironment, Class<T> handledAnnotation, ElementKind... handledKinds) {
this.processor = processor;
this.env = processingEnvironment;
this.handledAnnotation = handledAnnotation;
this.handledKinds = handledKinds;
}
TestTypesEclipse.java 文件源码
项目:wava
阅读 25
收藏 0
点赞 0
评论 0
@Override
public Statement apply(final Statement base, Description description)
{
return new Statement()
{
@Override
public void evaluate()
throws Throwable
{
final AtomicReference<Throwable> thrown = new AtomicReference<Throwable>();
boolean successful = compile(ImmutableList.of(new AbstractProcessor()
{
@Override
public SourceVersion getSupportedSourceVersion()
{
return SourceVersion.latest();
}
@Override
public Set<String> getSupportedAnnotationTypes()
{
return ImmutableSet.of("*");
}
@Override
public synchronized void init(ProcessingEnvironment processingEnv)
{
super.init(processingEnv);
elements = processingEnv.getElementUtils();
types = processingEnv.getTypeUtils();
}
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv)
{
// just run the test on the last round after compilation is over
if (roundEnv.processingOver()) {
try {
base.evaluate();
}
catch (Throwable e) {
thrown.set(e);
}
}
return false;
}
}));
checkState(successful);
Throwable t = thrown.get();
if (t != null) {
throw t;
}
}
};
}
ParameterizedCheckerTest.java 文件源码
项目:checker-framework
阅读 23
收藏 0
点赞 0
评论 0
public ParameterizedCheckerTest(File testFile,
Class<? extends AbstractProcessor> checker, String checkerDir, String... checkerOptions) {
super(checker, checkerDir, checkerOptions);
this.testFile = testFile;
}
DescriptorAndSignatureFactoryTestBase.java 文件源码
项目:buck
阅读 23
收藏 0
点赞 0
评论 0
private void runTest(TestRunnable r) throws Exception {
testCompiler.addSourceFile(getSourceFile("Foo.java"));
if (testMode == WITH_DEPS) {
testCompiler.addClasspathSourceFile(getSourceFile("Dependency.java"));
testCompiler.addClasspathSourceFile(getSourceFile("DependencyException.java"));
testCompiler.addClasspathSourceFile(getSourceFile("DependencyInterface.java"));
} else {
testCompiler.useFrontendOnlyJavacTask();
}
testCompiler.setProcessors(
Collections.singletonList(
new AbstractProcessor() {
@Override
public Set<String> getSupportedOptions() {
return Collections.emptySet();
}
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public SourceVersion getSupportedSourceVersion() {
return SourceVersion.RELEASE_8;
}
@Override
public boolean process(
Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (roundEnv.processingOver()) {
try {
r.run();
} catch (Exception e) {
throw new AssertionError(e);
}
}
return false;
}
}));
elements = testCompiler.getElements();
testCompiler.enter();
}
FrontendOnlyJavacTaskTest.java 文件源码
项目:buck
阅读 26
收藏 0
点赞 0
评论 0
@Test
public void testAnnotationProcessorGetsNewElementsEachRound() throws Exception {
final AtomicBoolean processorRan = new AtomicBoolean(false);
initCompiler(ImmutableMap.of("Foo.java", "public class Foo { }"));
testCompiler.setProcessors(
ImmutableList.of(
new AbstractProcessor() {
private Elements elementsFromEnvironment;
private TypeElement element;
@Override
public Set<String> getSupportedAnnotationTypes() {
return Collections.singleton("*");
}
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
elementsFromEnvironment = processingEnv.getElementUtils();
}
@Override
public boolean process(
Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
TypeElement newElement = elementsFromEnvironment.getTypeElement("Foo");
assertNotNull(newElement);
assertNotSame(newElement, element);
element = newElement;
processorRan.set(roundEnv.processingOver());
return false;
}
}));
testCompiler.compile();
assertTrue(processorRan.get());
}