Author: skygo Date: Wed Jun 5 19:59:34 2013 New Revision: 1490017 URL: http://svn.apache.org/r1490017 Log: better pattern some javadoc
Added: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java (with props) Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractDistCheckMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/MavenMetadata.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/FluidoHTMLChecker.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLChecker.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLCheckerFactory.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusLeftHTMLChecker.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusRightHTMLChecker.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/index.md Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml Wed Jun 5 19:59:34 2013 @@ -133,6 +133,12 @@ <version>2.31.0</version> <type>jar</type> </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> </dependencies> <build> Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractDistCheckMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractDistCheckMojo.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractDistCheckMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractDistCheckMojo.java Wed Jun 5 19:59:34 2013 @@ -47,30 +47,59 @@ public abstract class AbstractDistCheckM { private static final String MAVEN_DB = "db/mavendb.csv"; + /** + * URL of repository where artifacts are stored. + */ @Parameter( property = "repositoryUrl", defaultValue = "http://repo.maven.apache.org/maven2/" ) protected String repoBaseUrl; + /** + * List of configuration line for specific inspection. + * groupId:artifactId:distributionurl. + * + */ @Parameter( property = "configurationLines", defaultValue = "" ) private List<String> configurationLines; + /** + * Site renderer. + */ @Component protected Renderer siteRenderer; + /** + * Reporting directory. + */ @Parameter( property = "project.reporting.outputDirectory", required = true ) protected File outputDirectory; + /** + * Maven project. + */ @Component protected MavenProject project; + /** + * Local repository. + */ @Parameter( property = "localRepository", required = true, readonly = true ) protected ArtifactRepository localRepository; + /** + * Artifact factory. + */ @Component protected ArtifactFactory artifactFactory; + /** + * Maven project builder. + */ @Component protected MavenProjectBuilder mavenProjectBuilder; + /** + * list of artifacts repositories. + */ protected List<ArtifactRepository> artifactRepositories = new LinkedList<>(); abstract void checkArtifact( ConfigurationLineInfo request, String repoBase ) throws MojoExecutionException; @@ -96,11 +125,21 @@ public abstract class AbstractDistCheckM @Override public void execute() throws MojoExecutionException { - ArtifactRepository aa = new MavenArtifactRepository( "central", repoBaseUrl, new DefaultRepositoryLayout(), new ArtifactRepositoryPolicy( false, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ), new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ) ); + ArtifactRepository aa = new MavenArtifactRepository( "central", + repoBaseUrl, + new DefaultRepositoryLayout(), + new ArtifactRepositoryPolicy( + false, + ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ), + new ArtifactRepositoryPolicy( + true, + ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ) ); artifactRepositories.add( aa ); if ( configurationLines.isEmpty() ) { - try ( BufferedReader input = new BufferedReader( new InputStreamReader( Thread.currentThread().getContextClassLoader().getResource( MAVEN_DB ).openStream() ) ) ) + try ( BufferedReader input = new BufferedReader( + new InputStreamReader( + Thread.currentThread().getContextClassLoader().getResource( MAVEN_DB ).openStream() ) ) ) { String text; while ( ( text = input.readLine() ) != null ) @@ -123,27 +162,43 @@ public abstract class AbstractDistCheckM else { String[] artifactInfo = line.split( ";" ); - checkArtifact( new ConfigurationLineInfo( artifactInfo[0], artifactInfo[1], artifactInfo[2] ), repoBaseUrl ); + checkArtifact( + new ConfigurationLineInfo( artifactInfo[0], artifactInfo[1], artifactInfo[2] ), repoBaseUrl ); } } } + /** + * add an error icon. + * + * @param sink doxiasink + */ protected void iconError( Sink sink ) { icon( sink, "error" ); } - + + /** + * add a warning icon. + * + * @param sink doxiasink + */ protected void iconWarning( Sink sink ) { icon( sink, "warning" ); } - + + /** + * add an succses icon. + * + * @param sink doxiasink + */ protected void iconSuccess( Sink sink ) { icon( sink, "success" ); } - protected void icon( Sink sink, String level ) + private void icon( Sink sink, String level ) { sink.figure(); sink.figureCaption(); Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java Wed Jun 5 19:59:34 2013 @@ -87,9 +87,9 @@ class ConfigurationLineInfo return getBaseURL( repoBaseUrl, version + URLSEP + artifactId + "-" + version + ".pom" ); } - void addMetadata( MavenMetadata metadata ) + void addMetadata( MavenMetadata aMetadata ) { - this.metadata = metadata; + this.metadata = aMetadata; } String getReleaseFromMetadata() Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java Wed Jun 5 19:59:34 2013 @@ -57,7 +57,10 @@ import org.jsoup.select.Elements; public class DistCheckSiteMojo extends AbstractDistCheckMojo { private static final String MAVEN_SITE = "http://maven.apache.org"; - private static final int HTTP_OK = 200; + /** + * Http status ok code. + */ + protected static final int HTTP_OK = 200; @Override public String getOutputName() @@ -236,7 +239,8 @@ public class DistCheckSiteMojo extends A sink.body(); sink.section1(); sink.rawText( "Checked sites, also do some basic checking in index.html contents." ); - sink.rawText( "This is to help maintaining some coherence. How many site are skin fluido, stylus, where they have version (right left)" ); + sink.rawText( "This is to help maintaining some coherence. How many site are skin fluido, stylus," + + " where they have version (right left)" ); sink.rawText( "All sun icons in one column is kind of objective." ); sink.section1_(); sink.table(); @@ -345,20 +349,29 @@ public class DistCheckSiteMojo extends A return url; } - private void checkSite( String repourl, ConfigurationLineInfo r, String version ) + private void checkSite( String repourl, ConfigurationLineInfo configLine, String version ) { - DistCheckSiteResult result = new DistCheckSiteResult( r, version ); + DistCheckSiteResult result = new DistCheckSiteResult( configLine, version ); results.add( result ); StringBuilder message = new StringBuilder(); try { - Artifact pluginArtifact = artifactFactory.createProjectArtifact( r.getGroupId(), r.getArtifactId(), version ); - MavenProject pluginProject = mavenProjectBuilder.buildFromRepository( pluginArtifact, artifactRepositories, localRepository, false ); + Artifact pluginArtifact = artifactFactory.createProjectArtifact( + configLine.getGroupId(), + configLine.getArtifactId(), version ); + MavenProject pluginProject = mavenProjectBuilder.buildFromRepository( + pluginArtifact, + artifactRepositories, localRepository, false ); result.setUrl( pluginProject.getUrl() ); Document doc = Jsoup.connect( pluginProject.getUrl() ).get(); - message.append( "Site for " ).append( pluginProject.getArtifactId() ).append( " at " ).append( pluginProject.getUrl() ).append( " seek for" ).append( pluginProject.getVersion() ).append( " " ); + message.append( "Site for " ). + append( pluginProject.getArtifactId() ). + append( " at " ). + append( pluginProject.getUrl() ). + append( " seek for" ). + append( pluginProject.getVersion() ); for ( HTMLChecker c : checker ) { result.getCheckMap().put( c, c.isOk( doc, version ) ); @@ -385,19 +398,23 @@ public class DistCheckSiteMojo extends A @Override void checkArtifact( ConfigurationLineInfo configLine, String repoBaseUrl ) throws MojoExecutionException { - try ( BufferedReader input = new BufferedReader( new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) + try ( BufferedReader input = new BufferedReader( + new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) { JAXBContext context = JAXBContext.newInstance( MavenMetadata.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); MavenMetadata metadata = ( MavenMetadata ) unmarshaller.unmarshal( input ); configLine.addMetadata( metadata ); - getLog().info( "Checking for site for artifact : " + configLine.getGroupId() + ":" + configLine.getArtifactId() + ":" + metadata.versioning.latest ); - // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side + getLog().debug( "Checking for site for artifact : " + configLine.getGroupId() + ":" + + configLine.getArtifactId() + ":" + metadata.versioning.latest ); + // revert sort versions (not handling alpha and + // complex vesion scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); getLog().warn( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); // central - checkSite( configLine.getVersionnedPomFileURL( repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ); + checkSite( configLine.getVersionnedPomFileURL( + repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ); } catch ( MalformedURLException ex ) Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java Wed Jun 5 19:59:34 2013 @@ -56,7 +56,7 @@ import org.openqa.selenium.firefox.Firef * @author skygo */ @Mojo( name = "check-screen-site" ) -public class DistCheckSiteTakeScreenMojo extends AbstractDistCheckMojo +public class DistCheckSiteTakeScreenMojo extends DistCheckSiteMojo { private static final String MAVEN_SITE = "http://maven.apache.org"; @@ -85,7 +85,7 @@ public class DistCheckSiteTakeScreenMojo private String url; private Map<HTMLChecker, Boolean> checkMap = new HashMap<>(); - private int statusCode = 200; + private int statusCode = HTTP_OK; public DistCheckSiteResult( ConfigurationLineInfo r, String version ) { @@ -113,9 +113,9 @@ public class DistCheckSiteTakeScreenMojo return checkMap; } - private void setHTTPErrorUrl( int statusCode ) + private void setHTTPErrorUrl( int aStatusCode ) { - this.statusCode = statusCode; + this.statusCode = aStatusCode; } /** @@ -129,7 +129,7 @@ public class DistCheckSiteTakeScreenMojo private void getOverall( Sink sink ) { - if ( statusCode != 200 ) + if ( statusCode != HTTP_OK ) { iconError( sink ); } @@ -181,7 +181,8 @@ public class DistCheckSiteTakeScreenMojo sink.body(); sink.section1(); sink.rawText( "Checked sites, also do some basic checking in index.html contents." ); - sink.rawText( "This is to help maintaining some coherence. How many site are skin fluido, stylus, where they have version (right left)" ); + sink.rawText( "This is to help maintaining some coherence. How many site are skin fluido, " + + "stylus, where they have version (right left)" ); sink.rawText( "All sun icons in one column is kind of objective." ); sink.section1_(); sink.table(); @@ -225,7 +226,7 @@ public class DistCheckSiteTakeScreenMojo sink.tableCell_(); sink.tableCell(); - if ( csr.getStatusCode() != 200 ) + if ( csr.getStatusCode() != HTTP_OK ) { iconError( sink ); sink.rawText( "[" + csr.getStatusCode() + "] " ); @@ -284,8 +285,10 @@ public class DistCheckSiteTakeScreenMojo StringBuilder message = new StringBuilder(); try { - Artifact pluginArtifact = artifactFactory.createProjectArtifact( r.getGroupId(), r.getArtifactId(), version ); - MavenProject pluginProject = mavenProjectBuilder.buildFromRepository( pluginArtifact, artifactRepositories, localRepository, false ); + Artifact pluginArtifact = artifactFactory.createProjectArtifact( + r.getGroupId(), r.getArtifactId(), version ); + MavenProject pluginProject = mavenProjectBuilder.buildFromRepository( + pluginArtifact, artifactRepositories, localRepository, false ); result.setUrl( pluginProject.getUrl() ); getLog().error( pluginProject.getUrl() ); @@ -298,7 +301,13 @@ public class DistCheckSiteTakeScreenMojo driver.close(); Document doc = Jsoup.connect( pluginProject.getUrl() ).get(); getLog().error( pluginProject.getUrl() ); - message.append( "Site for " ).append( pluginProject.getArtifactId() ).append( " at " ).append( pluginProject.getUrl() ).append( " seek for" ).append( pluginProject.getVersion() ).append( " " ); + message.append( "Site for " ). + append( pluginProject.getArtifactId() ). + append( " at " ). + append( pluginProject.getUrl() ). + append( " seek for" ). + append( pluginProject.getVersion() ). + append( " " ); for ( HTMLChecker c : checker ) { result.getCheckMap().put( c, c.isOk( doc, version ) ); @@ -325,19 +334,24 @@ public class DistCheckSiteTakeScreenMojo @Override void checkArtifact( ConfigurationLineInfo configLine, String repoBaseUrl ) throws MojoExecutionException { - try ( BufferedReader input = new BufferedReader( new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) + try ( BufferedReader input = new BufferedReader( + new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) { JAXBContext context = JAXBContext.newInstance( MavenMetadata.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); MavenMetadata metadata = ( MavenMetadata ) unmarshaller.unmarshal( input ); - getLog().info( "Checking for site for artifact : " + configLine.getGroupId() + ":" + configLine.getArtifactId() + ":" + metadata.versioning.latest ); - // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side + getLog().info( "Checking for site for artifact : " + configLine.getGroupId() + ":" + + configLine.getArtifactId() + ":" + metadata.versioning.latest ); + // revert sort versions (not handling alpha and complex + // vesion scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); getLog().warn( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); configLine.addMetadata( metadata ); // central - checkSite( configLine.getVersionnedPomFileURL( repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ); + checkSite( + configLine.getVersionnedPomFileURL( repoBaseUrl, metadata.versioning.latest ), + configLine, metadata.versioning.latest ); } catch ( MalformedURLException ex ) Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java Wed Jun 5 19:59:34 2013 @@ -34,7 +34,6 @@ import javax.xml.bind.Unmarshaller; import org.apache.maven.doxia.markup.HtmlMarkup; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributeSet; -import org.apache.maven.doxia.sink.SinkEventAttributes; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.reporting.MavenReportException; @@ -74,6 +73,8 @@ public class DistCheckSourceReleaseMojo return "Verification of source release"; } + + class DistCheckSourceRelease extends AbstractCheckResult @@ -105,6 +106,133 @@ public class DistCheckSourceReleaseMojo } private List<DistCheckSourceRelease> results = new LinkedList<>(); + private void reportLine( Sink sink, DistCheckSourceRelease csr ) + { + ConfigurationLineInfo cli = csr.getConfigurationLine(); + + sink.tableRow(); + sink.tableCell(); + // shorten groupid + sink.rawText( csr.getConfigurationLine().getGroupId().replaceAll( "org.apache.maven", "o.a.m" ) ); + sink.tableCell_(); + sink.tableCell(); + sink.rawText( csr.getConfigurationLine().getArtifactId() ); + sink.tableCell_(); + sink.tableCell(); + sink.link( cli.getMetadataFileURL( repoBaseUrl ) ); + sink.rawText( csr.getVersion() ); + sink.link_(); + sink.tableCell_(); + + sink.tableCell(); + sink.rawText( csr.getConfigurationLine().getReleaseFromMetadata() ); + sink.tableCell_(); + + sink.tableCell(); + sink.link( cli.getBaseURL( repoBaseUrl, "" ) ); + sink.text( "artifact" ); + sink.link_(); + sink.text( "/" ); + sink.link( cli.getVersionnedFolderURL( repoBaseUrl, csr.getVersion() ) ); + sink.text( csr.getVersion() ); + sink.link_(); + sink.text( "/source-release" ); + if ( csr.central.isEmpty() ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } + for ( String missing : csr.central ) + { + sink.lineBreak(); + iconError( sink ); + sink.rawText( missing ); + } + sink.tableCell_(); + // dist + sink.tableCell(); + sink.link( cli.getDist() ); + sink.text( cli.getDist().substring( DIST_AREA.length() ) ); + sink.link_(); + sink.text( "source-release" ); + if ( csr.dist.isEmpty() ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } + StringBuilder cliMissing = new StringBuilder(); + for ( String missing : csr.dist ) + { + sink.lineBreak(); + iconError( sink ); + sink.rawText( missing ); + cliMissing.append( "\nwget -O " ).append( cli.getVersionnedFolderURL( repoBaseUrl, csr.getVersion() ) ). + append( "/" ).append( missing ); + cliMissing.append( "\nsvn co " ).append( missing ); + } + if ( !cliMissing.toString().isEmpty() ) + { + sink.lineBreak(); + SinkEventAttributeSet atts = new SinkEventAttributeSet(); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_START ) + }, atts ); + sink.text( cliMissing.toString() ); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_END ) + }, null ); + } + sink.tableCell_(); + //older + sink.tableCell(); + sink.link( cli.getDist() ); + sink.text( cli.getDist().substring( DIST_AREA.length() ) ); + sink.link_(); + sink.text( "source-release" ); + if ( csr.dist.isEmpty() ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } + + StringBuilder cliOlder = new StringBuilder(); + for ( String missing : csr.older ) + { + sink.lineBreak(); + iconError( sink ); + sink.rawText( missing ); + cliOlder.append( "\nsvn rm " ).append( missing ); + } + if ( !cliOlder.toString().isEmpty() ) + { + sink.lineBreak(); + SinkEventAttributeSet atts = new SinkEventAttributeSet(); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_START ) + }, atts ); + sink.text( cliOlder.toString() ); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_END ) + }, null ); + } + + sink.tableCell_(); + sink.tableRow_(); + } + @Override protected void executeReport( Locale locale ) throws MavenReportException { @@ -130,7 +258,8 @@ public class DistCheckSourceReleaseMojo sink.body(); sink.section1(); sink.paragraph(); - sink.text( "Check Source Release (= artifactId + version + '-source-release.zip[.asc|.md5]') availability in:" ); + sink.text( "Check Source Release" + + " (= artifactId + version + '-source-release.zip[.asc|.md5]') availability in:" ); sink.paragraph_(); sink.paragraph(); sink.text( "cli command and olders artifact exploration is Work In Progress" ); @@ -175,123 +304,8 @@ public class DistCheckSourceReleaseMojo for ( DistCheckSourceRelease csr : results ) { - ConfigurationLineInfo cli = csr.getConfigurationLine(); + reportLine( sink, csr ); - sink.tableRow(); - sink.tableCell(); - // shorten groupid - sink.rawText( csr.getConfigurationLine().getGroupId().replaceAll( "org.apache.maven", "o.a.m" ) ); - sink.tableCell_(); - sink.tableCell(); - sink.rawText( csr.getConfigurationLine().getArtifactId() ); - sink.tableCell_(); - sink.tableCell(); - sink.link( cli.getMetadataFileURL( repoBaseUrl ) ); - sink.rawText( csr.getVersion() ); - sink.link_(); - sink.tableCell_(); - - sink.tableCell(); - sink.rawText( csr.getConfigurationLine().getReleaseFromMetadata() ); - sink.tableCell_(); - - sink.tableCell(); - sink.link( cli.getBaseURL( repoBaseUrl, "" ) ); - sink.text( "artifact" ); - sink.link_(); - sink.text( "/" ); - sink.link( cli.getVersionnedFolderURL( repoBaseUrl, csr.getVersion() ) ); - sink.text( csr.getVersion() ); - sink.link_(); - sink.text( "/source-release" ); - if ( csr.central.isEmpty() ) - { - iconSuccess( sink ); - } - else - { - iconWarning( sink ); - } - for ( String missing : csr.central ) - { - sink.lineBreak(); - iconError( sink ); - sink.rawText( missing ); - } - sink.tableCell_(); - // dist - sink.tableCell(); - sink.link( cli.getDist() ); - sink.text( cli.getDist().substring( DIST_AREA.length() ) ); - sink.link_(); - sink.text( "source-release" ); - if ( csr.dist.isEmpty() ) - { - iconSuccess( sink ); - } - else - { - iconWarning( sink ); - } - StringBuilder cliMissing = new StringBuilder(); - for ( String missing : csr.dist ) - { - sink.lineBreak(); - iconError( sink ); - sink.rawText( missing ); - cliMissing.append( "\nwget -O " ).append( cli.getVersionnedFolderURL( repoBaseUrl, csr.getVersion() ) ). - append( "/" ).append( missing ); - cliMissing.append( "\nsvn co " ).append( missing ); - } - if ( !cliMissing.toString().isEmpty() ) - { - sink.lineBreak(); - SinkEventAttributeSet atts = new SinkEventAttributeSet(); - sink.unknown( "pre", new Object[] - { - new Integer( HtmlMarkup.TAG_TYPE_START ) - }, atts ); - sink.text( cliMissing.toString() ); - sink.unknown( "pre", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); - } - sink.tableCell_(); - //older - sink.tableCell(); - sink.link( cli.getDist() ); - sink.text( cli.getDist().substring( DIST_AREA.length() ) ); - sink.link_(); - sink.text( "source-release" ); - if ( csr.dist.isEmpty() ) - { - iconSuccess( sink ); - } - else - { - iconWarning( sink ); - } - - StringBuilder cliOlder = new StringBuilder(); - for ( String missing : csr.older ) - { - sink.lineBreak(); - iconError( sink ); - sink.rawText( missing ); - cliOlder.append( "\nsvn rm " ).append( missing ); - } - if ( !cliOlder.toString().isEmpty() ) - { - sink.lineBreak(); - SinkEventAttributeSet atts = new SinkEventAttributeSet(); - sink.unknown( "pre", new Object[] - { - new Integer( HtmlMarkup.TAG_TYPE_START ) - }, atts ); - sink.text( cliOlder.toString() ); - sink.unknown( "pre", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); - } - - sink.tableCell_(); - sink.tableRow_(); } sink.table_(); sink.body_(); @@ -299,28 +313,36 @@ public class DistCheckSourceReleaseMojo sink.close(); } - private List<String> checkOldinRepos( String repourl, ConfigurationLineInfo r, String version ) throws IOException + /** + * Report a pattern for an artifact. + * + * @param artifact artifact name + * @return regex + */ + protected static String getArtifactPattern( String artifact ) + { + /// not the safest + return "^" + artifact + "-[0-9].*source-release.*$"; + } + + private List<String> checkOldinRepos( String repourl, ConfigurationLineInfo configLine, String version ) + throws IOException { Document doc = Jsoup.connect( repourl ).get(); Elements links = doc.select( "a[href]" ); List<String> expectedFile = new LinkedList<>(); List<String> retrievedFile = new LinkedList<>(); - // http://maven.apache.org/developers/release/maven-project-release-procedure.html#Copy_the_source_release_to_the_Apache_Distribution_Area - // build source artifact name - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip" ); - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.asc" ); - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.md5" ); + + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip" ); + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.asc" ); + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.md5" ); for ( Element e : links ) { String art = e.attr( "href" ); - // need a regex no strong enough - if ( art.startsWith( r.getArtifactId() + "-" ) && (art.endsWith( "-source-release.zip" ) - || art.endsWith( "-source-release.zip.asc" ) - || art.endsWith( "-source-release.zip.md5" )) ) - //if (art.matches( "^"+r.getArtifactId()+"-\d.-source-release.zip[]")) + if ( art.matches( getArtifactPattern( configLine.getArtifactId() ) ) ) { retrievedFile.add( e.attr( "href" ) ); @@ -336,17 +358,17 @@ public class DistCheckSourceReleaseMojo } return retrievedFile; } - private List<String> checkRepos( String repourl, ConfigurationLineInfo r, String version ) throws IOException + private List<String> checkRepos( String repourl, ConfigurationLineInfo configLine, String version ) + throws IOException { Document doc = Jsoup.connect( repourl ).get(); Elements links = doc.select( "a[href]" ); List<String> expectedFile = new LinkedList<>(); List<String> retrievedFile = new LinkedList<>(); - // http://maven.apache.org/developers/release/maven-project-release-procedure.html#Copy_the_source_release_to_the_Apache_Distribution_Area // build source artifact name - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip" ); - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.asc" ); - expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.md5" ); + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip" ); + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.asc" ); + expectedFile.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.md5" ); @@ -368,24 +390,31 @@ public class DistCheckSourceReleaseMojo @Override void checkArtifact( ConfigurationLineInfo configLine, String repoBaseUrl ) throws MojoExecutionException { - try ( BufferedReader input = new BufferedReader( new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) + try ( BufferedReader input = new BufferedReader( + new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) { JAXBContext context = JAXBContext.newInstance( MavenMetadata.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); MavenMetadata metadata = ( MavenMetadata ) unmarshaller.unmarshal( input ); - getLog().info( "Checking for artifact : " + configLine.getGroupId() + ":" + configLine.getArtifactId() + ":" + metadata.versioning.latest ); - // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side + getLog().debug( "Checking for artifact : " + configLine.getGroupId() + ":" + + configLine.getArtifactId() + ":" + metadata.versioning.latest ); + // revert sort versions (not handling alpha and + //complex version scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); - getLog().warn( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); + getLog().debug( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); configLine.addMetadata( metadata ); DistCheckSourceRelease result = new DistCheckSourceRelease( configLine, metadata.versioning.latest ); results.add( result ); // central - result.setMisingCentralSourceRelease( checkRepos( configLine.getVersionnedFolderURL( repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ) ); + result.setMisingCentralSourceRelease( + checkRepos( configLine.getVersionnedFolderURL( + repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ) ); //dist - result.setMissingDistSourceRelease( checkRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); - result.setOlderSourceRelease( checkOldinRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); + result.setMissingDistSourceRelease( + checkRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); + result.setOlderSourceRelease( + checkOldinRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); } catch ( MalformedURLException ex ) { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/MavenMetadata.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/MavenMetadata.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/MavenMetadata.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/MavenMetadata.java Wed Jun 5 19:59:34 2013 @@ -41,6 +41,9 @@ public class MavenMetadata @XmlElement VersioningTag versioning = new VersioningTag(); + /** + * Versioning element of metadata. + */ public static class VersioningTag { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/FluidoHTMLChecker.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/FluidoHTMLChecker.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/FluidoHTMLChecker.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/FluidoHTMLChecker.java Wed Jun 5 19:59:34 2013 @@ -22,6 +22,11 @@ package org.apache.maven.dist.tools.chec import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +/** + * Check if version is present in fluido skin. + * + * @author skygo + */ public class FluidoHTMLChecker implements HTMLChecker { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLChecker.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLChecker.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLChecker.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLChecker.java Wed Jun 5 19:59:34 2013 @@ -31,20 +31,22 @@ public interface HTMLChecker /** * name of the checker. * - * @return + * @return name */ String getName(); /** - * skink related ? + * Get an id representing sink. + * + * @return string for skin */ String getSkin(); /** * true if checker find pattern in document * - * @param doc - * @param version - * @return + * @param doc html document + * @param version version to check against + * @return true if version is found */ boolean isOk( Document doc, String version ); Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLCheckerFactory.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLCheckerFactory.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLCheckerFactory.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/HTMLCheckerFactory.java Wed Jun 5 19:59:34 2013 @@ -33,6 +33,10 @@ public final class HTMLCheckerFactory { } + /** + * get all checker + * @return list of checker + */ public static List<HTMLChecker> getCheckers() { List<HTMLChecker> tmp = new LinkedList<>(); Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusLeftHTMLChecker.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusLeftHTMLChecker.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusLeftHTMLChecker.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusLeftHTMLChecker.java Wed Jun 5 19:59:34 2013 @@ -22,6 +22,11 @@ package org.apache.maven.dist.tools.chec import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +/** + * Check if version is present on left side in stylus skin. + * + * @author skygo + */ public class StylusLeftHTMLChecker implements HTMLChecker { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusRightHTMLChecker.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusRightHTMLChecker.java?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusRightHTMLChecker.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/checkers/StylusRightHTMLChecker.java Wed Jun 5 19:59:34 2013 @@ -22,6 +22,11 @@ package org.apache.maven.dist.tools.chec import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +/** + * Check if version is present on right side in stylus skin. + * + * @author skygo + */ public class StylusRightHTMLChecker implements HTMLChecker { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/index.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/index.md?rev=1490017&r1=1490016&r2=1490017&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/index.md (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/index.md Wed Jun 5 19:59:34 2013 @@ -16,4 +16,7 @@ in other context, it would require more [1]: ./dist-tool-checksite.html [2]: ./dist-tool-checksourcerelease.html -[3]: ./todo.html \ No newline at end of file +[3]: ./todo.html + +http://maven.apache.org/developers/release/maven-project-release-procedure.html#Copy_the_source_release_to_the_Apache_Distribution_Area + \ No newline at end of file Added: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java?rev=1490017&view=auto ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java (added) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java Wed Jun 5 19:59:34 2013 @@ -0,0 +1,58 @@ +package org.apache.maven.dist.tools; + +/* + * Copyright 2013 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.regex.Pattern; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author skygo + */ +public class PatternTest +{ + + /** + * Test of getGroupId method, of class ConfigurationLineInfo. + */ + @Test + public void testGetGroupId() + { + String q = DistCheckSourceReleaseMojo.getArtifactPattern( "doxia" ); + + assertTrue( "doxia-1.4-source-release.zip.asc".matches( q ) ); + assertTrue( "doxia-1.4-source-release.zip.md5".matches( q ) ); + assertTrue( "doxia-1.4-source-release.zip".matches( q ) ); + assertFalse( "doxia-sitetools-1.4-source-release.zip.asc".matches( q ) ); + assertFalse( "doxia-sitetools-1.4-source-release.zip.md5".matches( q ) ); + assertFalse( "doxia-sitetools-1.4-source-release.zip".matches( q ) ); + + String r = DistCheckSourceReleaseMojo.getArtifactPattern( "doxia-sitetools" ); + + assertFalse( "doxia-1.4-source-release.zip.asc".matches( r ) ); + assertFalse( "doxia-1.4-source-release.zip.md5".matches( r ) ); + assertFalse( "doxia-1.4-source-release.zip".matches( r ) ); + assertTrue( "doxia-sitetools-1.4-source-release.zip.asc".matches( r ) ); + assertTrue( "doxia-sitetools-1.4-source-release.zip.md5".matches( r ) ); + assertTrue( "doxia-sitetools-1.4-source-release.zip".matches( r ) ); + } + + + + +} Propchange: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java ------------------------------------------------------------------------------ svn:eol-style = native