From 31ad7bed8c611980ee8ed5e6bf81fbd35a5c2a2b Mon Sep 17 00:00:00 2001 From: Swell <5782559+sultan@users.noreply.github.com> Date: Sat, 15 Oct 2022 16:04:02 +0200 Subject: [PATCH] Caching update information in reports to increase performance --- .../verify.bsh | 6 +- .../verify.bsh | 8 +-- .../it-plugin-updates-report-001/verify.bsh | 6 +- .../it-plugin-updates-report-002/verify.bsh | 2 +- .../it-plugin-updates-report-003/verify.bsh | 2 +- .../versions/api/ArtifactVersionsCache.java | 2 +- .../AbstractVersionsReportRenderer.java | 59 ++++++++++++----- .../DependencyUpdatesReportRenderer.java | 8 +-- .../PluginUpdatesReportRenderer.java | 64 ++++++++++--------- .../PropertyUpdatesReportRenderer.java | 51 +++++++-------- .../reporting/VersionsReportRendererBase.java | 51 --------------- .../xml/DependencyUpdatesXmlRenderer.java | 8 +-- 12 files changed, 124 insertions(+), 143 deletions(-) diff --git a/src/it/it-dependency-updates-report-001/verify.bsh b/src/it/it-dependency-updates-report-001/verify.bsh index 289ca69b24..0298f0d67d 100644 --- a/src/it/it-dependency-updates-report-001/verify.bsh +++ b/src/it/it-dependency-updates-report-001/verify.bsh @@ -23,7 +23,7 @@ try System.out.println( "Result = \"" + result +"\"" ); return false; } - if ( result.indexOf( "1.1.1 Next Incremental" ) < 0) + if ( result.indexOf( "1.1.1" ) < 0) { System.out.println( "Did not identify next incremental" ); System.out.println( "Result = \"" + result +"\"" ); @@ -35,7 +35,7 @@ try System.out.println( "Result = \"" + result +"\"" ); return false; } - if ( result.indexOf( "1.2 Next Minor" ) < 0) + if ( result.indexOf( "1.2" ) < 0) { System.out.println( "Did not identify next minor version" ); System.out.println( "Result = \"" + result +"\"" ); @@ -47,7 +47,7 @@ try System.out.println( "Result = \"" + result +"\"" ); return false; } - if ( result.indexOf( "2.0 Next Major" ) < 0) + if ( result.indexOf( "2.0" ) < 0) { System.out.println( "Did not identify next major version" ); System.out.println( "Result = \"" + result +"\"" ); diff --git a/src/it/it-dependency-updates-report-002/verify.bsh b/src/it/it-dependency-updates-report-002/verify.bsh index 8422b69484..019b615555 100644 --- a/src/it/it-dependency-updates-report-002/verify.bsh +++ b/src/it/it-dependency-updates-report-002/verify.bsh @@ -17,13 +17,13 @@ try // System.out.println( "Result = \"" + result +"\"" ); // return false; // } -// if ( result.indexOf( "1.1.0-2 Next Version" ) < 0) +// if ( result.indexOf( "1.1.0-2" ) < 0) // { // System.out.println( "Did not identify next version" ); // System.out.println( "Result = \"" + result +"\"" ); // return false; // } -// if ( result.indexOf( "1.1.1 Next Incremental" ) < 0) +// if ( result.indexOf( "1.1.1" ) < 0) // { // System.out.println( "Did not identify next incremental" ); // System.out.println( "Result = \"" + result +"\"" ); @@ -35,7 +35,7 @@ try // System.out.println( "Result = \"" + result +"\"" ); // return false; // } -// if ( result.indexOf( "1.2 Next Minor" ) < 0) +// if ( result.indexOf( "1.2" ) < 0) // { // System.out.println( "Did not identify next minor version" ); // System.out.println( "Result = \"" + result +"\"" ); @@ -47,7 +47,7 @@ try // System.out.println( "Result = \"" + result +"\"" ); // return false; // } -// if ( result.indexOf( "2.0 Next Major" ) < 0) +// if ( result.indexOf( "2.0" ) < 0) // { // System.out.println( "Did not identify next major version" ); // System.out.println( "Result = \"" + result +"\"" ); diff --git a/src/it/it-plugin-updates-report-001/verify.bsh b/src/it/it-plugin-updates-report-001/verify.bsh index 003f5155ce..d1caa0219f 100644 --- a/src/it/it-plugin-updates-report-001/verify.bsh +++ b/src/it/it-plugin-updates-report-001/verify.bsh @@ -32,15 +32,15 @@ try return false; } if ( result.indexOf( "Group Id localhost Artifact Id dummy-maven-plugin Current Version 1.0 Newer versions 2.0 " - + "Next Major 2.1 3.0 3.1 Latest Major" ) < 0) + + "2.1 3.0 3.1 Latest Major" ) < 0) { System.out.println( "Did not identify plugin next versions" ); System.out.println( "Result = \"" + result +"\"" ); return false; } if ( result.indexOf( "Group Id localhost Artifact Id dummy-api Current Version 1.1 Classifier Type jar Newer " - + "versions 1.1.0-2 Latest Subincremental 1.1.1 Next Incremental 1.1.1-2 1.1.2 1.1.3 Latest Incremental 1.2 Next " - + "Minor 1.2.1 1.2.2 1.3 Latest Minor 2.0 Next Major 2.1 3.0 Latest Major" ) < 0) + + "versions 1.1.0-2 Latest Subincremental 1.1.1 1.1.1-2 1.1.2 1.1.3 Latest Incremental 1.2 " + + "1.2.1 1.2.2 1.3 Latest Minor 2.0 2.1 3.0 Latest Major" ) < 0) { System.out.println( "Did not identify dependency next versions" ); System.out.println( "Result = \"" + result +"\"" ); diff --git a/src/it/it-plugin-updates-report-002/verify.bsh b/src/it/it-plugin-updates-report-002/verify.bsh index ee113ae500..299dc4ca1e 100644 --- a/src/it/it-plugin-updates-report-002/verify.bsh +++ b/src/it/it-plugin-updates-report-002/verify.bsh @@ -26,7 +26,7 @@ try return false; } if ( result.indexOf( "Group Id localhost Artifact Id dummy-maven-plugin Current Version 1.0 Newer versions 2.0 " - + "Next Major 2.1 3.0 3.1 Latest Major" ) < 0) + + "2.1 3.0 3.1 Latest Major" ) < 0) { System.out.println( "Did not identify plugin next versions" ); System.out.println( "Result = \"" + result +"\"" ); diff --git a/src/it/it-plugin-updates-report-003/verify.bsh b/src/it/it-plugin-updates-report-003/verify.bsh index ee113ae500..299dc4ca1e 100644 --- a/src/it/it-plugin-updates-report-003/verify.bsh +++ b/src/it/it-plugin-updates-report-003/verify.bsh @@ -26,7 +26,7 @@ try return false; } if ( result.indexOf( "Group Id localhost Artifact Id dummy-maven-plugin Current Version 1.0 Newer versions 2.0 " - + "Next Major 2.1 3.0 3.1 Latest Major" ) < 0) + + "2.1 3.0 3.1 Latest Major" ) < 0) { System.out.println( "Did not identify plugin next versions" ); System.out.println( "Result = \"" + result +"\"" ); diff --git a/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java b/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java index 009070bcd3..e5aa2e384b 100644 --- a/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java +++ b/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java @@ -28,7 +28,7 @@ import org.apache.commons.lang3.tuple.Pair; /** - * Utility providing a cached {@link ArtifactVersions#getOldestUpdate(Optional)} API + * Utility providing a cached {@link ArtifactVersions#getNewestUpdate(Optional)} API */ public class ArtifactVersionsCache { diff --git a/src/main/java/org/codehaus/mojo/versions/reporting/AbstractVersionsReportRenderer.java b/src/main/java/org/codehaus/mojo/versions/reporting/AbstractVersionsReportRenderer.java index c3f9102038..8966d63a6a 100644 --- a/src/main/java/org/codehaus/mojo/versions/reporting/AbstractVersionsReportRenderer.java +++ b/src/main/java/org/codehaus/mojo/versions/reporting/AbstractVersionsReportRenderer.java @@ -58,8 +58,8 @@ public abstract class AbstractVersionsReportRenderer extends VersionsReportRe */ protected T model; - protected ArtifactVersionsCache oldestUpdateCache - = new ArtifactVersionsCache( AbstractVersionDetails::getOldestUpdate ); + protected ArtifactVersionsCache newestUpdateCache + = new ArtifactVersionsCache( AbstractVersionDetails::getNewestUpdate ); protected ArtifactVersionsCache allUpdatesCache = new ArtifactVersionsCache( AbstractVersionDetails::getAllUpdates ); @@ -237,12 +237,12 @@ protected void renderSummaryTableHeader( boolean hasScope, boolean hasType ) "report.latestIncremental", "report.latestMinor", "report.latestMajor" ); } - protected void renderSummaryTableRow( Dependency artifact, ArtifactVersions artifactVersions, - boolean includeScope ) + protected void renderSummaryTableRow( Dependency artifact, ArtifactVersions details, + boolean includeScope ) { sink.tableRow(); sink.tableCell(); - ArtifactVersion[] allUpdates = artifactVersions.getAllUpdates( empty() ); + ArtifactVersion[] allUpdates = allUpdatesCache.get( details, empty() ); if ( allUpdates == null || allUpdates.length == 0 ) { renderSuccessIcon(); @@ -275,37 +275,37 @@ protected void renderSummaryTableRow( Dependency artifact, ArtifactVersions arti sink.tableCell_(); sink.tableCell(); - if ( artifactVersions.getNewestUpdate( of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { safeBold(); - sink.text( artifactVersions.getNewestUpdate( of( SUBINCREMENTAL ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( artifactVersions.getNewestUpdate( of( INCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { safeBold(); - sink.text( artifactVersions.getNewestUpdate( of( INCREMENTAL ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( INCREMENTAL ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( artifactVersions.getNewestUpdate( of( MINOR ) ) != null ) + if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { safeBold(); - sink.text( artifactVersions.getNewestUpdate( of( MINOR ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( MINOR ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( artifactVersions.getNewestUpdate( of( MAJOR ) ) != null ) + if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { safeBold(); - sink.text( artifactVersions.getNewestUpdate( of( MAJOR ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( MAJOR ) ).toString() ); safeBold_(); } sink.tableCell_(); @@ -328,25 +328,25 @@ protected void renderDependencyDetailTable( Dependency artifact, ArtifactVersion sink.tableHeaderCell_(); sink.tableCell( cellAttributes ); ArtifactVersion[] versions = allUpdatesCache.get( details, empty() ); - if ( oldestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.otherUpdatesAvailable" ) ); } - else if ( oldestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) + else if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.incrementalUpdatesAvailable" ) ); } - else if ( oldestUpdateCache.get( details, of( MINOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.minorUpdatesAvailable" ) ); } - else if ( oldestUpdateCache.get( details, of( MAJOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); @@ -462,4 +462,29 @@ protected void renderTableHeaderCells( String... keys ) sink.tableHeaderCell_(); } ); } + + protected String getLabel( ArtifactVersion version, AbstractVersionDetails details ) + { + if ( equals( version, newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) ) ) + { + return getText( "report.latestSubIncremental" ); + } + + if ( equals( version, newestUpdateCache.get( details, of( INCREMENTAL ) ) ) ) + { + return getText( "report.latestIncremental" ); + } + + if ( equals( version, newestUpdateCache.get( details, of( MINOR ) ) ) ) + { + return getText( "report.latestMinor" ); + } + + if ( equals( version, newestUpdateCache.get( details, of( MAJOR ) ) ) ) + { + return getText( "report.latestMajor" ); + } + + return null; + } } diff --git a/src/main/java/org/codehaus/mojo/versions/reporting/DependencyUpdatesReportRenderer.java b/src/main/java/org/codehaus/mojo/versions/reporting/DependencyUpdatesReportRenderer.java index 8c1f3d42ec..d9c1d013ce 100644 --- a/src/main/java/org/codehaus/mojo/versions/reporting/DependencyUpdatesReportRenderer.java +++ b/src/main/java/org/codehaus/mojo/versions/reporting/DependencyUpdatesReportRenderer.java @@ -95,19 +95,19 @@ protected OverviewStats computeOverviewStats() OverviewStats stats = new OverviewStats(); model.getAllUpdates().values().forEach( details -> { - if ( oldestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { stats.incrementAny(); } - else if ( oldestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) + else if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { stats.incrementIncremental(); } - else if ( oldestUpdateCache.get( details, of( MINOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { stats.incrementMinor(); } - else if ( oldestUpdateCache.get( details, of( MAJOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { stats.incrementMajor(); } diff --git a/src/main/java/org/codehaus/mojo/versions/reporting/PluginUpdatesReportRenderer.java b/src/main/java/org/codehaus/mojo/versions/reporting/PluginUpdatesReportRenderer.java index 1df2288bed..a52d35bb4c 100644 --- a/src/main/java/org/codehaus/mojo/versions/reporting/PluginUpdatesReportRenderer.java +++ b/src/main/java/org/codehaus/mojo/versions/reporting/PluginUpdatesReportRenderer.java @@ -154,19 +154,19 @@ protected PluginOverviewStats computeOverviewStats() PluginOverviewStats stats = new PluginOverviewStats(); model.getAllUpdates().values().forEach( details -> { - if ( oldestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { stats.incrementAny(); } - else if ( oldestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) + else if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { stats.incrementIncremental(); } - else if ( oldestUpdateCache.get( details, of( MINOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { stats.incrementMinor(); } - else if ( oldestUpdateCache.get( details, of( MAJOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { stats.incrementMajor(); } @@ -285,42 +285,64 @@ protected void renderSummaryTableRow( Dependency artifact, PluginUpdatesDetails @SuppressWarnings( "checkstyle:MethodLength" ) private void renderPluginDetail( Dependency artifact, PluginUpdatesDetails plugin ) { - final SinkEventAttributes headerAttributes = new SinkEventAttributeSet(); - headerAttributes.addAttribute( SinkEventAttributes.WIDTH, "20%" ); - final SinkEventAttributes cellAttributes = new SinkEventAttributeSet(); - headerAttributes.addAttribute( SinkEventAttributes.WIDTH, "80%" ); sink.section2(); sink.sectionTitle2(); sink.text( MessageFormat.format( getText( "report.plugin" ), ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) ) ); sink.sectionTitle2_(); + + renderPluginDetailTable( plugin ); + + if ( !plugin.getDependencyVersions().isEmpty() ) + { + sink.section3(); + sink.sectionTitle3(); + sink.text( MessageFormat.format( getText( "report.pluginDependencies" ), + ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) ) ); + sink.sectionTitle3_(); + + renderSummaryTable( plugin.getDependencyVersions(), false ); + + sink.section3_(); + + plugin.getDependencyVersions().forEach( this::renderDependencyDetail ); + } + sink.section2_(); + } + + private void renderPluginDetailTable( PluginUpdatesDetails plugin ) + { + final SinkEventAttributes headerAttributes = new SinkEventAttributeSet(); + headerAttributes.addAttribute( SinkEventAttributes.WIDTH, "20%" ); + final SinkEventAttributes cellAttributes = new SinkEventAttributeSet(); + headerAttributes.addAttribute( SinkEventAttributes.WIDTH, "80%" ); sink.table(); - sink.tableRows( new int[] {Sink.JUSTIFY_RIGHT, Sink.JUSTIFY_LEFT}, false ); + sink.tableRows( new int[] { Sink.JUSTIFY_RIGHT, Sink.JUSTIFY_LEFT }, false ); sink.tableRow(); sink.tableHeaderCell( headerAttributes ); sink.text( getText( "report.status" ) ); sink.tableHeaderCell_(); sink.tableCell( cellAttributes ); ArtifactVersion[] versions = plugin.getAllUpdates( empty() ); - if ( plugin.getOldestUpdate( of( SUBINCREMENTAL ) ) != null ) + if ( plugin.getNewestUpdate( of( SUBINCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.otherUpdatesAvailable" ) ); } - else if ( plugin.getOldestUpdate( of( INCREMENTAL ) ) != null ) + else if ( plugin.getNewestUpdate( of( INCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.incrementalUpdatesAvailable" ) ); } - else if ( plugin.getOldestUpdate( of( MINOR ) ) != null ) + else if ( plugin.getNewestUpdate( of( MINOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.minorUpdatesAvailable" ) ); } - else if ( plugin.getOldestUpdate( of( MAJOR ) ) != null ) + else if ( plugin.getNewestUpdate( of( MAJOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); @@ -391,22 +413,6 @@ else if ( plugin.getOldestUpdate( of( MAJOR ) ) != null ) } sink.tableRows_(); sink.table_(); - - if ( !plugin.getDependencyVersions().isEmpty() ) - { - sink.section3(); - sink.sectionTitle3(); - sink.text( MessageFormat.format( getText( "report.pluginDependencies" ), - ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) ) ); - sink.sectionTitle3_(); - - renderSummaryTable( plugin.getDependencyVersions(), false ); - - sink.section3_(); - - plugin.getDependencyVersions().forEach( this::renderDependencyDetail ); - } - sink.section2_(); } } diff --git a/src/main/java/org/codehaus/mojo/versions/reporting/PropertyUpdatesReportRenderer.java b/src/main/java/org/codehaus/mojo/versions/reporting/PropertyUpdatesReportRenderer.java index fe5f2de286..677a8c341e 100644 --- a/src/main/java/org/codehaus/mojo/versions/reporting/PropertyUpdatesReportRenderer.java +++ b/src/main/java/org/codehaus/mojo/versions/reporting/PropertyUpdatesReportRenderer.java @@ -114,11 +114,12 @@ protected void renderSummaryTable( Map contents ) sink.table_(); } - private void renderPropertySummaryTableRow( Property property, PropertyVersions versions ) + private void renderPropertySummaryTableRow( Property property, PropertyVersions details ) { sink.tableRow(); sink.tableCell(); - if ( versions.getAllUpdates( empty() ).length == 0 ) + ArtifactVersion[] allUpdates = allUpdatesCache.get( details, empty() ); + if ( allUpdates.length == 0 ) { renderSuccessIcon(); } @@ -131,41 +132,41 @@ private void renderPropertySummaryTableRow( Property property, PropertyVersions sink.text( "${" + property.getName() + "}" ); sink.tableCell_(); sink.tableCell(); - sink.text( versions.getCurrentVersion().toString() ); + sink.text( details.getCurrentVersion().toString() ); sink.tableCell_(); sink.tableCell(); - if ( versions.getNewestUpdate( of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { safeBold(); - sink.text( versions.getNewestUpdate( of( SUBINCREMENTAL ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( versions.getNewestUpdate( of( INCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { safeBold(); - sink.text( versions.getNewestUpdate( of( INCREMENTAL ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( INCREMENTAL ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( versions.getNewestUpdate( of( MINOR ) ) != null ) + if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { safeBold(); - sink.text( versions.getNewestUpdate( of( MINOR ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( MINOR ) ).toString() ); safeBold_(); } sink.tableCell_(); sink.tableCell(); - if ( versions.getNewestUpdate( of( MAJOR ) ) != null ) + if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { safeBold(); - sink.text( versions.getNewestUpdate( of( MAJOR ) ).toString() ); + sink.text( newestUpdateCache.get( details, of( MAJOR ) ).toString() ); safeBold_(); } sink.tableCell_(); @@ -174,7 +175,7 @@ private void renderPropertySummaryTableRow( Property property, PropertyVersions } @SuppressWarnings( "checkstyle:MethodLength" ) - protected void renderPropertyDetailTable( Property property, PropertyVersions versions ) + protected void renderPropertyDetailTable( Property property, PropertyVersions details ) { final SinkEventAttributes headerAttributes = new SinkEventAttributeSet(); headerAttributes.addAttribute( SinkEventAttributes.WIDTH, "20%" ); @@ -187,27 +188,27 @@ protected void renderPropertyDetailTable( Property property, PropertyVersions ve sink.text( getText( "report.status" ) ); sink.tableHeaderCell_(); sink.tableCell( cellAttributes ); - ArtifactVersion[] artifactVersions = versions.getAllUpdates( empty() ); - Set rangeVersions = getVersionsInRange( property, versions, artifactVersions ); - if ( versions.getOldestUpdate( of( SUBINCREMENTAL ) ) != null ) + ArtifactVersion[] artifactVersions = allUpdatesCache.get( details, empty() ); + Set rangeVersions = getVersionsInRange( property, details, artifactVersions ); + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.otherUpdatesAvailable" ) ); } - else if ( versions.getOldestUpdate( of( INCREMENTAL ) ) != null ) + else if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.incrementalUpdatesAvailable" ) ); } - else if ( versions.getOldestUpdate( of( MINOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); sink.text( getText( "report.minorUpdatesAvailable" ) ); } - else if ( versions.getOldestUpdate( of( MAJOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { renderWarningIcon(); sink.nonBreakingSpace(); @@ -235,7 +236,7 @@ else if ( versions.getOldestUpdate( of( MAJOR ) ) != null ) sink.text( getText( "report.associations" ) ); sink.tableHeaderCell_(); sink.tableCell( cellAttributes ); - ArtifactAssociation[] associations = versions.getAssociations(); + ArtifactAssociation[] associations = details.getAssociations(); for ( int i = 0; i < associations.length; i++ ) { if ( i > 0 ) @@ -252,7 +253,7 @@ else if ( versions.getOldestUpdate( of( MAJOR ) ) != null ) sink.text( getText( "report.currentVersion" ) ); sink.tableHeaderCell_(); sink.tableCell( cellAttributes ); - sink.text( versions.getCurrentVersion().toString() ); + sink.text( details.getCurrentVersion().toString() ); sink.tableCell_(); sink.tableRow_(); if ( artifactVersions.length > 0 ) @@ -270,7 +271,7 @@ else if ( versions.getOldestUpdate( of( MAJOR ) ) != null ) sink.lineBreak(); } boolean allowed = ( rangeVersions.contains( artifactVersions[i].toString() ) ); - String label = getLabel( artifactVersions[i], versions ); + String label = getLabel( artifactVersions[i], details ); if ( !allowed ) { sink.text( "* " ); @@ -394,19 +395,19 @@ protected OverviewStats computeOverviewStats() OverviewStats stats = new OverviewStats(); model.getAllUpdates().values().forEach( details -> { - if ( oldestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) + if ( newestUpdateCache.get( details, of( SUBINCREMENTAL ) ) != null ) { stats.incrementAny(); } - else if ( oldestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) + else if ( newestUpdateCache.get( details, of( INCREMENTAL ) ) != null ) { stats.incrementIncremental(); } - else if ( oldestUpdateCache.get( details, of( MINOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MINOR ) ) != null ) { stats.incrementMinor(); } - else if ( oldestUpdateCache.get( details, of( MAJOR ) ) != null ) + else if ( newestUpdateCache.get( details, of( MAJOR ) ) != null ) { stats.incrementMajor(); } diff --git a/src/main/java/org/codehaus/mojo/versions/reporting/VersionsReportRendererBase.java b/src/main/java/org/codehaus/mojo/versions/reporting/VersionsReportRendererBase.java index 28640a78f8..589cfa8a80 100644 --- a/src/main/java/org/codehaus/mojo/versions/reporting/VersionsReportRendererBase.java +++ b/src/main/java/org/codehaus/mojo/versions/reporting/VersionsReportRendererBase.java @@ -25,15 +25,8 @@ import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.reporting.AbstractMavenReportRenderer; -import org.codehaus.mojo.versions.api.AbstractVersionDetails; import org.codehaus.plexus.i18n.I18N; -import static java.util.Optional.of; -import static org.codehaus.mojo.versions.api.Segment.INCREMENTAL; -import static org.codehaus.mojo.versions.api.Segment.MAJOR; -import static org.codehaus.mojo.versions.api.Segment.MINOR; -import static org.codehaus.mojo.versions.api.Segment.SUBINCREMENTAL; - /** * Base class over AbstractVersionsReportRenderer providing base * utility methods @@ -149,48 +142,4 @@ protected void safeItalic_() } } - protected String getLabel( ArtifactVersion version, AbstractVersionDetails versions ) - { - if ( equals( version, versions.getNewestUpdate( of( SUBINCREMENTAL ) ) ) ) - { - return getText( "report.latestSubIncremental" ); - } - - if ( equals( version, versions.getOldestUpdate( of( SUBINCREMENTAL ) ) ) ) - { - return getText( "report.nextVersion" ); - } - - if ( equals( version, versions.getOldestUpdate( of( INCREMENTAL ) ) ) ) - { - return getText( "report.nextIncremental" ); - } - - if ( equals( version, versions.getNewestUpdate( of( INCREMENTAL ) ) ) ) - { - return getText( "report.latestIncremental" ); - } - - if ( equals( version, versions.getOldestUpdate( of( MINOR ) ) ) ) - { - return getText( "report.nextMinor" ); - } - - if ( equals( version, versions.getNewestUpdate( of( MINOR ) ) ) ) - { - return getText( "report.latestMinor" ); - } - - if ( equals( version, versions.getOldestUpdate( of( MAJOR ) ) ) ) - { - return getText( "report.nextMajor" ); - } - - if ( equals( version, versions.getNewestUpdate( of( MAJOR ) ) ) ) - { - return getText( "report.latestMajor" ); - } - - return ""; - } } diff --git a/src/main/java/org/codehaus/mojo/versions/xml/DependencyUpdatesXmlRenderer.java b/src/main/java/org/codehaus/mojo/versions/xml/DependencyUpdatesXmlRenderer.java index 6b890c7b52..93bd50541b 100644 --- a/src/main/java/org/codehaus/mojo/versions/xml/DependencyUpdatesXmlRenderer.java +++ b/src/main/java/org/codehaus/mojo/versions/xml/DependencyUpdatesXmlRenderer.java @@ -152,19 +152,19 @@ public static String getSummaryBlock( Collection all int numCur = 0; for ( ArtifactVersions details : allUpdates ) { - if ( details.getOldestUpdate( of( SUBINCREMENTAL ) ) != null ) + if ( details.getNewestUpdate( of( SUBINCREMENTAL ) ) != null ) { numAny++; } - else if ( details.getOldestUpdate( of( INCREMENTAL ) ) != null ) + else if ( details.getNewestUpdate( of( INCREMENTAL ) ) != null ) { numInc++; } - else if ( details.getOldestUpdate( of( MINOR ) ) != null ) + else if ( details.getNewestUpdate( of( MINOR ) ) != null ) { numMin++; } - else if ( details.getOldestUpdate( of( MAJOR ) ) != null ) + else if ( details.getNewestUpdate( of( MAJOR ) ) != null ) { numMaj++; }