blob: 01c79e22a308c7a60da8911a382b1a3a3f4ae065 [file] [log] [blame]
package org.eclipse.jdt.compiler.apt.tests.processors.AnnotationProcessorTests;
import java.io.IOException;
import java.io.Writer;
import java.util.Set;
import javax.annotation.processing.Filer;
import javax.annotation.processing.ProcessingEnvironment;
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.FileObject;
import javax.tools.StandardLocation;
import org.eclipse.jdt.compiler.apt.tests.processors.base.BaseProcessor;
@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class Bug530665Proc extends BaseProcessor {
private Filer filer;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
filer = processingEnv.getFiler();
}
@Override
public void reportError(String value) {
super.reportError(value);
throw new RuntimeException(value);
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (roundEnv.errorRaised()) {
return false;
}
try {
filer.getResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "nonexists.txt");
reportError("Filer.getResource(nonexists.txt) did NOT throw!");
} catch (IOException e) {
// ignored
}
try {
// can be done multiple times...
filer.getResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "preexists.txt");
filer.getResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "preexists.txt");
} catch (IOException e) {
reportError("Filer.getResource(preexists.txt) threw: " + e);
}
if (roundEnv.processingOver()) {
try {
FileObject fo = filer.createResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "nonexists.txt");
try(Writer writer = fo.openWriter()) {
writer.append("Test");
}
} catch(IOException e) {
reportError("Filer.createResource(nonexists.txt) threw: " + e);
}
try {
filer.createResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "nonexists.txt");
reportError("Filer.createResource(nonexists.txt) second attempt did NOT throw!");
} catch(IOException e) {
// ignored
}
try {
FileObject fo = filer.createResource(StandardLocation.CLASS_OUTPUT, "targets/AnnotationProcessorTests/bug530665", "preexists.txt");
if (!fo.delete()) {
reportError("FileObject.delete() failed!");
}
} catch(IOException e) {
reportError("Filer.createResource(preexists.txt) threw: " + e);
}
reportSuccess();
}
return false;
}
}