You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/09/19 09:52:34 UTC
svn commit: r290084 - in /maven/components/trunk/sandbox/repoclean/src/main:
java/org/apache/maven/tools/repoclean/
java/org/apache/maven/tools/repoclean/digest/
java/org/apache/maven/tools/repoclean/phase/ resources/META-INF/plexus/
Author: brett
Date: Mon Sep 19 00:52:26 2005
New Revision: 290084
URL: http://svn.apache.org/viewcvs?rev=290084&view=rev
Log:
add metadata for new artifact
Modified:
maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java
maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/Digestor.java
maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java
maven/components/trunk/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml
Modified: maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java?rev=290084&r1=290083&r2=290084&view=diff
==============================================================================
--- maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java (original)
+++ maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java Mon Sep 19 00:52:26 2005
@@ -73,8 +73,7 @@
File targetRepositoryBase = normalizeTargetRepositoryBase( configuration.getTargetRepositoryPath() );
- // do not proceed if we cannot produce reports, or if the repository is
- // invalid.
+ // do not proceed if we cannot produce reports, or if the repository is invalid.
if ( reportsBase != null && sourceRepositoryBase != null && targetRepositoryBase != null )
{
Logger logger = getLogger();
@@ -96,15 +95,13 @@
try
{
sourceLayout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE,
- configuration
- .getSourceRepositoryLayout() );
+ configuration.getSourceRepositoryLayout() );
ArtifactRepository sourceRepo = new DefaultArtifactRepository( "source", "file://" +
sourceRepositoryBase.getAbsolutePath(), sourceLayout );
targetLayout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE,
- configuration
- .getTargetRepositoryLayout() );
+ configuration.getTargetRepositoryLayout() );
ArtifactRepository targetRepo = new DefaultArtifactRepository( "target", "file://" +
targetRepositoryBase.getAbsolutePath(), targetLayout );
@@ -113,8 +110,6 @@
{
logger.debug( "Rewriting POMs and artifact files." );
}
-
- // List originalArtifacts = new ArrayList( artifacts );
List rewritten = rewritePhase.execute( artifacts, sourceRepo, targetRepo, configuration,
reportsBase, repoReporter );
Modified: maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/Digestor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/Digestor.java?rev=290084&r1=290083&r2=290084&view=diff
==============================================================================
--- maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/Digestor.java (original)
+++ maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/Digestor.java Mon Sep 19 00:52:26 2005
@@ -33,7 +33,6 @@
*/
public class Digestor
{
-
public static final String ROLE = Digestor.class.getName();
public static final String MD5 = "MD5";
@@ -58,6 +57,25 @@
{
throw new DigestException( "Cannot write digest to file: \'" + digestFile + "\'", e );
}
+ }
+
+ public File getDigestFile( File artifactFile, String algorithm )
+ throws NoSuchAlgorithmException
+ {
+ String extension;
+ if ( SHA.equals( algorithm ) )
+ {
+ extension = "sha1";
+ }
+ else if ( MD5.equals( algorithm ) )
+ {
+ extension = "md5";
+ }
+ else
+ {
+ throw new NoSuchAlgorithmException( "Unknown algorithm " + algorithm );
+ }
+ return new File( artifactFile.getParentFile(), artifactFile.getName() + "." + extension );
}
public boolean verifyArtifactDigest( File artifactFile, File digestFile, String algorithm )
Modified: maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java?rev=290084&r1=290083&r2=290084&view=diff
==============================================================================
--- maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java (original)
+++ maven/components/trunk/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/phase/RewritePhase.java Mon Sep 19 00:52:26 2005
@@ -22,13 +22,16 @@
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
import org.apache.maven.tools.repoclean.RepositoryCleanerConfiguration;
import org.apache.maven.tools.repoclean.digest.DigestException;
import org.apache.maven.tools.repoclean.digest.DigestVerifier;
+import org.apache.maven.tools.repoclean.digest.Digestor;
import org.apache.maven.tools.repoclean.report.ReportWriteException;
import org.apache.maven.tools.repoclean.report.Reporter;
import org.apache.maven.tools.repoclean.rewrite.ArtifactPomRewriter;
@@ -60,6 +63,7 @@
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
+import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -70,6 +74,8 @@
{
private DigestVerifier digestVerifier;
+ private Digestor artifactDigestor;
+
private ArtifactRepositoryLayout bridgingLayout;
private PlexusContainer container;
@@ -219,14 +225,43 @@
File metadataSource = new File( sourceBase, sourceRepo.pathOfRemoteRepositoryMetadata( metadata ) );
File metadataTarget = new File( targetBase, targetRepo.pathOfRemoteRepositoryMetadata( metadata ) );
- mergeMetadata( metadataSource, metadataTarget, transaction, artifactReporter, reportOnly );
+ Metadata sourceMetadata = readMetadata( metadataSource, artifact );
+ if ( sourceMetadata.getVersioning() == null )
+ {
+ sourceMetadata.setVersioning( new Versioning() );
+ }
+ if ( !sourceMetadata.getVersioning().getVersions().contains( artifact.getBaseVersion() ) )
+ {
+ sourceMetadata.getVersioning().addVersion( artifact.getBaseVersion() );
+ }
+ mergeMetadata( sourceMetadata, metadataTarget, reportOnly );
metadata = new SnapshotArtifactRepositoryMetadata( artifact );
metadataSource = new File( sourceBase, sourceRepo.pathOfRemoteRepositoryMetadata( metadata ) );
metadataTarget = new File( targetBase, targetRepo.pathOfRemoteRepositoryMetadata( metadata ) );
- mergeMetadata( metadataSource, metadataTarget, transaction, artifactReporter, reportOnly );
+ sourceMetadata = readMetadata( metadataSource, artifact );
+ if ( artifact.isSnapshot() )
+ {
+ if ( sourceMetadata.getVersioning() == null )
+ {
+ sourceMetadata.setVersioning( new Versioning() );
+ }
+ if ( sourceMetadata.getVersioning().getSnapshot() == null )
+ {
+ sourceMetadata.getVersioning().setSnapshot( new Snapshot() );
+ }
+
+ int i = artifact.getVersion().indexOf( '-' );
+ if ( i >= 0 )
+ {
+ Snapshot snapshot = sourceMetadata.getVersioning().getSnapshot();
+ snapshot.setTimestamp( artifact.getVersion().substring( 0, i ) );
+ snapshot.setBuildNumber( Integer.valueOf( artifact.getVersion().substring( i + 1 ) ).intValue() );
+ }
+ }
+ mergeMetadata( sourceMetadata, metadataTarget, reportOnly );
// The rest is for POM metadata - translation and bridging of locations in the target repo may be required.
ArtifactMetadata pom = new ProjectArtifactMetadata( artifact, null );
@@ -326,74 +361,90 @@
}
}
- private void mergeMetadata( File source, File target, RewriteTransaction transaction, Reporter artifactReporter,
- boolean reportOnly )
- throws IOException, DigestException, ReportWriteException, XmlPullParserException
+ private void mergeMetadata( Metadata sourceMetadata, File target, boolean reportOnly )
+ throws IOException, DigestException, XmlPullParserException, NoSuchAlgorithmException
{
- if ( source.exists() )
+ if ( target.exists() )
{
- if ( !target.exists() )
- {
- copyMetadata( source, target, transaction, artifactReporter, reportOnly );
- }
- else
+ Metadata targetMetadata = null;
+
+ Reader reader = null;
+
+ try
{
+ reader = new FileReader( target );
+
MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
- Metadata sourceMetadata = null;
+ targetMetadata = mappingReader.read( reader );
+ }
+ finally
+ {
+ IOUtil.close( reader );
+ }
- Reader reader = null;
+ boolean changed = targetMetadata.merge( sourceMetadata );
+ if ( changed )
+ {
+ Writer writer = null;
try
{
- reader = new FileReader( source );
+ target.getParentFile().mkdirs();
+ writer = new FileWriter( target );
- sourceMetadata = mappingReader.read( reader );
- }
- finally
- {
- IOUtil.close( reader );
- reader = null;
- }
+ MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
- Metadata targetMetadata = null;
+ mappingWriter.write( writer, targetMetadata );
- try
- {
- reader = new FileReader( target );
-
- targetMetadata = mappingReader.read( reader );
+ if ( !reportOnly )
+ {
+ File digestFile = artifactDigestor.getDigestFile( target, Digestor.MD5 );
+ artifactDigestor.createArtifactDigest( target, digestFile, Digestor.MD5 );
+ digestFile = artifactDigestor.getDigestFile( target, Digestor.SHA );
+ artifactDigestor.createArtifactDigest( target, digestFile, Digestor.SHA );
+ }
}
finally
{
- IOUtil.close( reader );
+ IOUtil.close( writer );
}
+ }
+ }
+ }
- boolean changed = false;
-
- changed |= targetMetadata.merge( sourceMetadata );
+ private Metadata readMetadata( File source, Artifact artifact )
+ throws IOException, XmlPullParserException
+ {
+ Metadata sourceMetadata = null;
- if ( changed )
- {
- Writer writer = null;
- try
- {
- target.getParentFile().mkdirs();
- writer = new FileWriter( target );
+ if ( source.exists() )
+ {
+ Reader reader = null;
- MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
+ try
+ {
+ reader = new FileReader( source );
- mappingWriter.write( writer, targetMetadata );
- }
- finally
- {
- IOUtil.close( writer );
- }
- }
+ MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
- digestVerifier.verifyDigest( source, target, transaction, artifactReporter, reportOnly );
+ sourceMetadata = mappingReader.read( reader );
}
+ finally
+ {
+ IOUtil.close( reader );
+ }
+ }
+
+ if ( sourceMetadata == null )
+ {
+ sourceMetadata = new Metadata();
+
+ sourceMetadata.setGroupId( artifact.getGroupId() );
+ sourceMetadata.setArtifactId( artifact.getArtifactId() );
+ sourceMetadata.setVersion( artifact.getBaseVersion() );
}
+ return sourceMetadata;
}
private void copyMetadata( File source, File target, RewriteTransaction transaction, Reporter artifactReporter,
Modified: maven/components/trunk/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml?rev=290084&r1=290083&r2=290084&view=diff
==============================================================================
--- maven/components/trunk/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml Mon Sep 19 00:52:26 2005
@@ -44,6 +44,9 @@
<requirement>
<role>org.apache.maven.tools.repoclean.digest.DigestVerifier</role>
</requirement>
+ <requirement>
+ <role>org.apache.maven.tools.repoclean.digest.Digestor</role>
+ </requirement>
</requirements>
</component>
<!--
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org