# HG changeset patch # User Doug Simon # Date 1449233266 -3600 # Node ID f23c3e2022d9f6ab6ff119812c35b4a55b08f698 # Parent 8a91781d5afc434fdaed78f59b98532de501f409 workaround for Eclipse bug 367599 diff -r 8a91781d5afc -r f23c3e2022d9 jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java --- a/jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java Thu Nov 26 14:49:10 2015 +0100 +++ b/jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java Fri Dec 04 13:47:46 2015 +0100 @@ -29,6 +29,7 @@ import java.util.Set; import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.FilerException; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.lang.model.SourceVersion; @@ -99,10 +100,29 @@ writer.println(interfaceName); writer.close(); } catch (IOException e) { - processingEnv.getMessager().printMessage(Kind.ERROR, e.getMessage(), serviceProvider); + processingEnv.getMessager().printMessage(isBug367599(e) ? Kind.NOTE : Kind.ERROR, e.getMessage(), serviceProvider); } } + /** + * Determines if a given exception is (most likely) caused by Bug 367599. + */ + public static boolean isBug367599(Throwable t) { + if (t instanceof FilerException) { + for (StackTraceElement ste : t.getStackTrace()) { + if (ste.toString().contains("org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create")) { + // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599 + return true; + } + } + } + if (t.getCause() != null) { + return isBug367599(t.getCause()); + } + return false; + } + @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { if (roundEnv.processingOver()) {