private boolean isMavenReport()

in src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java [381:438]


    private boolean isMavenReport(MojoExecution mojoExecution, PluginDescriptor pluginDescriptor) {
        ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();

        // get the plugin's goal Mojo class
        Class<?> mojoClass;
        try {
            Thread.currentThread()
                    .setContextClassLoader(mojoExecution.getMojoDescriptor().getRealm());

            mojoClass = pluginDescriptor
                    .getClassRealm()
                    .loadClass(mojoExecution.getMojoDescriptor().getImplementation());
        } catch (ClassNotFoundException e) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.warn("Skipping ClassNotFoundException mojoExecution.goal {}", mojoExecution.getGoal(), e);
            } else {
                LOGGER.warn("Skipping ClassNotFoundException mojoExecution.goal {}", mojoExecution.getGoal());
            }
            return false;
        } finally {
            Thread.currentThread().setContextClassLoader(originalClassLoader);
        }

        // check if it is a report
        try {
            Thread.currentThread()
                    .setContextClassLoader(mojoExecution.getMojoDescriptor().getRealm());
            MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo(mojoExecution.getGoal());

            boolean isMavenReport = MavenReport.class.isAssignableFrom(mojoClass);

            if (LOGGER.isDebugEnabled()) {
                if (mojoDescriptor != null && mojoDescriptor.getImplementationClass() != null) {
                    LOGGER.debug(
                            "Class {} is MavenReport: ",
                            mojoDescriptor.getImplementationClass().getName(),
                            isMavenReport);
                }

                if (!isMavenReport) {
                    LOGGER.debug(
                            "Skipping non MavenReport {}",
                            mojoExecution.getMojoDescriptor().getId());
                }
            }

            return isMavenReport;
        } catch (LinkageError e) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.warn("Skipping LinkageError mojoExecution.goal {}", mojoExecution.getGoal(), e);
            } else {
                LOGGER.warn("Skipping LinkageError mojoExecution.goal {}", mojoExecution.getGoal());
            }
            return false;
        } finally {
            Thread.currentThread().setContextClassLoader(originalClassLoader);
        }
    }