Example usage for org.aspectj.bridge MessageHandler MessageHandler

List of usage examples for org.aspectj.bridge MessageHandler MessageHandler

Introduction

In this page you can find the example usage for org.aspectj.bridge MessageHandler MessageHandler.

Prototype

public MessageHandler() 

Source Link

Document

same as MessageHandler(false)

Usage

From source file:io.github.whiskeysierra.archer.Compiling.java

License:Apache License

default List<IMessage> compile(final Class<?>... classes) throws IOException {
    final TemporaryFolder temporaryFolder = new TemporaryFolder();
    temporaryFolder.create();/*from  w ww. j a v a  2  s  .c o m*/

    try {
        final List<String> arguments = new ArrayList<>();

        arguments.add("-source");
        arguments.add("1.8");
        arguments.add("-target");
        arguments.add("1.8");

        arguments.add("-cp");
        arguments.add(System.getProperty("java.class.path"));

        arguments.add("-aspectpath");
        arguments.add("target/classes");

        arguments.add("-d");

        arguments.add(temporaryFolder.newFolder().getAbsolutePath());

        asList(classes).stream().map(Class::getName).map(n -> n.replace('.', '/'))
                .map(n -> format("src/test/java/%s.java", n)).forEach(arguments::add);

        final Main compiler = new Main();
        final MessageHandler handler = new MessageHandler();
        compiler.run(toArray(arguments, String.class), handler);

        return asList(handler.getMessages(null, true)).stream().filter(IMessage::isError).collect(toList());
    } finally {
        temporaryFolder.delete();
    }
}

From source file:org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter.java

License:Open Source License

public boolean execute() throws BuildException {
    javac.log(//from   w  w w  .j a  v  a 2s  .  c om
            "Note that you may see messages about skipping *.aj files above. "
                    + "These messages can be ignored as these files are handled directly by "
                    + "ajc.  Similarly, the messages below about skipping *.java files can be ignored.",
            Project.MSG_INFO);

    // javac task spits out messages that it 

    if (null == javac) {
        throw new IllegalStateException("null javac");
    }
    if (!((Boolean) inSelfCall.get()).booleanValue() && afterCleaningDirs()) {
        // if we are not re-calling ourself and we cleaned dirs,
        // then re-call javac to get the list of all source files.
        inSelfCall.set(Boolean.TRUE);
        javac.execute();
        // javac re-invokes us after recalculating file list
    } else {
        try {
            AjcTask ajc = new AjcTask();
            String err = ajc.setupAjc(javac);
            if (null != err) {
                throw new BuildException(err, javac.getLocation());
            }
            addAJFiles(ajc);
            IMessageHolder handler = new MessageHandler();
            ajc.setMessageHolder(handler);

            String logFile = null;
            String[] args = javac.getCurrentCompilerArgs();
            for (int i = 0; i < args.length; i++) {
                if (args[i].equals("-log") && args.length > i) {
                    logFile = args[i + 1];
                    ajc.setLog(new File(logFile));
                    break;
                }
            }

            ajc.execute();

            // if log file is used, this message handler will never show any errors
            IMessage[] messages = handler.getMessages(IMessage.ERROR, true);
            if (messages != IMessage.RA_IMessage && logFile != null) {
                // log messages
                String msg = "Compilation has errors or warnings. Log is available in " + logFile;
                javac.log(msg, Project.MSG_INFO);
                return false;
            } else {
                return ajc.wasCompilationSuccessful();
            }

        } finally {
            inSelfCall.set(Boolean.FALSE);
        }
    }
    return true;
}