Search in sources :

Example 1 with Sink

use of org.apache.maven.doxia.sink.Sink in project maven-plugins by apache.

the class PdfMojo method generateMavenReport.

/**
     * Generate the given Maven report only if it is not an external report and the report could be generated.
     *
     * @param mojoDescriptor not null, to catch linkage error
     * @param report could be null
     * @param locale not null
     * @throws IOException if any
     * @throws MojoExecutionException if any
     * @see #isValidGeneratedReport(MojoDescriptor, File, String)
     * @since 1.1
     */
private void generateMavenReport(MavenReport report, Artifact pluginArtifact, Locale locale) throws IOException, MojoExecutionException {
    if (report == null) {
        return;
    }
    String localReportName = report.getName(locale);
    if (!report.canGenerateReport()) {
        getLog().info("Skipped \"" + localReportName + "\" report.");
        getLog().debug("canGenerateReport() was false.");
        return;
    }
    if (report.isExternalReport()) {
        getLog().info("Skipped external \"" + localReportName + "\" report.");
        getLog().debug("isExternalReport() was false.");
        return;
    }
    for (final MavenReport generatedReport : getGeneratedMavenReports(locale)) {
        if (report.getName(locale).equals(generatedReport.getName(locale))) {
            if (getLog().isDebugEnabled()) {
                getLog().debug(report.getName(locale) + " was already generated.");
            }
            return;
        }
    }
    File outDir = new File(getGeneratedSiteDirectoryTmp(), "xdoc");
    if (!locale.getLanguage().equals(defaultLocale.getLanguage())) {
        outDir = new File(new File(getGeneratedSiteDirectoryTmp(), locale.getLanguage()), "xdoc");
    }
    outDir.mkdirs();
    File generatedReport = new File(outDir, report.getOutputName() + ".xml");
    String excludes = getDefaultExcludesWithLocales(getAvailableLocales(), getDefaultLocale());
    List<String> files = FileUtils.getFileNames(siteDirectory, "*/" + report.getOutputName() + ".*", excludes, false);
    if (!locale.getLanguage().equals(defaultLocale.getLanguage())) {
        files = FileUtils.getFileNames(new File(siteDirectory, locale.getLanguage()), "*/" + report.getOutputName() + ".*", excludes, false);
    }
    if (files.size() != 0) {
        String displayLanguage = locale.getDisplayLanguage(Locale.ENGLISH);
        if (getLog().isInfoEnabled()) {
            getLog().info("Skipped \"" + report.getName(locale) + "\" report, file \"" + report.getOutputName() + "\" already exists for the " + displayLanguage + " version.");
        }
        return;
    }
    if (getLog().isInfoEnabled()) {
        getLog().info("Generating \"" + localReportName + "\" report.");
    }
    StringWriter sw = new StringWriter();
    PdfSink sink = null;
    try {
        sink = new PdfSink(sw);
        org.codehaus.doxia.sink.Sink proxy = (org.codehaus.doxia.sink.Sink) Proxy.newProxyInstance(org.codehaus.doxia.sink.Sink.class.getClassLoader(), new Class[] { org.codehaus.doxia.sink.Sink.class }, new SinkDelegate(sink));
        report.generate(proxy, locale);
    } catch (MavenReportException e) {
        throw new MojoExecutionException("MavenReportException: " + e.getMessage(), e);
    } finally {
        if (sink != null) {
            sink.close();
        }
    }
    writeGeneratedReport(sw.toString(), generatedReport);
    if (isValidGeneratedReport(pluginArtifact, generatedReport, localReportName)) {
        getGeneratedMavenReports(locale).add(report);
    }
}
Also used : MavenReport(org.apache.maven.reporting.MavenReport) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) StringWriter(java.io.StringWriter) Sink(org.apache.maven.doxia.sink.Sink) IndexingSink(org.apache.maven.doxia.index.IndexingSink) XdocSink(org.apache.maven.doxia.module.xdoc.XdocSink) File(java.io.File) MavenReportException(org.apache.maven.reporting.MavenReportException)

Example 2 with Sink

use of org.apache.maven.doxia.sink.Sink in project felix by apache.

the class BaselineReport method startBaseline.

@Override
protected void startBaseline(final Object context, String generationDate, String bundleName, String currentVersion, String previousVersion) {
    final Context ctx = (Context) context;
    final Sink sink = ctx.sink;
    sink.head();
    sink.title();
    String title = getBundle(ctx.locale).getString("report.baseline.title");
    sink.text(title);
    sink.title_();
    sink.head_();
    sink.body();
    sink.section1();
    sink.sectionTitle1();
    sink.text(title);
    sink.sectionTitle1_();
    sink.paragraph();
    sink.text(getBundle(ctx.locale).getString("report.baseline.bndlink") + " ");
    sink.link("http://www.aqute.biz/Bnd/Bnd");
    sink.text("Bnd");
    sink.link_();
    sink.text(".");
    sink.paragraph_();
    sink.paragraph();
    sink.text(getBundle(ctx.locale).getString("report.baseline.bundle") + " ");
    sink.figure();
    sink.figureGraphics("images/baseline/bundle.gif");
    sink.figure_();
    sink.text(" ");
    sink.bold();
    sink.text(bundleName);
    sink.bold_();
    sink.listItem_();
    sink.paragraph();
    sink.text(getBundle(ctx.locale).getString("report.baseline.version.current") + " ");
    sink.bold();
    sink.text(currentVersion);
    sink.bold_();
    sink.paragraph_();
    sink.paragraph();
    sink.text(getBundle(ctx.locale).getString("report.baseline.version.comparison") + " ");
    sink.bold();
    sink.text(comparisonVersion);
    sink.bold_();
    sink.paragraph_();
    sink.paragraph();
    sink.text(getBundle(ctx.locale).getString("report.baseline.generationdate") + " ");
    sink.bold();
    sink.text(generationDate);
    sink.bold_();
    sink.paragraph_();
    sink.section1_();
}
Also used : Sink(org.apache.maven.doxia.sink.Sink)

Example 3 with Sink

use of org.apache.maven.doxia.sink.Sink in project felix by apache.

the class BaselineReport method startDiff.

@Override
protected void startDiff(final Object context, int depth, String type, String name, String delta, String shortDelta) {
    final Context ctx = (Context) context;
    final Sink sink = ctx.sink;
    if (ctx.currentDepth < depth) {
        sink.list();
    }
    ctx.currentDepth = depth;
    sink.listItem();
    sink.figure();
    sink.figureGraphics("images/baseline/" + type + ".gif");
    sink.figure_();
    sink.text(" ");
    sink.monospaced();
    sink.text(name);
    sink.monospaced_();
    sink.text(" ");
    sink.italic();
    sink.text(delta);
    sink.italic_();
}
Also used : Sink(org.apache.maven.doxia.sink.Sink)

Example 4 with Sink

use of org.apache.maven.doxia.sink.Sink in project felix by apache.

the class BaselineReport method endPackage.

@Override
protected void endPackage(final Object context) {
    final Context ctx = (Context) context;
    final Sink sink = ctx.sink;
    if (ctx.currentDepth > 0) {
        sink.list_();
        ctx.currentDepth = 0;
    }
    sink.listItem_();
    sink.list_();
}
Also used : Sink(org.apache.maven.doxia.sink.Sink)

Example 5 with Sink

use of org.apache.maven.doxia.sink.Sink in project revapi by revapi.

the class ReportAggregateMojo method executeReport.

@Override
protected void executeReport(Locale locale) throws MavenReportException {
    if (skip) {
        return;
    }
    if (!canGenerateReport()) {
        return;
    }
    List<MavenProject> dependents = mavenSession.getProjectDependencyGraph().getDownstreamProjects(project, true);
    Collections.sort(dependents, (a, b) -> {
        String as = a.getArtifact().toString();
        String bs = b.getArtifact().toString();
        return as.compareTo(bs);
    });
    Map<MavenProject, ProjectVersions> projectVersions = dependents.stream().collect(Collectors.toMap(Function.identity(), this::getRunConfig));
    projectVersions.put(project, getRunConfig(project));
    ResourceBundle messages = getBundle(locale);
    Sink sink = getSink();
    if (generateSiteReport) {
        startReport(sink, messages);
    }
    try {
        Analyzer topAnalyzer = prepareAnalyzer(null, project, locale, projectVersions.get(project));
        Revapi sharedRevapi = topAnalyzer == null ? null : topAnalyzer.getRevapi();
        for (MavenProject p : dependents) {
            Analyzer projectAnalyzer = prepareAnalyzer(sharedRevapi, p, locale, projectVersions.get(p));
            if (projectAnalyzer != null) {
                try (AnalysisResult res = projectAnalyzer.analyze()) {
                    res.throwIfFailed();
                    ReportTimeReporter reporter = res.getExtensions().getFirstExtension(ReportTimeReporter.class, null);
                    if (generateSiteReport && reporter != null) {
                        reportBody(reporter, projectAnalyzer.getResolvedOldApi(), projectAnalyzer.getResolvedNewApi(), sink, messages);
                    }
                }
            }
        }
        if (generateSiteReport) {
            endReport(sink);
        }
    } catch (Exception e) {
        throw new MavenReportException("Failed to generate the report.", e);
    }
}
Also used : Revapi(org.revapi.Revapi) AnalysisResult(org.revapi.AnalysisResult) VersionRangeResolutionException(org.eclipse.aether.resolution.VersionRangeResolutionException) ArtifactResolutionException(org.eclipse.aether.resolution.ArtifactResolutionException) MavenReportException(org.apache.maven.reporting.MavenReportException) MavenProject(org.apache.maven.project.MavenProject) Sink(org.apache.maven.doxia.sink.Sink) ResourceBundle(java.util.ResourceBundle) MavenReportException(org.apache.maven.reporting.MavenReportException)

Aggregations

Sink (org.apache.maven.doxia.sink.Sink)19 MavenReportException (org.apache.maven.reporting.MavenReportException)5 ResourceBundle (java.util.ResourceBundle)4 File (java.io.File)3 IOException (java.io.IOException)3 BuildJob (org.apache.maven.plugins.invoker.model.BuildJob)2 ProjectDependencyAnalysis (org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis)2 ProjectDependencyAnalyzerException (org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException)2 HelpMessage (com.lexicalscope.jewel.cli.HelpMessage)1 OptionHelpMessage (com.lexicalscope.jewel.cli.OptionHelpMessage)1 StringWriter (java.io.StringWriter)1 URLClassLoader (java.net.URLClassLoader)1 DecimalFormat (java.text.DecimalFormat)1 DecimalFormatSymbols (java.text.DecimalFormatSymbols)1 ArrayList (java.util.ArrayList)1 IndexingSink (org.apache.maven.doxia.index.IndexingSink)1 XdocSink (org.apache.maven.doxia.module.xdoc.XdocSink)1 XdocSinkFactory (org.apache.maven.doxia.module.xdoc.XdocSinkFactory)1 SinkAdapter (org.apache.maven.doxia.sink.SinkAdapter)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1