Author: brett Date: Thu Dec 29 21:10:15 2005 New Revision: 359990 URL: http://svn.apache.org/viewcvs?rev=359990&view=rev Log: simplify retrieval of POM from artifact
Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ArtifactReportProcessor.java maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/LocationArtifactReportProcessor.java maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ArtifactReportProcessor.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ArtifactReportProcessor.java?rev=359990&r1=359989&r2=359990&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ArtifactReportProcessor.java (original) +++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ArtifactReportProcessor.java Thu Dec 29 21:10:15 2005 @@ -28,6 +28,7 @@ { String ROLE = ArtifactReportProcessor.class.getName(); - void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter, ArtifactRepository repository ); + void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter, ArtifactRepository repository ) + throws ReportProcessorException; } Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/LocationArtifactReportProcessor.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/LocationArtifactReportProcessor.java?rev=359990&r1=359989&r2=359990&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/LocationArtifactReportProcessor.java (original) +++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/LocationArtifactReportProcessor.java Thu Dec 29 21:10:15 2005 @@ -20,11 +20,10 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.model.Model; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -60,6 +59,7 @@ */ public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter, ArtifactRepository repository ) + throws ReportProcessorException { boolean fsPomLocation = false, pkgPomLocation = false; String repositoryUrl = "", modelArtifactLocation = ""; @@ -87,8 +87,7 @@ //unpack the artifact (using the groupId, artifactId & version specified in the artifact object itself //check if the pom is included in the package - Model extractedModel = - unpackArtifact( artifactLocation, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() ); + Model extractedModel = readArtifactModel( artifactLocation, artifact.getGroupId(), artifact.getArtifactId() ); if ( extractedModel != null ) { @@ -142,7 +141,6 @@ * Validate the if the artifact exists in the specified location. * * @param filename - * @return */ private boolean validateArtifactLocation( String filename ) { @@ -173,98 +171,61 @@ * @param filename * @param groupId * @param artifactId - * @param version */ - private Model unpackArtifact( String filename, String groupId, String artifactId, String version ) + private Model readArtifactModel( String filename, String groupId, String artifactId ) + throws ReportProcessorException { - String basedir = ""; Model modelObj = null; - basedir = System.getProperty( "basedir" ); - File f = new File( basedir + "/" + "temp" ); - boolean b = f.mkdirs(); - + JarFile jar = null; try { - JarFile jar = new JarFile( filename ); + jar = new JarFile( filename ); - try - { - //Get the entry and its input stream. - JarEntry entry = jar.getJarEntry( "META-INF/maven/" + groupId + "/" + artifactId + "/pom.xml" ); + //Get the entry and its input stream. + JarEntry entry = jar.getJarEntry( "META-INF/maven/" + groupId + "/" + artifactId + "/pom.xml" ); - // If the entry is not null, extract it. - if ( entry != null ) - { - InputStream entryStream = jar.getInputStream( entry ); - - try - { + // If the entry is not null, extract it. + if ( entry != null ) + { + InputStream entryStream = jar.getInputStream( entry ); - //Create the output file (clobbering the file if it exists). - FileOutputStream file = new FileOutputStream( basedir + "/temp/pom.xml" ); + Reader isReader = new InputStreamReader( entryStream ); - try - { - byte[] buffer = new byte[1024]; - int bytesRead; - - while ( ( bytesRead = entryStream.read( buffer ) ) != -1 ) - { - file.write( buffer, 0, bytesRead ); - } - - } - finally - { - file.close(); - } - InputStream inputStream = new FileInputStream( basedir + "/temp/pom.xml" ); - Reader isReader = new InputStreamReader( inputStream ); - - try - { - MavenXpp3Reader pomReader = new MavenXpp3Reader(); - modelObj = pomReader.read( isReader ); - } - finally - { - isReader.close(); - inputStream.close(); - } - - } - finally - { - entryStream.close(); - } + try + { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + modelObj = pomReader.read( isReader ); } - else + finally { - return modelObj; + IOUtil.close( isReader ); } - } - finally - { - jar.close(); - } - } - catch ( Exception e ) + catch ( IOException e ) { - return modelObj; - + // TODO: should just warn and continue? + throw new ReportProcessorException( "Unable to read artifact to extract model", e ); + } + catch ( XmlPullParserException e ) + { + // TODO: should just warn and continue? + throw new ReportProcessorException( "Unable to read artifact to extract model", e ); } finally { - try - { - FileUtils.deleteDirectory( new File( basedir + "/temp" ) ); - } - catch ( IOException ie ) + if ( jar != null ) { - return modelObj; + //noinspection UnusedCatchParameter + try + { + jar.close(); + } + catch ( IOException e ) + { + // ignore + } } } return modelObj; Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java?rev=359990&r1=359989&r2=359990&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java (original) +++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java Thu Dec 29 21:10:15 2005 @@ -38,7 +38,7 @@ * This class creates the artifact and metadata files used for testing the ChecksumArtifactReporter. * It is extended by ChecksumArtifactReporterTest class. */ -public class AbstractChecksumArtifactReporterTest +public abstract class AbstractChecksumArtifactReporterTest extends AbstractRepositoryReportsTestCase { protected static final String[] validArtifactChecksumJars = {"validArtifact-1.0"};