Преглед изворни кода

added configuration to enable merging of source metadata if it exists.

git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@412961 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-0.9-alpha-1
Edwin L. Punzalan пре 18 година
родитељ
комит
e19841f467

+ 28
- 11
maven-repository-converter/src/main/java/org/apache/maven/repository/converter/DefaultRepositoryConverter.java Прегледај датотеку

@@ -95,6 +95,11 @@ public class DefaultRepositoryConverter
*/
private boolean dryrun;

/**
* @plexus.configuration default-value="true"
*/
private boolean mergeWithSourceMetadata;

/**
* @plexus.requirement
*/
@@ -120,8 +125,8 @@ public class DefaultRepositoryConverter
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 @@ public class DefaultRepositoryConverter
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 @@ public class DefaultRepositoryConverter
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 );
@@ -180,6 +184,19 @@ public class DefaultRepositoryConverter
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 )
{
StringWriter writer = null;

+ 10
- 0
maven-repository-converter/src/test/expected-files/v4artifact-source-merging-metadata.xml Прегледај датотеку

@@ -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>

+ 33
- 0
maven-repository-converter/src/test/java/org/apache/maven/repository/converter/RepositoryConverterTest.java Прегледај датотеку

@@ -732,6 +732,39 @@ public class RepositoryConverterTest
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
{

+ 1
- 0
maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.jar Прегледај датотеку

@@ -0,0 +1 @@
incorrectMd5

+ 22
- 0
maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/1.0.0/correctArtifactMetadata-1.0.0.pom Прегледај датотеку

@@ -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>

+ 26
- 0
maven-repository-converter/src/test/source-modern-repository/test/correctArtifactMetadata/maven-metadata.xml Прегледај датотеку

@@ -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>

Loading…
Откажи
Сачувај