diff options
author | Jay Arthanareeswaran | 2016-04-15 16:06:14 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2016-04-18 10:02:37 +0000 |
commit | 89064619aeb8bef37f5bff6f529bbe42c208b813 (patch) | |
tree | d4df3f3405950116035eac9254f6dc2abe00f9b9 /org.eclipse.jdt.apt.pluggable.tests | |
parent | c42c7e657b077ec634fd7716be6404b721c1a1dc (diff) | |
download | eclipse.jdt.core-89064619aeb8bef37f5bff6f529bbe42c208b813.tar.gz eclipse.jdt.core-89064619aeb8bef37f5bff6f529bbe42c208b813.tar.xz eclipse.jdt.core-89064619aeb8bef37f5bff6f529bbe42c208b813.zip |
Bug 468893 - processor gets multiple processingOver=true calls in some
cases
Change-Id: I6e665202e3687c455d46c61feb28dd948cb894ab
Signed-off-by: Jay Arthanareeswaran <jarthana@in.ibm.com>
Diffstat (limited to 'org.eclipse.jdt.apt.pluggable.tests')
8 files changed, 101 insertions, 1 deletions
diff --git a/org.eclipse.jdt.apt.pluggable.tests/META-INF/services/javax.annotation.processing.Processor b/org.eclipse.jdt.apt.pluggable.tests/META-INF/services/javax.annotation.processing.Processor index feeeb8c42d..03e9d27ea2 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/META-INF/services/javax.annotation.processing.Processor +++ b/org.eclipse.jdt.apt.pluggable.tests/META-INF/services/javax.annotation.processing.Processor @@ -6,3 +6,4 @@ org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.TestFinalRoundProc org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.BugsProc org.eclipse.jdt.apt.pluggable.tests.processors.modeltester.ModelTesterProc org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.Bug387956Processor +org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.Bug468893Processor diff --git a/org.eclipse.jdt.apt.pluggable.tests/lib/annotations.jar b/org.eclipse.jdt.apt.pluggable.tests/lib/annotations.jar Binary files differindex 8c8c71eec4..a09e550584 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/lib/annotations.jar +++ b/org.eclipse.jdt.apt.pluggable.tests/lib/annotations.jar diff --git a/org.eclipse.jdt.apt.pluggable.tests/plugin.xml b/org.eclipse.jdt.apt.pluggable.tests/plugin.xml index 1940aa7b9f..cab9cf288a 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/plugin.xml +++ b/org.eclipse.jdt.apt.pluggable.tests/plugin.xml @@ -44,6 +44,9 @@ class="org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.Bug387956Processor"> </java6processor> <java6processor + class="org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.Bug468893Processor"> + </java6processor> + <java6processor class="org.eclipse.jdt.apt.pluggable.tests.processors.genclass6.Bug419769Proc"> </java6processor> </java6processors> diff --git a/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotated.java b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotated.java new file mode 100644 index 0000000000..186ef5b3b6 --- /dev/null +++ b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotated.java @@ -0,0 +1,6 @@ +package targets.bug468893; +import targets.bug468893.Annotation; + +@Annotation +public class Annotated { +}
\ No newline at end of file diff --git a/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotation.java b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotation.java new file mode 100644 index 0000000000..24ea601f0e --- /dev/null +++ b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/Annotation.java @@ -0,0 +1,6 @@ +package targets.bug468893; +import java.lang.annotation.Inherited; + +@Inherited +public @interface Annotation { +}
\ No newline at end of file diff --git a/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/TypeIndexClient.java b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/TypeIndexClient.java new file mode 100644 index 0000000000..7f8541e0cc --- /dev/null +++ b/org.eclipse.jdt.apt.pluggable.tests/resources/targets/bug468893/TypeIndexClient.java @@ -0,0 +1,6 @@ +package targets.bug468893; + +import generated.TypeIndex; + +public class TypeIndexClient implements TypeIndex { +}
\ No newline at end of file diff --git a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/BuilderTests.java b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/BuilderTests.java index e9d19ad5f4..b645759a93 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/BuilderTests.java +++ b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/BuilderTests.java @@ -18,6 +18,7 @@ import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.apt.core.util.AptConfig; +import org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.Bug468893Processor; import org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.BugsProc; import org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.InheritedAnnoProc; import org.eclipse.jdt.apt.pluggable.tests.processors.buildertester.TestFinalRoundProc; @@ -214,7 +215,18 @@ public class BuilderTests extends TestBase org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.MAX_AT_ONCE = old; } } - + public void testBug468893() throws Throwable { + ProcessorTestStatus.reset(); + IJavaProject jproj = createJavaProject(_projectName); + disableJava5Factories(jproj); + IProject proj = jproj.getProject(); + IdeTestUtils.copyResources(proj, "targets/bug468893", "src/targets/bug468893"); + + AptConfig.setEnabled(jproj, true); + fullBuild(); + expectingNoProblems(); + assertEquals("Should have been processed over just once", 1, Bug468893Processor.count()); + } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=419769 public void testBug419769() throws Throwable { try { diff --git a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/processors/buildertester/Bug468893Processor.java b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/processors/buildertester/Bug468893Processor.java new file mode 100644 index 0000000000..359473a522 --- /dev/null +++ b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/processors/buildertester/Bug468893Processor.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2016 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.apt.pluggable.tests.processors.buildertester; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.util.Set; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.annotation.processing.SupportedSourceVersion; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.TypeElement; +import javax.tools.Diagnostic.Kind; +import javax.tools.FileObject; + +@SupportedAnnotationTypes("targets.bug468893.Annotation") +@SupportedSourceVersion(SourceVersion.RELEASE_6) +public class Bug468893Processor extends AbstractProcessor { + + private static int count = 0; + + public Bug468893Processor() { + count = 0; + } + @Override + public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { + if (roundEnv.processingOver()) { + count++; + processingEnv.getMessager().printMessage(Kind.WARNING, "Processing over..."); + try { + FileObject resource = processingEnv.getFiler().createSourceFile("generated.TypeIndex"); + BufferedWriter w = new BufferedWriter(resource.openWriter()); + try { + w.append("package generated;"); + w.newLine(); + w.append("public interface TypeIndex {"); + w.newLine(); + w.append("\tpublic static final String ANNOTATED = null;"); + w.newLine(); + w.append("}"); + w.newLine(); + } finally { + w.close(); + } + } catch (IOException e) { + processingEnv.getMessager().printMessage(Kind.ERROR, "Could not create output " + e.getMessage()); + throw new RuntimeException(e); + } + } + return false; + } + + public static int count() { + return count; + } +} |