Author: skygo Date: Fri May 31 23:36:06 2013 New Revision: 1488429 URL: http://svn.apache.org/r1488429 Log: better output on site check + Http status code fluido style start to be usable.
Added: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml (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/AbstractCheckResult.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/DistCheckSourceReleaseMojo.java 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=1488429&r1=1488428&r2=1488429&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml Fri May 31 23:36:06 2013 @@ -28,7 +28,12 @@ <prerequisites> <maven>3.0.4</maven> </prerequisites> - + <licenses> + <license> + <name>The Apache Software License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> <dependencies> <dependency> <groupId>org.apache.maven</groupId> @@ -89,7 +94,11 @@ <version>${mvnversion}</version> </dependency> - + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.2.0</version> + </dependency> </dependencies> <build> <pluginManagement> @@ -220,12 +229,17 @@ </reports> </reportSet> </reportSets> - <!-- <configuration> - <configurationLines> - <configurationLine>org.apache.maven.wagon;wagon;https://dist.apache.org/repos/dist/release/maven/wagon/</configurationLine> - </configurationLines> - </configuration> - --> + <!-- <configuration> + <configurationLines> + <configurationLine>org.apache.maven.wagon;wagon;https://dist.apache.org/repos/dist/release/maven/wagon/</configurationLine> + </configurationLines> + </configuration> + --> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-plugin-plugin</artifactId> + <version>3.2</version> </plugin> </plugins> </reporting> Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractCheckResult.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractCheckResult.java?rev=1488429&r1=1488428&r2=1488429&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractCheckResult.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/AbstractCheckResult.java Fri May 31 23:36:06 2013 @@ -35,7 +35,7 @@ class AbstractCheckResult } /** - * @return the r + * @return the request */ public ConfigurationLineInfo getConfigurationLine() { 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=1488429&r1=1488428&r2=1488429&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 Fri May 31 23:36:06 2013 @@ -1,4 +1,7 @@ package org.apache.maven.dist.tools; + +import org.apache.maven.doxia.sink.Sink; + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file 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=1488429&r1=1488428&r2=1488429&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 Fri May 31 23:36:06 2013 @@ -32,17 +32,21 @@ import java.util.Map; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; +import org.apache.maven.artifact.repository.MavenArtifactRepository; +import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.doxia.sink.Sink; -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.ProjectBuilder; +import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.reporting.MavenReportException; -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.RepositorySystemSession; +import org.jsoup.HttpStatusException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -56,17 +60,30 @@ public class DistCheckSiteMojo extends A { // common type for site checker + @Parameter( property = "localRepository", required = true, readonly = true ) + protected ArtifactRepository localRepository; @Component - private ProjectBuilder projectBuilder; + private ArtifactFactory artifactFactory; @Component - private RepositorySystem repoSystem; - /** - * The entry point to Aether, i.e. the component doing all the work. - * - * @parameter default-value="${repositorySystemSession}" - * @readonly - */ - private RepositorySystemSession repoSession; + private MavenProjectBuilder mavenProjectBuilder; + + @Override + public String getOutputName() + { + return "dist-tool-checksite"; + } + + @Override + public String getName( Locale locale ) + { + return "Disttool> Sites"; + } + + @Override + public String getDescription( Locale locale ) + { + return "Verification of various maven web sites"; + } interface HTMLChecker { @@ -92,7 +109,8 @@ public class DistCheckSiteMojo extends A { private String url; - private Map<DistCheckSiteMojo.HTMLChecker, Boolean> checkMap = new HashMap<>(); + private Map<HTMLChecker, Boolean> checkMap = new HashMap<>(); + private int statusCode = 200; public DistCheckSiteResult( ConfigurationLineInfo r, String version ) { @@ -115,14 +133,53 @@ public class DistCheckSiteMojo extends A /** * @return the checkMap */ - public Map<DistCheckSiteMojo.HTMLChecker, Boolean> getCheckMap() + public Map<HTMLChecker, Boolean> getCheckMap() { return checkMap; } + + private void setHTTPErrorUrl( int statusCode ) + { + this.statusCode = statusCode; + } + + /** + * @return the statusCode + */ + public int getStatusCode() + { + return statusCode; + } + + private void getOverall( Sink sink ) + { + + if ( statusCode != 200 ) + { + iconError( sink ); + } + else + { + boolean tmp = false; + for ( Map.Entry<HTMLChecker, Boolean> e : checkMap.entrySet() ) + { + tmp = tmp || e.getValue(); + } + if ( tmp ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } + } + } } // keep result private List<DistCheckSiteResult> results = new LinkedList<>(); private List<HTMLChecker> checker = new LinkedList<>(); + private List<ArtifactRepository> artifactRepositories = new LinkedList<>(); @Override protected void executeReport( Locale locale ) throws MavenReportException @@ -161,6 +218,9 @@ public class DistCheckSiteMojo extends A sink.tableHeaderCell(); sink.rawText( "URL" ); sink.tableHeaderCell_(); + sink.tableHeaderCell(); + sink.rawText( "check summary" ); + sink.tableHeaderCell_(); for ( HTMLChecker c : checker ) { sink.tableHeaderCell(); @@ -180,18 +240,37 @@ public class DistCheckSiteMojo extends A sink.rawText( csr.getVersion() ); sink.tableCell_(); sink.tableCell(); - sink.rawText( csr.getUrl() ); + if ( csr.getStatusCode() != 200 ) + { + iconError( sink ); + sink.rawText( "[" + csr.getStatusCode() + "]" + csr.getUrl() ); + } + else + { + sink.rawText( csr.getUrl() ); + } sink.tableCell_(); + sink.tableHeaderCell(); + csr.getOverall( sink ); + sink.tableHeaderCell_(); + for ( HTMLChecker c : checker ) { sink.tableCell(); if ( csr.getCheckMap().get( c ) != null ) { - sink.rawText( csr.getCheckMap().get( c ).toString() ); + if ( csr.getCheckMap().get( c ) ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } } else { - sink.rawText( "Error" ); + iconError( sink ); } sink.tableCell_(); @@ -204,59 +283,20 @@ public class DistCheckSiteMojo extends A sink.close(); } - @Override - public String getOutputName() - { - return "check-siteOutputName"; - } - - @Override - public String getName( Locale locale ) - { - return "Check sites"; - } - - @Override - public String getDescription( Locale locale ) - { - return "check-siteDescription"; - } - /*@Component - private RepositorySystemSession repoSession; - */ - private void checkSite( String repourl, ConfigurationLineInfo r, String version ) { DistCheckSiteResult result = new DistCheckSiteResult( r, version ); results.add( result ); StringBuilder message = new StringBuilder(); - try (BufferedReader input = new BufferedReader( new InputStreamReader( new URL( repourl ).openStream() ) )) + try { - MavenXpp3Reader mavenreader = new MavenXpp3Reader(); - Model m = mavenreader.read( input ); - // need to have parent information and resolve properties - // - /* ModelBuildingRequest md = new DefaultModelBuildingRequest(); - md.setPomFile( outputDirectory ); - DefaultModelBuilder d = new DefaultModelBuilder(); - - - DefaultRepositorySystemSession repoSystem = new MavenRepositorySystemSession(); - DefaultProjectBuildingRequest req = new DefaultProjectBuildingRequest(); - //session. - req.setRepositorySession( repoSession ); - //session. - getLog().warn( "" + repoSession ); - - req.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_STRICT ); - ProjectBuildingResult res = projectBuilder.build( new UrlModelSource( new URL( repourl ) ), req );*/ - MavenProject projectc = new MavenProject( m );//res.getProject(); - - getLog().info( projectc.getUrl() + "+" + projectc.getProperties() ); - result.setUrl( projectc.getUrl() ); - Document doc = Jsoup.connect( projectc.getUrl() ).get(); - result.setUrl( projectc.getUrl() ); - message.append( "Site for " ).append( projectc.getArtifactId() ).append( " at " ).append( projectc.getUrl() ).append( " seek for" ).append( projectc.getVersion() ).append( " " ); + Artifact pluginArtifact = artifactFactory.createProjectArtifact( r.getGroupId(), r.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( " " ); for ( HTMLChecker c : checker ) { result.getCheckMap().put( c, c.isOk( doc, version ) ); @@ -266,10 +306,16 @@ public class DistCheckSiteMojo extends A getLog().warn( message.toString() ); } + catch ( HttpStatusException hes ) + { + getLog().warn( hes.getStatusCode() + " for " + hes.getUrl() ); + result.setHTTPErrorUrl( hes.getStatusCode() ); + } catch ( Exception ex ) { //continue for other artifact getLog().error( ex.getMessage() ); + getLog().error( ex ); } } @@ -305,13 +351,17 @@ public class DistCheckSiteMojo extends A @Override public void execute() throws MojoExecutionException { + //resolve only to what we set + 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 ); + //add html checker checker.add( new HTMLChecker() { @Override public String getName() { - return "Stylus Skin:"; + return "Stylus Skin"; } @Override @@ -333,7 +383,7 @@ public class DistCheckSiteMojo extends A @Override public String getName() { - return "Fluido Skin:"; + return "Fluido Skin"; } @Override @@ -352,4 +402,34 @@ public class DistCheckSiteMojo extends A } ); super.execute(); } + + private void iconError( Sink sink ) + { + sink.figure(); + sink.figureCaption(); + sink.text( "error" ); + sink.figureCaption_(); + sink.figureGraphics( "images/icon_error_sml.gif" ); + sink.figure_(); + } + + private void iconWarning( Sink sink ) + { + sink.figure(); + sink.figureCaption(); + sink.text( "warning" ); + sink.figureCaption_(); + sink.figureGraphics( "images/icon_warning_sml.gif" ); + sink.figure_(); + } + + private void iconSuccess( Sink sink ) + { + sink.figure(); + sink.figureCaption(); + sink.text( "success" ); + sink.figureCaption_(); + sink.figureGraphics( "images/icon_success_sml.gif" ); + sink.figure_(); + } } 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=1488429&r1=1488428&r2=1488429&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 Fri May 31 23:36:06 2013 @@ -50,6 +50,24 @@ public class DistCheckSourceReleaseMojo { //Artifact metadata retrieval done y hands. + @Override + public String getOutputName() + { + return "dist-tool-checksourcerelease"; + } + + @Override + public String getName( Locale locale ) + { + return "Disttool> Source Release"; + } + + @Override + public String getDescription( Locale locale ) + { + return "Verification of source release"; + } + class DistCheckSourceRelease extends AbstractCheckResult { @@ -155,24 +173,6 @@ public class DistCheckSourceReleaseMojo sink.close(); } - @Override - public String getOutputName() - { - return "check-source-releaseOutputName"; - } - - @Override - public String getName( Locale locale ) - { - return "check-source-releaseName"; - } - - @Override - public String getDescription( Locale locale ) - { - return "check-source-releaseDescription"; - } - private List<String> checkRepos( String repourl, ConfigurationLineInfo r, String version ) throws IOException { Document doc = Jsoup.connect( repourl ).get(); Added: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml?rev=1488429&view=auto ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml (added) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml Fri May 31 23:36:06 2013 @@ -0,0 +1,10 @@ +<project name="dist-tool"> + <skin> + <groupId>org.apache.maven.skins</groupId> + <artifactId>maven-fluido-skin</artifactId> + <version>1.3.0</version> + </skin> + <body> + <menu ref="reports"/> + </body> +</project> \ No newline at end of file Propchange: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/site.xml ------------------------------------------------------------------------------ svn:eol-style = native