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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]