Author: oching
Date: Fri Jul 2 07:18:44 2010
New Revision: 959880
URL: http://svn.apache.org/viewvc?rev=959880&view=rev
Log:
[MRM-980] ability to merge repositories
submitted by Patti Arachchige Eshan Sudharaka (for GSoC)
o added new plugin module for repository merge
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/.project
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/pom.xml
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/SourceAritfacts.java
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMerger.java
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/SourceArtifactsTest.java
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/archiva-1.2.1.jar
(with props)
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/archiva-1.2.1.pom
(with props)
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/maven-metadata.xml
(with props)
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/maven-metadata.xml
(with props)
Modified:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/pom.xml
Modified: archiva/branches/archiva-MRM-980/archiva-modules/plugins/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/pom.xml?rev=959880&r1=959879&r2=959880&view=diff
==============================================================================
--- archiva/branches/archiva-MRM-980/archiva-modules/plugins/pom.xml (original)
+++ archiva/branches/archiva-MRM-980/archiva-modules/plugins/pom.xml Fri Jul 2
07:18:44 2010
@@ -35,6 +35,7 @@
<!-- TODO: eventually not a core plugin, needs to be moved to a separate
tree, with it's own Selenium tests -->
<module>npanday-support</module>
<module>maven1-repository</module>
+ <module>stage-repository-merge</module>
<module>generic-metadata-support</module>
</modules>
-</project>
\ No newline at end of file
+</project>
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/.project
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/.project?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/.project
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/.project
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>stage-repository-merge</name>
+ <comment>Archiva is an application for managing one or more remote
+ repositories, including administration, artifact handling,
+ browsing and searching. NO_M2ECLIPSE_SUPPORT: Project files created with
the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects>
+ <project>archiva-checksum</project>
+ <project>archiva-common</project>
+ <project>archiva-configuration</project>
+ <project>archiva-consumer-api</project>
+ <project>archiva-model</project>
+ <project>archiva-policies</project>
+ <project>archiva-repository-layer</project>
+ <project>archiva-xml-tools</project>
+ <project>maven2-repository</project>
+ <project>metadata-model</project>
+ <project>metadata-repository-api</project>
+ <project>problem-reports</project>
+ <project>test-repository</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/pom.xml?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/pom.xml
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/pom.xml
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>plugins</artifactId>
+ <groupId>org.apache.archiva</groupId>
+ <version>1.4-SNAPSHOT</version>
+ </parent>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>stage-repository-merge</artifactId>
+ <name>stage-repository-merge</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-spring</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>metadata-repository-api</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-repository-layer</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>maven2-repository</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>test-repository</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test-repository</id>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>test-repository</includeArtifactIds>
+ <outputDirectory>target/test-repository</outputDirectory>
+ <excludes>META-INF/**</excludes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <version>1.0-beta-3.0.5</version>
+ <executions>
+ <execution>
+ <id>process-classes</id>
+ <goals>
+ <goal>generate-metadata</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>process-test-classes</id>
+ <goals>
+ <goal>generate-test-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/SourceAritfacts.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/SourceAritfacts.java?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/SourceAritfacts.java
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repodetails/SourceAritfacts.java
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,161 @@
+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;
+ }
+}
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMerger.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMerger.java?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMerger.java
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMerger.java
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,407 @@
+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;
+ }
+}
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/SourceArtifactsTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/SourceArtifactsTest.java?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/SourceArtifactsTest.java
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repodetails/SourceArtifactsTest.java
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,134 @@
+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;
+ }
+}
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java?rev=959880&view=auto
==============================================================================
---
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java
(added)
+++
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java
Fri Jul 2 07:18:44 2010
@@ -0,0 +1,181 @@
+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.1" );
+ }
+
+ public Collection<ArchivaArtifact> getArtifacts()
+ {
+ ArchivaArtifact a1 =
+ new ArchivaArtifact( "org.apache.archiva", "archiva", "1.2.1", "",
"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.1" );
+ ArrayList<ArtifactMetadata> list = new ArrayList<ArtifactMetadata>();
+ list.add( m1 );
+ return list;
+ }
+
+ public void setRepositoryConfigurations()
+ {
+ File sourceRepoFile = new File( getBasedir(),
"src/test/resources/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 );
+ }
+}
Added:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/archiva-1.2.1.jar
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/archiva-1.2.1.jar?rev=959880&view=auto
==============================================================================
(empty)
Propchange:
archiva/branches/archiva-MRM-980/archiva-modules/plugins/stage-repository-merge/src/test/resources/target-repo/org/apache/archiva/archiva/1.2.1/archiva-1.2.1.jar
------------------------------------------------------------------------------
svn:executable = *