public boolean process()

in src/it/MCOMPILER-395-processorpath-exclude-deps/annotation-processor/src/main/java/mcompiler395/SimpleAnnotationProcessor.java [44:84]


    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        if (annotations.isEmpty()) {
            return true;
        }

        // assert that mcompiler395-annotation-processor-dep is NOT on the processorpath, since it is excluded
        // in the plugin configuration
        try {
            getClass().getClassLoader().loadClass("mcompiler395.AnnotationProcessorDependency");
            throw new RuntimeException("Expected a ClassNotFoundException, because "
                    + "mcompiler395.AnnotationProcessorDependency is not supposed to be on the processorpath.");
        } catch (ClassNotFoundException expected) {
            // expected
        }

        Filer filer = processingEnv.getFiler();

        Elements elementUtils = processingEnv.getElementUtils();

        Set<? extends Element> elements =
                roundEnv.getElementsAnnotatedWith(annotations.iterator().next());

        for (Element element : elements) {
            Name name = element.getSimpleName();

            PackageElement packageElement = elementUtils.getPackageOf(element);

            try {
                Name packageName = packageElement.getQualifiedName();
                FileObject resource =
                        filer.createResource(StandardLocation.SOURCE_OUTPUT, packageName, name + ".txt", element);

                Writer writer = resource.openWriter();
                writer.write(name.toString());
                writer.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return !elements.isEmpty();
    }