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