提交 7ca46252 编写于 作者: D darcy

6911854: Update TestElementsAnnotatedWith.java to use @compile/proc

Reviewed-by: jjg
上级 62cc4611
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
/* /*
* @test * @test
* @bug 6397298 6400986 6425592 6449798 6453386 6508401 6498938 * @bug 6397298 6400986 6425592 6449798 6453386 6508401 6498938 6911854
* @summary Tests that getElementsAnnotatedWith works properly. * @summary Tests that getElementsAnnotatedWith works properly.
* @author Joseph D. Darcy * @author Joseph D. Darcy
* @compile TestElementsAnnotatedWith.java * @compile TestElementsAnnotatedWith.java
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
* @compile -processor TestElementsAnnotatedWith -proc:only Part1.java Part2.java * @compile -processor TestElementsAnnotatedWith -proc:only Part1.java Part2.java
* @compile -processor TestElementsAnnotatedWith -proc:only C2.java * @compile -processor TestElementsAnnotatedWith -proc:only C2.java
* @compile -processor TestElementsAnnotatedWith -proc:only Foo.java * @compile -processor TestElementsAnnotatedWith -proc:only Foo.java
* @compile -XD-d=. Foo.java * @compile Foo.java
* @compile -processor TestElementsAnnotatedWith -proc:only TestElementsAnnotatedWith.java * @compile/process -processor TestElementsAnnotatedWith -proc:only Foo
*/ */
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
...@@ -89,7 +89,7 @@ public class TestElementsAnnotatedWith extends AbstractProcessor { ...@@ -89,7 +89,7 @@ public class TestElementsAnnotatedWith extends AbstractProcessor {
// Verify that the annotation information is as // Verify that the annotation information is as
// expected. // expected.
Set<String> expectedNames = new HashSet<String>(Arrays.asList(annotatedElementInfo.names())); Set<String> expectedNames = new HashSet<>(Arrays.asList(annotatedElementInfo.names()));
resultsMeta = resultsMeta =
roundEnvironment. roundEnvironment.
...@@ -126,9 +126,6 @@ public class TestElementsAnnotatedWith extends AbstractProcessor { ...@@ -126,9 +126,6 @@ public class TestElementsAnnotatedWith extends AbstractProcessor {
System.err.println("AnnotatedElementInfo: " + annotatedElementInfo); System.err.println("AnnotatedElementInfo: " + annotatedElementInfo);
throw new RuntimeException(); throw new RuntimeException();
} }
if("TestElementsAnnotatedWith".equals(firstType.getSimpleName().toString()))
writeClassFile(); // Start another round to test class file input
} else { } else {
// If processing is over without an error, the specified // If processing is over without an error, the specified
// elements should be empty so an empty set should be returned. // elements should be empty so an empty set should be returned.
...@@ -163,48 +160,14 @@ public class TestElementsAnnotatedWith extends AbstractProcessor { ...@@ -163,48 +160,14 @@ public class TestElementsAnnotatedWith extends AbstractProcessor {
} catch(IllegalArgumentException iae) {} } catch(IllegalArgumentException iae) {}
try { try {
Set<? extends Element> elements = roundEnvironment.getElementsAnnotatedWith(processingEnv. Set<? extends Element> elements =
getElementUtils(). roundEnvironment.getElementsAnnotatedWith(processingEnv.
getTypeElement("java.lang.Object") ); getElementUtils().
getTypeElement("java.lang.Object") );
throw new RuntimeException("Illegal argument exception not thrown"); throw new RuntimeException("Illegal argument exception not thrown");
} catch(IllegalArgumentException iae) {} } catch(IllegalArgumentException iae) {}
} }
/*
* Hack alert! The class file read below is generated by the
* "@compile -XD-d=. Foo.java" directive above. This sneakily
* overrides the output location to the current directory where a
* subsequent @compile can read the file. This could be improved
* if either a new directive like @process accepted class file
* arguments (the javac command accepts such arguments but
* @compile does not) or the test.src and test.classes properties
* were set to be read with @compile jobs.
*/
private void writeClassFile() {
try {
Filer filer = processingEnv.getFiler();
JavaFileObject jfo = filer.createClassFile("Foo");
OutputStream os = jfo.openOutputStream();
// Copy the bytes over
System.out.println((new File(".")).getAbsolutePath());
InputStream io = new BufferedInputStream(new FileInputStream(new File(".", "Foo.class")));
try {
int datum = io.read();
while(datum != -1) {
os.write(datum);
datum = io.read();
}
} finally {
io.close();
}
os.close();
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
@Override @Override
public SourceVersion getSupportedSourceVersion() { public SourceVersion getSupportedSourceVersion() {
return SourceVersion.latest(); return SourceVersion.latest();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册