Author: epunzalan
Date: Fri Jun  9 00:32:14 2006
New Revision: 412961

URL: http://svn.apache.org/viewvc?rev=412961&view=rev
Log:
added configuration to enable merging of source metadata if it exists.

Added:
    
maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml
   (with props)
    
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/
    
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/
    
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar
    
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom
   (with props)
    
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml
   (with props)
Modified:
    
maven/repository-manager/trunk/maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java
    
maven/repository-manager/trunk/maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java

Modified: 
maven/repository-manager/trunk/maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java?rev=412961&r1=412960&r2=412961&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java
 Fri Jun  9 00:32:14 2006
@@ -96,6 +96,11 @@
     private boolean dryrun;
 
     /**
+     * @plexus.configuration default-value="true"
+     */
+    private boolean mergeWithSourceMetadata;
+
+    /**
      * @plexus.requirement
      */
     private I18N i18n;
@@ -120,8 +125,8 @@
                     Versioning versioning = new Versioning();
                     versioning.addVersion( artifact.getBaseVersion() );
                     metadata.setVersioning( versioning );
-                    updateMetadata( new ArtifactRepositoryMetadata( artifact 
), targetRepository, metadata,
-                                    transaction );
+                    updateMetadata( new ArtifactRepositoryMetadata( artifact 
), artifact.getRepository(),
+                                    targetRepository, metadata, transaction );
 
                     metadata = createBaseMetadata( artifact );
                     metadata.setVersion( artifact.getBaseVersion() );
@@ -136,10 +141,9 @@
                         versioning.setSnapshot( snapshot );
                     }
 
-                    // TODO: merge latest/release/snapshot from source instead
                     metadata.setVersioning( versioning );
-                    updateMetadata( new SnapshotArtifactRepositoryMetadata( 
artifact ), targetRepository, metadata,
-                                    transaction );
+                    updateMetadata( new SnapshotArtifactRepositoryMetadata( 
artifact ), artifact.getRepository(),
+                                    targetRepository, metadata, transaction );
 
                     if ( !dryrun )
                     {
@@ -159,16 +163,16 @@
         return metadata;
     }
 
-    private void updateMetadata( RepositoryMetadata artifactMetadata, 
ArtifactRepository targetRepository,
-                                 Metadata newMetadata, FileTransaction 
transaction )
+    private void updateMetadata( RepositoryMetadata artifactMetadata, 
ArtifactRepository sourceRepository,
+                                 ArtifactRepository targetRepository, Metadata 
newMetadata, FileTransaction transaction )
         throws RepositoryConversionException
     {
-        File file = new File( targetRepository.getBasedir(),
-                              targetRepository.pathOfRemoteRepositoryMetadata( 
artifactMetadata ) );
-
         Metadata metadata;
-        boolean changed;
+        boolean changed = false;
 
+        //merge with target repository metadata
+        File file = new File( targetRepository.getBasedir(),
+                              targetRepository.pathOfRemoteRepositoryMetadata( 
artifactMetadata ) );
         if ( file.exists() )
         {
             metadata = readMetadata( file );
@@ -178,6 +182,19 @@
         {
             changed = true;
             metadata = newMetadata;
+        }
+
+        //merge with source repository metadata
+        if ( mergeWithSourceMetadata )
+        {
+            File srcfile = new File( sourceRepository.getBasedir(),
+                             sourceRepository.pathOfRemoteRepositoryMetadata( 
artifactMetadata ) );
+
+            if ( srcfile.exists() )
+            {
+                Metadata sourceMetadata = readMetadata( srcfile );
+                changed = changed | metadata.merge( sourceMetadata );
+            }
         }
 
         if ( changed )

Added: 
maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml?rev=412961&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml
 Fri Jun  9 00:32:14 2006
@@ -0,0 +1,10 @@
+<metadata>
+  <groupId>test</groupId>
+  <artifactId>correctArtifactMetadata</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0.0</version>
+      <version>2.0</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file

Propchange: 
maven/repository-manager/trunk/maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
maven/repository-manager/trunk/maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java?rev=412961&r1=412960&r2=412961&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java
 Fri Jun  9 00:32:14 2006
@@ -732,6 +732,39 @@
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    public void testSourceArtifactMetadataMerging()
+        throws Exception
+    {
+        // test metadata in target repository is merged with the metadata in 
the source repository
+
+        createModernSourceRepository();
+
+        Artifact artifact = createArtifact( "test", "correctArtifactMetadata", 
"1.0.0" );
+
+        repositoryConverter.convert( artifact, targetRepository, reporter );
+        checkSuccess();
+
+        File artifactFile = new File( targetRepository.getBasedir(), 
targetRepository.pathOf( artifact ) );
+        assertTrue( "Check artifact created", artifactFile.exists() );
+        assertTrue( "Check artifact matches", FileUtils.contentEquals( 
artifactFile, artifact.getFile() ) );
+
+        artifact = createPomArtifact( artifact );
+        File pomFile = new File( targetRepository.getBasedir(), 
targetRepository.pathOf( artifact ) );
+        File sourcePomFile = new File( sourceRepository.getBasedir(), 
sourceRepository.pathOf( artifact ) );
+        assertTrue( "Check POM created", pomFile.exists() );
+
+        compareFiles( sourcePomFile, pomFile );
+
+        ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( 
artifact );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              
targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        assertTrue( "Check artifact metadata created", 
artifactMetadataFile.exists() );
+
+        File expectedMetadataFile = getTestFile( 
"src/test/expected-files/v4artifact-source-merging-metadata.xml" );
+
+        compareFiles( expectedMetadataFile, artifactMetadataFile );
+    }
+
     public void testInvalidSourceSnapshotMetadata()
         throws Exception, MalformedURLException
     {

Added: 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar?rev=412961&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar
 Fri Jun  9 00:32:14 2006
@@ -0,0 +1 @@
+incorrectMd5

Added: 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom?rev=412961&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom
 Fri Jun  9 00:32:14 2006
@@ -0,0 +1,22 @@
+<!--
+  ~ Copyright 2005-2006 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.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>correctArtifactMetadata</artifactId>
+  <groupId>test</groupId>
+  <version>1.0.0</version>
+</project>

Propchange: 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml?rev=412961&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml
 Fri Jun  9 00:32:14 2006
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright 2005-2006 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.
+  -->
+
+<metadata>
+  <groupId>test</groupId>
+  <artifactId>correctArtifactMetadata</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0.0</version>
+      <version>2.0</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file

Propchange: 
maven/repository-manager/trunk/maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to