-package org.apache.archiva.stagerepository.merge.repodetails;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.apache.archiva.metadata.repository.MetadataResolver;
-import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
-import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.archiva.metadata.model.ArtifactMetadata;
-
-import java.util.List;
-import java.util.Collection;
-import java.util.ArrayList;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @plexus.component role="org.apache.archiva.stagerepository.merge.repodetails.SourceAritfacts"
- */
-public class SourceAritfacts
-{
-
- /**
- * @plexus.requirement
- */
- private MetadataResolver metadataResolver;
-
- private ArrayList<String> rootNameSpacesList;
-
- private ArrayList<String> gruopIdList;
-
- private ArrayList<String> artifactsList;
-
- private ArrayList<String> artifactsVersionsList;
-
- private List<ArchivaArtifact> artifactsListWithDetails;
-
- private String repoId;
-
- private static final Logger log = LoggerFactory.getLogger( SourceAritfacts.class );
-
- public String getRepoId()
- {
- return repoId;
- }
-
- public void setRepoId( String repoId )
- {
- this.repoId = repoId;
- }
-
- // this methos returns a ArtifactMetaData List.(i guess no harm due to hardcoding the Artifact type and version)
- public Collection<ArtifactMetadata> getSourceArtifactsMetaData( ArchivaArtifact artifact )
- {
-
- return metadataResolver.getArtifacts( artifact.getRepositoryId(), artifact.getGroupId(),
- artifact.getArtifactId(), artifact.getVersion() );
- }
-
- public Collection<ArchivaArtifact> getSourceArtifactList()
- {
- artifactsListWithDetails = new ArrayList<ArchivaArtifact>();
-
- process();
-
- return artifactsListWithDetails;
- }
-
- public void setMetadataResolver( MetadataResolver metadataResolver )
- {
- this.metadataResolver = metadataResolver;
- }
-
- private void process()
- {
- // this will get the root name spaces eg : org, com
- rootNameSpacesList = (ArrayList<String>) metadataResolver.getRootNamespaces( repoId );
-
- gruopIdList = new ArrayList<String>();
-
- artifactsList = new ArrayList<String>();
-
- // following iterates through the root name spaces list and get the gruo id of relavet root name spaces.
- for ( String namespace : rootNameSpacesList )
- {
- // this will get the gruop id list of relavant name space . eg : org > archiva(gruop id)
- gruopIdList = (ArrayList<String>) metadataResolver.getNamespaces( repoId, namespace );
-
- // following will iterates through the particular gruop id 's
- for ( String gruopId : gruopIdList )
- {
- // parse the parameters "repoId" and "namespace + gruop id "to artifacts list. eg : params = ("internal"
- // , "org.archiva")
- artifactsList = (ArrayList<String>) metadataResolver.getNamespaces( repoId, namespace + "." + gruopId );
-
- for ( String artifact : artifactsList )
- {
- // iterates through the artifacts and get the available versions of a particular artifact
- artifactsVersionsList =
- (ArrayList<String>) metadataResolver.getProjectVersions( repoId, namespace + "." + gruopId,
- artifact );
-
- for ( String version : artifactsVersionsList )
- {
- // assign gathered attributes Artifact object and add it in to the list
- artifactsListWithDetails.addAll( getArtifactMetadata( repoId, gruopId, artifact, version ) );
-
- }
- }
- }
- }
-
- }
-
- private Collection<ArchivaArtifact> getArtifactMetadata( String repoId, String gruopId, String artifactId,
- String version )
- {
- MavenArtifactFacet facet = null;
-
- List<ArchivaArtifact> artifactList = new ArrayList<ArchivaArtifact>();
-
- ArrayList<ArtifactMetadata> artifactMetaDataList =
- (ArrayList<ArtifactMetadata>) metadataResolver.getArtifacts( repoId, gruopId, artifactId, version );
-
- for ( ArtifactMetadata artifactMetadata : artifactMetaDataList )
- {
-
- facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID );
-
- if ( facet != null )
- {
- artifactList.add( new ArchivaArtifact( gruopId, artifactId, version, facet.getClassifier(),
- facet.getType(), repoId ) );
-
- }
- else
- {
- artifactList.add( new ArchivaArtifact( gruopId, artifactId, version, "", "jar", repoId ) );
- }
-
- }
- return artifactList;
- }
-}
-package org.apache.archiva.stagerepository.merge.repomerge;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.apache.archiva.stagerepository.merge.repodetails.SourceAritfacts;
-import org.apache.archiva.metadata.repository.MetadataResolver;
-import org.apache.archiva.metadata.model.ArtifactMetadata;
-import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
-import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
-import org.apache.maven.archiva.repository.ManagedRepositoryContent;
-import org.apache.maven.archiva.repository.RepositoryContentFactory;
-import org.apache.maven.archiva.repository.RepositoryNotFoundException;
-import org.apache.maven.archiva.repository.RepositoryException;
-import org.apache.maven.archiva.repository.metadata.MetadataTools;
-import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
-import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
-import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
-import org.apache.maven.archiva.common.utils.VersionComparator;
-import org.apache.maven.archiva.common.utils.VersionUtil;
-
-import java.util.*;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileOutputStream;
-import java.io.FileInputStream;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-/**
- * @plexus.component role="org.apache.archiva.stagerepository.merge.repomerge.ArtifactsMerger"
- */
-public class ArtifactsMerger
-{
-
- /**
- * @plexus.requirement
- */
- private MetadataResolver metadataResolver;
-
- /**
- * @plexus.requirement
- */
- private RepositoryContentFactory repositoryFactory;
-
- /**
- * @plexus.requirement role-hint="default"
- */
- private ArchivaConfiguration configuration;
-
- private SourceAritfacts sourceArtifacts;
-
- private String targetRepo;
-
- private String sourceRepo;
-
- private ArrayList<ArchivaArtifact> sourceArtifactsList;
-
- private Configuration config;
-
- private ManagedRepositoryConfiguration targetRepoConfig;
-
- private ManagedRepositoryConfiguration sourceRepoConfig;
-
- private ManagedRepositoryContent targetRepository;
-
- private ManagedRepositoryContent sourceRepository;
-
- private final static String PATH_SEPERATOR = "/";
-
- public void setMetadataResolver( MetadataResolver metadataResolver )
- {
- this.metadataResolver = metadataResolver;
- }
-
- public void setSourceArtifacts( SourceAritfacts sourceArtifacts )
- {
- this.sourceArtifacts = sourceArtifacts;
- setSourceArtifactsList();
- }
-
- public void setConfiguration( ArchivaConfiguration configuration )
- {
- this.configuration = configuration;
- }
-
- public void setRepositoryFactory( RepositoryContentFactory repositoryFactory )
- {
- this.repositoryFactory = repositoryFactory;
- }
-
- public ArtifactsMerger( String targetRepo, String sourceRepo )
- {
- this.targetRepo = targetRepo;
- this.sourceRepo = sourceRepo;
-
- }
-
- private void setSourceArtifactsList()
- {
- sourceArtifacts.setRepoId( sourceRepo );
- sourceArtifactsList = (ArrayList) sourceArtifacts.getSourceArtifactList();
- }
-
- private boolean isArtifactAvailableIntagerRepo( ArchivaArtifact artifact )
- {
-
- boolean isAvailable = false;
-
- Collection<ArtifactMetadata> list =
- metadataResolver.getArtifacts( targetRepo, artifact.getGroupId(), artifact.getArtifactId(),
- artifact.getVersion() );
-
- if ( list.isEmpty() )
- {
- isAvailable = false;
- }
- else
- {
- isAvailable = true;
- }
- return isAvailable;
- }
-
- public void doMerge()
- throws Exception
- {
- try
- {
- config = configuration.getConfiguration();
-
- targetRepoConfig = config.findManagedRepositoryById( targetRepo );
-
- targetRepository = repositoryFactory.getManagedRepositoryContent( targetRepo );
-
- sourceRepoConfig = config.findManagedRepositoryById( sourceRepo );
-
- sourceRepository = repositoryFactory.getManagedRepositoryContent( sourceRepo );
-
- // iterates through available arfifacts list
- for ( ArchivaArtifact sourceArtifact : sourceArtifactsList )
- {
-
- if ( isArtifactAvailableIntagerRepo( sourceArtifact ) )
- {
- // TODO here we need to implement replacing the exixting one
- }
- else
- {
- // when the artifact does not exist in the repo folder structure creation is done
- createFolderStructure( sourceArtifact );
- }
- }
- }
- catch ( RepositoryNotFoundException re )
- {
- throw re;
- }
- catch ( RepositoryException rep )
- {
- throw rep;
- }
- }
-
- private void createFolderStructure( ArchivaArtifact artifact )
- throws IOException, RepositoryMetadataException
- {
-
- Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
-
- TimeZone timezone = TimeZone.getTimeZone( "UTC" );
-
- DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
-
- fmt.setTimeZone( timezone );
-
- String timestamp = fmt.format( lastUpdatedTimestamp );
-
- String targetRepoPath = targetRepoConfig.getLocation();
-
- String sourceRepoPath = sourceRepoConfig.getLocation();
-
- String artifactPath = sourceRepository.toPath( artifact );
-
- File sourceArtifactFile = new File( sourceRepoPath, artifactPath );
-
- File targetArtifactFile = new File( targetRepoPath, artifactPath );
-
- int lastIndex = artifactPath.lastIndexOf( '/' );
-
- // create a file object to the artifact version directory eg
- // :/boot/gsoc/apps/apache-archiva-1.4-SNAPSHOT/data/repositories/internal/ant/ant/1.5.1
- File targetFile = new File( targetRepoPath, artifactPath.substring( 0, lastIndex ) );
-
- if ( !targetFile.exists() )
- {
- // create the folder structure when it does not exist
- targetFile.mkdirs();
- }
-
- // artifact copying
- copyFile( sourceArtifactFile, targetArtifactFile );
- // pom file copying
- String index = artifactPath.substring( lastIndex + 1 );
- int last = index.lastIndexOf( '.' );
- File sourcePomFile =
- new File( sourceRepoPath, artifactPath.substring( 0, lastIndex ) + "/"
- + artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
- File targetPomFile =
- new File( targetRepoPath, artifactPath.substring( 0, lastIndex ) + "/"
- + artifactPath.substring( lastIndex + 1 ).substring( 0, last ) + ".pom" );
-
- if ( !targetPomFile.exists() )
- {
- copyFile( sourcePomFile, targetPomFile );
- }
-
- // explicitly update only if metadata-updater consumer is not enabled!
- if ( !config.getRepositoryScanning().getKnownContentConsumers().contains( "metadata-updater" ) )
- {
-
- // maven version meta data file copying
-
- File versionMetadataFileInSourceArtifact =
- new File( sourceRepoPath, artifactPath.substring( 0, lastIndex ) + "/" + MetadataTools.MAVEN_METADATA );
-
- File versionMetadataFileInTargetArtifact = null;
-
- // check metadata xml is available in source repo. if there is a metadata xml we are going to merge is as
- // well
- if ( versionMetadataFileInSourceArtifact.exists() )
- {
- versionMetadataFileInTargetArtifact =
- new File( targetRepoPath, artifactPath.substring( 0, lastIndex ) + "/"
- + MetadataTools.MAVEN_METADATA );
-
- // check metadata xml is available in target repo. if it is not available copy it from the source
- // artifact
- if ( !versionMetadataFileInTargetArtifact.exists() )
- {
- copyFile( versionMetadataFileInSourceArtifact, versionMetadataFileInTargetArtifact );
- }
- else
- {
- // if version metadata file exists then update it.
- updateVersionMetadata( versionMetadataFileInTargetArtifact, artifact, lastUpdatedTimestamp,
- timestamp );
- }
- }
-
- // project level maven meta data xml copying
- String projectDirectoryInSourceRepo =
- new File( versionMetadataFileInSourceArtifact.getParent() ).getParent();
- File projectMetadataFileInSourceArtifact =
- new File( projectDirectoryInSourceRepo, MetadataTools.MAVEN_METADATA );
-
- // check metadata xml is available in source repo. if there is a metadata xml we are going to merge is as
- // well
- if ( projectMetadataFileInSourceArtifact.exists() )
- {
-
- String projectDirectoryInTargetRepo =
- new File( versionMetadataFileInTargetArtifact.getParent() ).getParent();
- File projectMetadataFileInTargetArtifact =
- new File( projectDirectoryInTargetRepo, MetadataTools.MAVEN_METADATA );
- // check metadata xml is available in target repo.if it is not available copy it from the source
- // artifact
- if ( !projectMetadataFileInTargetArtifact.exists() )
- {
- copyFile( projectMetadataFileInSourceArtifact, projectMetadataFileInTargetArtifact );
- }
- else
- {
- // // if project metadata file exists then update it.
- updateProjectMetadata( projectMetadataFileInTargetArtifact, artifact, lastUpdatedTimestamp,
- timestamp );
- }
- }
- }
- }
-
- private void copyFile( File sourceFile, File targetFile )
- throws IOException
- {
-
- FileOutputStream out = new FileOutputStream( targetFile );
- FileInputStream input = new FileInputStream( sourceFile );
-
- try
- {
- int i;
- while ( ( i = input.read() ) != -1 )
- {
- out.write( i );
- }
- out.flush();
- }
- finally
- {
- out.close();
- input.close();
- }
- }
-
- /**
- * Update artifact level metadata.
- */
- private void updateProjectMetadata( File projectMetaDataFileIntargetRepo, ArchivaArtifact artifact,
- Date lastUpdatedTimestamp, String timestamp )
- throws RepositoryMetadataException
- {
- ArrayList<String> availableVersions = new ArrayList<String>();
- String latestVersion = "";
-
- ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetaDataFileIntargetRepo );
-
- if ( projectMetaDataFileIntargetRepo.exists() )
- {
- availableVersions = (ArrayList<String>) projectMetadata.getAvailableVersions();
-
- Collections.sort( availableVersions, VersionComparator.getInstance() );
-
- if ( !availableVersions.contains( artifact.getVersion() ) )
- {
- availableVersions.add( artifact.getVersion() );
- }
-
- latestVersion = availableVersions.get( availableVersions.size() - 1 );
- }
- else
- {
- availableVersions.add( artifact.getVersion() );
- projectMetadata.setGroupId( artifact.getGroupId() );
- projectMetadata.setArtifactId( artifact.getArtifactId() );
- }
-
- if ( projectMetadata.getGroupId() == null )
- {
- projectMetadata.setGroupId( artifact.getGroupId() );
- }
-
- if ( projectMetadata.getArtifactId() == null )
- {
- projectMetadata.setArtifactId( artifact.getArtifactId() );
- }
-
- projectMetadata.setLatestVersion( latestVersion );
- projectMetadata.setAvailableVersions( availableVersions );
- projectMetadata.setLastUpdated( timestamp );
- projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
-
- if ( !VersionUtil.isSnapshot( artifact.getVersion() ) )
- {
- projectMetadata.setReleasedVersion( latestVersion );
- }
-
- RepositoryMetadataWriter.write( projectMetadata, projectMetaDataFileIntargetRepo );
-
- }
-
- private void updateVersionMetadata( File versionMetaDataFileInTargetRepo, ArchivaArtifact artifact,
- Date lastUpdatedTimestamp, String timestamp )
- throws RepositoryMetadataException
- {
- ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetaDataFileInTargetRepo );
- if ( !versionMetaDataFileInTargetRepo.exists() )
- {
- versionMetadata.setGroupId( artifact.getGroupId() );
- versionMetadata.setArtifactId( artifact.getArtifactId() );
- versionMetadata.setVersion( artifact.getVersion() );
- }
-
- // versionMetadata.getSnapshotVersion().setTimestamp(timestamp);
- versionMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
- RepositoryMetadataWriter.write( versionMetadata, versionMetaDataFileInTargetRepo );
- }
-
- private ArchivaRepositoryMetadata getMetadata( File metadataFile )
- throws RepositoryMetadataException
- {
- ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
- if ( metadataFile.exists() )
- {
- metadata = RepositoryMetadataReader.read( metadataFile );
- }
- return metadata;
- }
-}
-package org.apache.archiva.stagerepository.merge.repodetails;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.junit.Test;
-
-import org.apache.archiva.metadata.repository.MetadataResolver;
-import org.apache.archiva.metadata.model.ArtifactMetadata;
-
-import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.easymock.MockControl;
-import org.codehaus.plexus.spring.PlexusInSpringTestCase;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-public class SourceArtifactsTest
- extends PlexusInSpringTestCase
-{
-
- private Logger log = LoggerFactory.getLogger( SourceArtifactsTest.class );
-
- private MockControl metadataResolverControl;
-
- private MetadataResolver metadataResolver;
-
- private static final String TEST_REPO_ID = "internal";
-
- private SourceAritfacts sourceArtifacts;
-
- @Override
- protected void setUp()
- throws Exception
- {
- super.setUp();
-
- sourceArtifacts = new SourceAritfacts();
- sourceArtifacts.setRepoId( TEST_REPO_ID );
- metadataResolverControl = MockControl.createControl( MetadataResolver.class );
- metadataResolver = (MetadataResolver) metadataResolverControl.getMock();
- sourceArtifacts.setMetadataResolver( metadataResolver );
- }
-
- @Test
- public void testSourceArtifacts()
- {
-
- metadataResolverControl.expectAndReturn( metadataResolver.getRootNamespaces( TEST_REPO_ID ), getRootNameSpace() );
-
- metadataResolverControl.expectAndReturn( metadataResolver.getNamespaces( TEST_REPO_ID, "org" ), getNameSpace() );
-
- metadataResolverControl.expectAndReturn( metadataResolver.getNamespaces( TEST_REPO_ID, "org" + "." + "apache" ),
- getProject() );
-
- metadataResolverControl.expectAndReturn( metadataResolver.getProjectVersions( TEST_REPO_ID, "org" + "."
- + "apache", "archiva" ), getProjectVersions() );
-
- metadataResolverControl.expectAndReturn( metadataResolver.getArtifacts( TEST_REPO_ID, "apache", "archiva",
- "1.6" ), getArtiFactMetaData() );
-
- metadataResolverControl.expectAndReturn( metadataResolver.getArtifacts( TEST_REPO_ID, "apache", "archiva",
- "1.6" ), getArtiFactMetaData() );
-
- metadataResolverControl.replay();
-
- Collection<ArchivaArtifact> list = sourceArtifacts.getSourceArtifactList();
- assertEquals( false, list.isEmpty() );
-
- ArrayList<ArtifactMetadata> metadataList =
- (ArrayList) sourceArtifacts.getSourceArtifactsMetaData( list.iterator().next() );
- assertEquals( 2, metadataList.size() );
-
- metadataResolverControl.verify();
-
- }
-
- private Collection<String> getRootNameSpace()
- {
- List<String> artifactList = new ArrayList<String>();
- artifactList.add( "org" );
- return artifactList;
- }
-
- private Collection<String> getNameSpace()
- {
- List<String> namespace = new ArrayList<String>();
- namespace.add( "apache" );
- return namespace;
- }
-
- private Collection<String> getProject()
- {
- List<String> namespace = new ArrayList<String>();
- namespace.add( "archiva" );
- return namespace;
- }
-
- private Collection<String> getProjectVersions()
- {
- List<String> versionList = new ArrayList<String>();
- versionList.add( "1.6" );
- return versionList;
- }
-
- private Collection<ArtifactMetadata> getArtiFactMetaData()
- {
- List<ArtifactMetadata> metaDataList = new ArrayList<ArtifactMetadata>();
- ArtifactMetadata metaDataOne = new ArtifactMetadata();
- ArtifactMetadata metaDataTwo = new ArtifactMetadata();
- metaDataList.add( metaDataOne );
- metaDataList.add( metaDataTwo );
- return metaDataList;
- }
-}
-package org.apache.archiva.stagerepository.merge.repomerge;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import static org.junit.Assert.assertNotNull;
-import org.junit.Before;
-import org.junit.Test;
-import static org.mockito.Mockito.stub;
-
-import static org.mockito.Mockito.verify;
-import org.mockito.MockitoAnnotations;
-import static org.mockito.Mockito.*;
-import org.codehaus.plexus.spring.PlexusInSpringTestCase;
-import org.apache.maven.archiva.repository.RepositoryContentFactory;
-import org.apache.maven.archiva.repository.ManagedRepositoryContent;
-import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
-import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
-import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.archiva.stagerepository.merge.repodetails.SourceAritfacts;
-import org.apache.archiva.metadata.model.ArtifactMetadata;
-import org.apache.archiva.metadata.repository.MetadataResolver;
-//import com.sun.xml.internal.ws.api.wsdl.parser.MetaDataResolver;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.io.File;
-
-public class ArtifactsMergerTest
- extends PlexusInSpringTestCase
-{
-
- private static final String SOURCE_REPOSITORY_ID = "test-repository";
-
- private static final String TARGET_REPOSITORY_ID = "target-repo";
-
- // private static final String TARGET_REPOSITORY_ID = "target-repo";
-
- private Configuration config;
-
- @MockitoAnnotations.Mock
- private MetadataResolver metadataResolver;
-
- private RepositoryContentFactory repositoryFactory;
-
- private ArchivaConfiguration configuration;
-
- private SourceAritfacts sourceArtifacts;
-
- private ArtifactsMerger merger;
-
- @Before
- public void setUp()
- {
- MockitoAnnotations.initMocks( this );
- metadataResolver = mock( MetadataResolver.class );
- repositoryFactory = mock( RepositoryContentFactory.class );
- configuration = mock( ArchivaConfiguration.class );
- sourceArtifacts = mock( SourceAritfacts.class );
- sourceArtifacts.setRepoId( SOURCE_REPOSITORY_ID );
- sourceArtifacts.setMetadataResolver( metadataResolver );
- setRepositoryConfigurations();
- merger = new ArtifactsMerger( TARGET_REPOSITORY_ID, SOURCE_REPOSITORY_ID );
- merger.setConfiguration( configuration );
- merger.setRepositoryFactory( repositoryFactory );
- merger.setMetadataResolver( metadataResolver );
- setSourceArtifacts();
- }
-
- @Test
- public void setSourceArtifacts()
- {
- when( sourceArtifacts.getSourceArtifactList() ).thenReturn( getArtifacts() );
- merger.setSourceArtifacts( sourceArtifacts );
- verify( sourceArtifacts ).getSourceArtifactList();
- }
-
- @Test
- public void testDomerge()
- throws Exception
- {
- ManagedRepositoryContent sourceRepoContent = new ManagedDefaultRepositoryContent();
- sourceRepoContent.setRepository( config.findManagedRepositoryById( SOURCE_REPOSITORY_ID ) );
-
- ManagedRepositoryContent targetRepoContent = new ManagedDefaultRepositoryContent();
- sourceRepoContent.setRepository( config.findManagedRepositoryById( TARGET_REPOSITORY_ID ) );
-
- when( configuration.getConfiguration() ).thenReturn( config );
- when( repositoryFactory.getManagedRepositoryContent( SOURCE_REPOSITORY_ID ) ).thenReturn( sourceRepoContent );
- when( repositoryFactory.getManagedRepositoryContent( TARGET_REPOSITORY_ID ) ).thenReturn( targetRepoContent );
- when( sourceArtifacts.getSourceArtifactList() ).thenReturn( getArtifacts() );
- when( metadataResolver.getArtifacts( TARGET_REPOSITORY_ID, "archiva", "archiva", "1.2.1" ) ).thenReturn( getMetaDataList() );
- merger.doMerge();
-
- // verify(configuration);
- // verify(repositoryFactory);
- // verify(repositoryFactory);
- // verify(sourceArtifacts);
- verify( configuration ).getConfiguration();
- verify( repositoryFactory ).getManagedRepositoryContent( SOURCE_REPOSITORY_ID );
- verify( repositoryFactory ).getManagedRepositoryContent( TARGET_REPOSITORY_ID );
- verify( sourceArtifacts ).getSourceArtifactList();
- verify( metadataResolver ).getArtifacts( TARGET_REPOSITORY_ID, "org.apache.archiva", "archiva", "1.2.2" );
- }
-
- public Collection<ArchivaArtifact> getArtifacts()
- {
- ArchivaArtifact a1 =
- new ArchivaArtifact( "org.apache.archiva", "archiva", "1.2.2", "", "jar", SOURCE_REPOSITORY_ID );
- ArchivaArtifact a2 =
- new ArchivaArtifact( "org.apache.archiva", "archiva", "1.5", "", "jar", SOURCE_REPOSITORY_ID );
- ArrayList<ArchivaArtifact> list = new ArrayList<ArchivaArtifact>();
- list.add( a1 );
- // list.add(a2) ;
- return list;
- }
-
- public Collection<ArtifactMetadata> getMetaDataList()
- {
- ArtifactMetadata m1 = new ArtifactMetadata();
- m1.setNamespace( "org.apache.archiva" );
- m1.setProject( "archiva" );
- m1.setVersion( "1.2.2" );
- ArrayList<ArtifactMetadata> list = new ArrayList<ArtifactMetadata>();
- list.add( m1 );
- return list;
- }
-
- public void setRepositoryConfigurations()
- {
- File sourceRepoFile = new File( getBasedir(), "target/test-repository" );
- File targetRepoFile = new File( getBasedir(), "src/test/resources/target-repo" );
- // sourceRepoFile.mkdirs();
- // targetRepoFile.mkdirs();
-
- assertTrue( sourceRepoFile.exists() );
- this.config = new Configuration();
- RepositoryScanningConfiguration repoScanConfig = new RepositoryScanningConfiguration();
- List<String> knownContentConsumers = new ArrayList<String>();
- knownContentConsumers.add( "metadata-updater12" );
- repoScanConfig.setKnownContentConsumers( knownContentConsumers );
- config.setRepositoryScanning( repoScanConfig );
- // config.setManagedRepositories();
- ManagedRepositoryConfiguration sourceRepoConfig = new ManagedRepositoryConfiguration();
- sourceRepoConfig.setId( SOURCE_REPOSITORY_ID );
- sourceRepoConfig.setLayout( "default" );
- sourceRepoConfig.setLocation( sourceRepoFile.getPath() );
- sourceRepoConfig.setName( SOURCE_REPOSITORY_ID );
- sourceRepoConfig.setBlockRedeployments( true );
-
- ManagedRepositoryConfiguration targetRepoConfig = new ManagedRepositoryConfiguration();
- targetRepoConfig.setId( TARGET_REPOSITORY_ID );
- targetRepoConfig.setLayout( "default" );
- targetRepoConfig.setLocation( targetRepoFile.getPath() );
- targetRepoConfig.setName( TARGET_REPOSITORY_ID );
- targetRepoConfig.setBlockRedeployments( true );
-
- this.config.addManagedRepository( sourceRepoConfig );
- this.config.addManagedRepository( targetRepoConfig );
- }
-}