ArchivaRepository has been removed from model. This work was needed before repository layout/detection proposal work is started. git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@582987 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-1.0-beta-3
@@ -29,6 +29,10 @@ | |||
<packaging>jar</packaging> | |||
<dependencies> | |||
<dependency> | |||
<groupId>org.apache.maven.archiva</groupId> | |||
<artifactId>archiva-configuration</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.apache.maven.archiva</groupId> | |||
<artifactId>archiva-model</artifactId> |
@@ -19,7 +19,7 @@ package org.apache.maven.archiva.consumers; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import java.util.List; | |||
@@ -58,7 +58,7 @@ public interface RepositoryContentConsumer extends BaseConsumer | |||
* @param repository the repository that this consumer is being used for. | |||
* @throws ConsumerException if there was a problem with using the provided repository with the consumer. | |||
*/ | |||
public void beginScan( ArchivaRepository repository ) throws ConsumerException; | |||
public void beginScan( ManagedRepositoryConfiguration repository ) throws ConsumerException; | |||
/** | |||
* <p> |
@@ -21,10 +21,10 @@ package org.apache.maven.archiva.consumers.core; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.codehaus.plexus.digest.ChecksumFile; | |||
import org.codehaus.plexus.digest.Digester; | |||
@@ -99,7 +99,7 @@ public class ArtifactMissingChecksumsConsumer | |||
private static final String TYPE_CHECKSUM_CANNOT_CREATE = "checksum-create-failure"; | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private File repositoryDir; | |||
@@ -124,13 +124,13 @@ public class ArtifactMissingChecksumsConsumer | |||
return false; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repository = repository; | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
String layoutName = repository.getModel().getLayoutName(); | |||
String layoutName = repository.getLayout(); | |||
if ( !bidirectionalLayoutMap.containsKey( layoutName ) ) | |||
{ | |||
throw new ConsumerException( "Unable to process repository with layout [" + layoutName + |
@@ -21,10 +21,10 @@ package org.apache.maven.archiva.consumers.core; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; | |||
import org.codehaus.plexus.registry.Registry; | |||
@@ -88,10 +88,10 @@ public class AutoRemoveConsumer | |||
return false; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
} | |||
public void completeScan() |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.consumers.core; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.util.FileUtils; | |||
import java.io.File; | |||
@@ -90,10 +90,10 @@ public class AutoRenameConsumer | |||
return false; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
} | |||
public void completeScan() |
@@ -22,10 +22,10 @@ package org.apache.maven.archiva.consumers.core; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ConfigurationNames; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
@@ -93,7 +93,7 @@ public class MetadataUpdaterConsumer | |||
private static final String TYPE_METADATA_IO = "metadata-io-warning"; | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private File repositoryDir; | |||
@@ -118,14 +118,14 @@ public class MetadataUpdaterConsumer | |||
this.includes = includes; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repository = repository; | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
try | |||
{ | |||
this.repositoryLayout = layoutFactory.getLayout( repository.getLayoutType() ); | |||
this.repositoryLayout = layoutFactory.getLayout( repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.consumers.core; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.digest.ChecksumFile; | |||
import org.codehaus.plexus.digest.Digester; | |||
import org.codehaus.plexus.digest.DigesterException; | |||
@@ -96,10 +96,10 @@ public class ValidateChecksumConsumer | |||
return false; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
} | |||
public void completeScan() |
@@ -20,11 +20,11 @@ package org.apache.maven.archiva.consumers.core.repository; | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.indexer.RepositoryIndexException; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.FilenameParts; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -39,13 +39,13 @@ import java.io.FilenameFilter; | |||
public abstract class AbstractRepositoryPurge | |||
implements RepositoryPurge | |||
{ | |||
protected ArchivaRepository repository; | |||
protected ManagedRepositoryConfiguration repository; | |||
protected BidirectionalRepositoryLayout layout; | |||
protected ArtifactDAO artifactDao; | |||
public AbstractRepositoryPurge( ArchivaRepository repository, BidirectionalRepositoryLayout layout, | |||
public AbstractRepositoryPurge( ManagedRepositoryConfiguration repository, BidirectionalRepositoryLayout layout, | |||
ArtifactDAO artifactDao ) | |||
{ | |||
this.repository = repository; | |||
@@ -81,7 +81,7 @@ public abstract class AbstractRepositoryPurge | |||
{ | |||
artifactFiles[i].delete(); | |||
String[] artifactPathParts = artifactFiles[i].getAbsolutePath().split( repository.getUrl().getPath() ); | |||
String[] artifactPathParts = artifactFiles[i].getAbsolutePath().split( repository.getLocation() ); | |||
String artifactPath = artifactPathParts[artifactPathParts.length - 1]; | |||
if ( !artifactPath.toUpperCase().endsWith( "SHA1" ) && !artifactPath.toUpperCase().endsWith( "MD5" ) ) | |||
{ |
@@ -22,8 +22,8 @@ package org.apache.maven.archiva.consumers.core.repository; | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.maven.archiva.common.utils.VersionComparator; | |||
import org.apache.maven.archiva.common.utils.VersionUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArchivaRepositoryMetadata; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.FilenameParts; | |||
@@ -53,7 +53,7 @@ public class CleanupReleasedSnapshotsRepositoryPurge | |||
private RepositoryMetadataReader metadataReader; | |||
public CleanupReleasedSnapshotsRepositoryPurge( ArchivaRepository repository, BidirectionalRepositoryLayout layout, | |||
public CleanupReleasedSnapshotsRepositoryPurge( ManagedRepositoryConfiguration repository, BidirectionalRepositoryLayout layout, | |||
ArtifactDAO artifactDao ) | |||
{ | |||
super( repository, layout, artifactDao ); | |||
@@ -65,7 +65,7 @@ public class CleanupReleasedSnapshotsRepositoryPurge | |||
{ | |||
try | |||
{ | |||
File artifactFile = new File( repository.getUrl().getPath(), path ); | |||
File artifactFile = new File( repository.getLocation(), path ); | |||
if ( !artifactFile.exists() ) | |||
{ |
@@ -21,8 +21,8 @@ package org.apache.maven.archiva.consumers.core.repository; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.common.utils.VersionUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.FilenameParts; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -40,7 +40,7 @@ public class DaysOldRepositoryPurge | |||
{ | |||
private int daysOlder; | |||
public DaysOldRepositoryPurge( ArchivaRepository repository, BidirectionalRepositoryLayout layout, | |||
public DaysOldRepositoryPurge( ManagedRepositoryConfiguration repository, BidirectionalRepositoryLayout layout, | |||
ArtifactDAO artifactDao, int daysOlder ) | |||
{ | |||
super( repository, layout, artifactDao ); | |||
@@ -52,7 +52,7 @@ public class DaysOldRepositoryPurge | |||
{ | |||
try | |||
{ | |||
File artifactFile = new File( repository.getUrl().getPath(), path ); | |||
File artifactFile = new File( repository.getLocation(), path ); | |||
if ( !artifactFile.exists() ) | |||
{ |
@@ -26,7 +26,6 @@ import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -116,13 +115,13 @@ public class RepositoryPurgeConsumer | |||
return this.includes; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
BidirectionalRepositoryLayout repositoryLayout; | |||
try | |||
{ | |||
repositoryLayout = layoutFactory.getLayout( repository.getLayoutType() ); | |||
repositoryLayout = layoutFactory.getLayout( repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ |
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.consumers.core.repository; | |||
*/ | |||
import org.apache.maven.archiva.common.utils.VersionUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.FilenameParts; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -42,7 +42,7 @@ public class RetentionCountRepositoryPurge | |||
{ | |||
private int retentionCount; | |||
public RetentionCountRepositoryPurge( ArchivaRepository repository, BidirectionalRepositoryLayout layout, | |||
public RetentionCountRepositoryPurge( ManagedRepositoryConfiguration repository, BidirectionalRepositoryLayout layout, | |||
ArtifactDAO artifactDao, int retentionCount ) | |||
{ | |||
super( repository, layout, artifactDao ); | |||
@@ -54,7 +54,7 @@ public class RetentionCountRepositoryPurge | |||
{ | |||
try | |||
{ | |||
File artifactFile = new File( repository.getUrl().getPath(), path ); | |||
File artifactFile = new File( repository.getLocation(), path ); | |||
if ( !artifactFile.exists() ) | |||
{ |
@@ -19,12 +19,10 @@ package org.apache.maven.archiva.consumers.core.repository; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.DefaultBidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -33,8 +31,6 @@ import org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory; | |||
import org.codehaus.plexus.jdo.JdoFactory; | |||
import org.jpox.SchemaTool; | |||
import javax.jdo.PersistenceManager; | |||
import javax.jdo.PersistenceManagerFactory; | |||
import java.io.File; | |||
import java.net.URL; | |||
import java.util.Date; | |||
@@ -43,6 +39,9 @@ import java.util.List; | |||
import java.util.Map; | |||
import java.util.Properties; | |||
import javax.jdo.PersistenceManager; | |||
import javax.jdo.PersistenceManagerFactory; | |||
/** | |||
* @author <a href="mailto:oching@apache.org">Maria Odea Ching</a> | |||
*/ | |||
@@ -53,33 +52,27 @@ public abstract class AbstractRepositoryPurgeTest | |||
public static final String TEST_REPO_NAME = "Test Repository"; | |||
public static final String TEST_REPO_URL = getBasedir() + "/target/test/test-repo/"; | |||
public static final String TEST_REPO_LOCATION = getBasedir() + "/target/test/test-repo/"; | |||
public static final int TEST_RETENTION_COUNT = 2; | |||
public static final int TEST_DAYS_OLDER = 30; | |||
public static final String PATH_TO_BY_DAYS_OLD_ARTIFACT = | |||
"org/apache/maven/plugins/maven-install-plugin/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.jar"; | |||
public static final String PATH_TO_BY_DAYS_OLD_ARTIFACT = "org/apache/maven/plugins/maven-install-plugin/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.jar"; | |||
public static final String PATH_TO_BY_DAYS_OLD_METADATA_DRIVEN_ARTIFACT = | |||
"org/codehaus/plexus/plexus-utils/1.4.3-SNAPSHOT/plexus-utils-1.4.3-20070113.163208-4.jar"; | |||
public static final String PATH_TO_BY_DAYS_OLD_METADATA_DRIVEN_ARTIFACT = "org/codehaus/plexus/plexus-utils/1.4.3-SNAPSHOT/plexus-utils-1.4.3-20070113.163208-4.jar"; | |||
public static final String PATH_TO_BY_RETENTION_COUNT_ARTIFACT = | |||
"org/jruby/plugins/jruby-rake-plugin/1.0RC1-SNAPSHOT/jruby-rake-plugin-1.0RC1-20070504.153317-1.jar"; | |||
public static final String PATH_TO_BY_RETENTION_COUNT_ARTIFACT = "org/jruby/plugins/jruby-rake-plugin/1.0RC1-SNAPSHOT/jruby-rake-plugin-1.0RC1-20070504.153317-1.jar"; | |||
public static final String PATH_TO_BY_RETENTION_COUNT_POM = | |||
"org/codehaus/castor/castor-anttasks/1.1.2-SNAPSHOT/castor-anttasks-1.1.2-20070506.163513-2.pom"; | |||
public static final String PATH_TO_BY_RETENTION_COUNT_POM = "org/codehaus/castor/castor-anttasks/1.1.2-SNAPSHOT/castor-anttasks-1.1.2-20070506.163513-2.pom"; | |||
public static final String PATH_TO_RELEASED_SNAPSHOT = | |||
"org/apache/maven/plugins/maven-plugin-plugin/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar"; | |||
public static final String PATH_TO_RELEASED_SNAPSHOT = "org/apache/maven/plugins/maven-plugin-plugin/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar"; | |||
public static final String PATH_TO_HIGHER_SNAPSHOT_EXISTS = | |||
"org/apache/maven/plugins/maven-source-plugin/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar"; | |||
public static final String PATH_TO_HIGHER_SNAPSHOT_EXISTS = "org/apache/maven/plugins/maven-source-plugin/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar"; | |||
private ManagedRepositoryConfiguration config; | |||
private ArchivaRepository repo; | |||
private ManagedRepositoryConfiguration repo; | |||
private BidirectionalRepositoryLayout layout; | |||
@@ -131,7 +124,7 @@ public abstract class AbstractRepositoryPurgeTest | |||
System.setProperty( (String) entry.getKey(), (String) entry.getValue() ); | |||
} | |||
URL jdoFileUrls[] = new URL[]{getClass().getResource( "/org/apache/maven/archiva/model/package.jdo" )}; | |||
URL jdoFileUrls[] = new URL[] { getClass().getResource( "/org/apache/maven/archiva/model/package.jdo" ) }; | |||
if ( ( jdoFileUrls == null ) || ( jdoFileUrls[0] == null ) ) | |||
{ | |||
@@ -141,8 +134,8 @@ public abstract class AbstractRepositoryPurgeTest | |||
File propsFile = null; // intentional | |||
boolean verbose = true; | |||
SchemaTool.deleteSchemaTables( jdoFileUrls, new URL[]{}, propsFile, verbose ); | |||
SchemaTool.createSchemaTables( jdoFileUrls, new URL[]{}, propsFile, verbose, null ); | |||
SchemaTool.deleteSchemaTables( jdoFileUrls, new URL[] {}, propsFile, verbose ); | |||
SchemaTool.createSchemaTables( jdoFileUrls, new URL[] {}, propsFile, verbose, null ); | |||
PersistenceManagerFactory pmf = jdoFactory.getPersistenceManagerFactory(); | |||
@@ -165,7 +158,7 @@ public abstract class AbstractRepositoryPurgeTest | |||
config.setId( TEST_REPO_ID ); | |||
config.setName( TEST_REPO_NAME ); | |||
config.setDaysOlder( TEST_DAYS_OLDER ); | |||
config.setLocation( TEST_REPO_URL ); | |||
config.setLocation( TEST_REPO_LOCATION ); | |||
config.setReleases( true ); | |||
config.setSnapshots( true ); | |||
config.setRetentionCount( TEST_RETENTION_COUNT ); | |||
@@ -173,11 +166,14 @@ public abstract class AbstractRepositoryPurgeTest | |||
return config; | |||
} | |||
public ArchivaRepository getRepository() | |||
public ManagedRepositoryConfiguration getRepository() | |||
{ | |||
if ( repo == null ) | |||
{ | |||
repo = new ArchivaRepository( TEST_REPO_ID, TEST_REPO_NAME, PathUtil.toUrl( TEST_REPO_URL ) ); | |||
repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( TEST_REPO_ID ); | |||
repo.setName( TEST_REPO_NAME ); | |||
repo.setLocation( TEST_REPO_LOCATION ); | |||
} | |||
return repo; |
@@ -197,10 +197,6 @@ | |||
<role>org.apache.maven.archiva.database.ProjectModelDAO</role> | |||
<role-hint>jdo</role-hint> | |||
</requirement> | |||
<requirement> | |||
<role>org.apache.maven.archiva.database.RepositoryDAO</role> | |||
<role-hint>jdo</role-hint> | |||
</requirement> | |||
<requirement> | |||
<role>org.apache.maven.archiva.database.RepositoryProblemDAO</role> | |||
<role-hint>jdo</role-hint> | |||
@@ -229,17 +225,6 @@ | |||
</requirement> | |||
</requirements> | |||
</component> | |||
<component> | |||
<role>org.apache.maven.archiva.database.RepositoryDAO</role> | |||
<role-hint>jdo</role-hint> | |||
<implementation>org.apache.maven.archiva.database.jdo.JdoRepositoryDAO</implementation> | |||
<requirements> | |||
<requirement> | |||
<role>org.apache.maven.archiva.database.jdo.JdoAccess</role> | |||
<role-hint>archiva</role-hint> | |||
</requirement> | |||
</requirements> | |||
</component> | |||
<component> | |||
<role>org.apache.maven.archiva.database.RepositoryProblemDAO</role> | |||
<role-hint>jdo</role-hint> |
@@ -22,13 +22,13 @@ package org.apache.maven.archiva.consumers.database; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ConfigurationNames; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -103,7 +103,7 @@ public class ArtifactUpdateDatabaseConsumer | |||
*/ | |||
private Digester digestMd5; | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private File repositoryDir; | |||
@@ -136,15 +136,15 @@ public class ArtifactUpdateDatabaseConsumer | |||
return this.includes; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repository = repository; | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
try | |||
{ | |||
this.layout = layoutFactory.getLayout( repository.getModel().getLayoutName() ); | |||
this.layout = layoutFactory.getLayout( repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ |
@@ -31,8 +31,6 @@ import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.RepositoryIndexException; | |||
import org.apache.maven.archiva.indexer.hashcodes.HashcodesRecord; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; | |||
@@ -184,17 +182,16 @@ public class IndexArtifactConsumer | |||
Iterator<ManagedRepositoryConfiguration> it = configuration.getConfiguration().getManagedRepositories().iterator(); | |||
while ( it.hasNext() ) | |||
{ | |||
ManagedRepositoryConfiguration repoconfig = it.next(); | |||
ManagedRepositoryConfiguration repository = it.next(); | |||
ArchivaRepository repository = ArchivaConfigurationAdaptor.toArchivaRepository( repoconfig ); | |||
IndexedRepositoryDetails pnl = new IndexedRepositoryDetails(); | |||
pnl.path = repository.getUrl().getPath(); | |||
pnl.layout = (BidirectionalRepositoryLayout) this.bidirectionalLayoutMap.get( repoconfig.getLayout() ); | |||
pnl.path = repository.getLocation(); | |||
pnl.layout = (BidirectionalRepositoryLayout) this.bidirectionalLayoutMap.get( repository.getLayout() ); | |||
pnl.index = indexFactory.createHashcodeIndex( repository ); | |||
this.repositoryMap.put( repoconfig.getId(), pnl ); | |||
this.repositoryMap.put( repository.getId(), pnl ); | |||
} | |||
} | |||
} |
@@ -22,6 +22,7 @@ package org.apache.maven.archiva.consumers.lucene; | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
@@ -30,7 +31,6 @@ import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.RepositoryIndexException; | |||
import org.apache.maven.archiva.indexer.filecontent.FileContentRecord; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -97,7 +97,7 @@ public class IndexContentConsumer | |||
private RepositoryContentIndex index; | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private File repositoryDir; | |||
@@ -128,16 +128,16 @@ public class IndexContentConsumer | |||
return this.includes; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.repository = repository; | |||
this.repositoryDir = new File( repository.getUrl().getPath() ); | |||
this.repositoryDir = new File( repository.getLocation() ); | |||
this.index = indexFactory.createFileContentIndex( repository ); | |||
try | |||
{ | |||
this.repositoryLayout = layoutFactory.getLayout( this.repository.getLayoutType() ); | |||
this.repositoryLayout = layoutFactory.getLayout( this.repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ |
@@ -21,8 +21,8 @@ package org.apache.maven.archiva.converter.legacy; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.converter.RepositoryConversionException; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.apache.maven.archiva.repository.scanner.RepositoryScanner; | |||
import org.apache.maven.artifact.repository.ArtifactRepository; | |||
@@ -72,23 +72,13 @@ public class DefaultLegacyRepositoryConverter | |||
{ | |||
try | |||
{ | |||
String legacyRepositoryUrl = PathUtil.toUrl( legacyRepositoryDirectory ); | |||
String defaultRepositoryUrl = PathUtil.toUrl( repositoryDirectory ); | |||
// workaround for spaces non converted by PathUtils in wagon | |||
// TODO: remove it when PathUtils will be fixed | |||
if ( legacyRepositoryUrl.indexOf( "%20" ) >= 0 ) | |||
{ | |||
legacyRepositoryUrl = StringUtils.replace( legacyRepositoryUrl, "%20", " " ); | |||
} | |||
if ( defaultRepositoryUrl.indexOf( "%20" ) >= 0 ) | |||
{ | |||
defaultRepositoryUrl = StringUtils.replace( defaultRepositoryUrl, "%20", " " ); | |||
} | |||
ArchivaRepository legacyRepository = new ArchivaRepository( "legacy", "Legacy Repository", | |||
legacyRepositoryUrl ); | |||
legacyRepository.getModel().setLayoutName( "legacy" ); | |||
ManagedRepositoryConfiguration legacyRepository = new ManagedRepositoryConfiguration(); | |||
legacyRepository.setId( "legacy"); | |||
legacyRepository.setName( "Legacy Repository" ); | |||
legacyRepository.setLocation( legacyRepositoryDirectory.getAbsolutePath() ); | |||
legacyRepository.setLayout( "legacy" ); | |||
ArtifactRepository repository = artifactRepositoryFactory.createArtifactRepository( "default", | |||
defaultRepositoryUrl, |
@@ -19,12 +19,12 @@ package org.apache.maven.archiva.converter.legacy; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.converter.artifact.ArtifactConversionException; | |||
import org.apache.maven.archiva.converter.artifact.ArtifactConverter; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -79,7 +79,7 @@ public class LegacyConverterArtifactConsumer | |||
includes.add( "**/*.war" ); | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
@@ -20,9 +20,8 @@ package org.apache.maven.archiva.converter; | |||
*/ | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.converter.legacy.LegacyRepositoryConverter; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.artifact.factory.ArtifactFactory; | |||
import org.apache.maven.artifact.repository.ArtifactRepository; | |||
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; | |||
@@ -49,7 +48,7 @@ public class RepositoryConverterTest | |||
{ | |||
private ArtifactRepository sourceRepository; | |||
private ArchivaRepository targetRepository; | |||
private ManagedRepositoryConfiguration targetRepository; | |||
private LegacyRepositoryConverter repositoryConverter; | |||
@@ -77,8 +76,11 @@ public class RepositoryConverterTest | |||
File targetBase = getTestFile( "target/test-target-repository" ); | |||
copyDirectoryStructure( getTestFile( "src/test/target-repository" ), targetBase ); | |||
targetRepository = new ArchivaRepository( "target", "Target Repo", PathUtil.toUrl( targetBase ) ); | |||
targetRepository.getModel().setLayoutName( "default" ); | |||
targetRepository = new ManagedRepositoryConfiguration(); | |||
targetRepository.setId( "target" ); | |||
targetRepository.setName( "Target Repo" ); | |||
targetRepository.setLocation( targetBase.getAbsolutePath() ); | |||
targetRepository.setLayout( "default" ); | |||
repositoryConverter = (LegacyRepositoryConverter) lookup( LegacyRepositoryConverter.ROLE, "default" ); | |||
@@ -144,7 +146,7 @@ public class RepositoryConverterTest | |||
throws IOException, RepositoryConversionException | |||
{ | |||
File legacyRepoDir = new File( sourceRepository.getBasedir() ); | |||
File destRepoDir = new File( targetRepository.getUrl().getPath() ); | |||
File destRepoDir = new File( targetRepository.getLocation() ); | |||
List excludes = new ArrayList(); | |||
repositoryConverter.convertLegacyRepository( legacyRepoDir, destRepoDir, excludes ); | |||
} |
@@ -22,9 +22,9 @@ package org.apache.maven.archiva.indexer; | |||
import org.apache.lucene.analysis.Analyzer; | |||
import org.apache.lucene.queryParser.QueryParser; | |||
import org.apache.lucene.search.Searchable; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneEntryConverter; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
import java.util.Collection; | |||
@@ -116,7 +116,7 @@ public interface RepositoryContentIndex | |||
* | |||
* @return the repository that this index belongs to. | |||
*/ | |||
ArchivaRepository getRepository(); | |||
ManagedRepositoryConfiguration getRepository(); | |||
/** | |||
* Get the analyzer in use for this index. |
@@ -19,7 +19,7 @@ package org.apache.maven.archiva.indexer; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
/** | |||
* Obtain an index instance. | |||
@@ -34,7 +34,7 @@ public interface RepositoryContentIndexFactory | |||
* @param repository the repository to create the content index from. | |||
* @return the index instance | |||
*/ | |||
RepositoryContentIndex createBytecodeIndex( ArchivaRepository repository ); | |||
RepositoryContentIndex createBytecodeIndex( ManagedRepositoryConfiguration repository ); | |||
/** | |||
* Method to create an instance of the file content index. | |||
@@ -42,7 +42,7 @@ public interface RepositoryContentIndexFactory | |||
* @param repository the repository to create the file content index from. | |||
* @return the index instance | |||
*/ | |||
RepositoryContentIndex createFileContentIndex( ArchivaRepository repository ); | |||
RepositoryContentIndex createFileContentIndex( ManagedRepositoryConfiguration repository ); | |||
/** | |||
* Method to create an instance of the hashcode index. | |||
@@ -50,5 +50,5 @@ public interface RepositoryContentIndexFactory | |||
* @param repository the repository to create the content index from. | |||
* @return the index instance | |||
*/ | |||
RepositoryContentIndex createHashcodeIndex( ArchivaRepository repository ); | |||
RepositoryContentIndex createHashcodeIndex( ManagedRepositoryConfiguration repository ); | |||
} |
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.indexer.functors; | |||
*/ | |||
import org.apache.commons.collections.Transformer; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* BytecodeIndexTransformer | |||
@@ -41,9 +41,9 @@ public class BytecodeIndexTransformer | |||
public Object transform( Object input ) | |||
{ | |||
if ( input instanceof ArchivaRepository ) | |||
if ( input instanceof ManagedRepositoryConfiguration ) | |||
{ | |||
return indexFactory.createBytecodeIndex( (ArchivaRepository) input ); | |||
return indexFactory.createBytecodeIndex( (ManagedRepositoryConfiguration) input ); | |||
} | |||
return input; |
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.indexer.functors; | |||
*/ | |||
import org.apache.commons.collections.Transformer; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* FileContentIndexTransformer | |||
@@ -41,9 +41,9 @@ public class FileContentIndexTransformer | |||
public Object transform( Object input ) | |||
{ | |||
if ( input instanceof ArchivaRepository ) | |||
if ( input instanceof ManagedRepositoryConfiguration ) | |||
{ | |||
return indexFactory.createFileContentIndex( (ArchivaRepository) input ); | |||
return indexFactory.createFileContentIndex( (ManagedRepositoryConfiguration) input ); | |||
} | |||
return input; |
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.indexer.functors; | |||
*/ | |||
import org.apache.commons.collections.Transformer; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* HashcodesIndexTransformer | |||
@@ -41,9 +41,9 @@ public class HashcodesIndexTransformer | |||
public Object transform( Object input ) | |||
{ | |||
if ( input instanceof ArchivaRepository ) | |||
if ( input instanceof ManagedRepositoryConfiguration ) | |||
{ | |||
return indexFactory.createHashcodeIndex( (ArchivaRepository) input ); | |||
return indexFactory.createHashcodeIndex( (ManagedRepositoryConfiguration) input ); | |||
} | |||
return input; |
@@ -20,7 +20,7 @@ package org.apache.maven.archiva.indexer.functors; | |||
*/ | |||
import org.apache.commons.collections.Predicate; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
/** | |||
* UserAllowedToSearchRepositoryPredicate | |||
@@ -35,7 +35,7 @@ public class UserAllowedToSearchRepositoryPredicate | |||
{ | |||
boolean satisfies = false; | |||
if ( object instanceof ArchivaRepository ) | |||
if ( object instanceof ManagedRepositoryConfiguration ) | |||
{ | |||
// TODO: perform check here. | |||
satisfies = true; // Everyone is allowed! (for now) |
@@ -29,10 +29,10 @@ import org.apache.lucene.index.TermEnum; | |||
import org.apache.lucene.queryParser.QueryParser; | |||
import org.apache.lucene.search.IndexSearcher; | |||
import org.apache.lucene.search.Searchable; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryIndexException; | |||
import org.apache.maven.archiva.indexer.RepositoryIndexSearchException; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
import java.io.IOException; | |||
@@ -64,9 +64,9 @@ public class LuceneRepositoryContentIndex | |||
*/ | |||
private LuceneIndexHandlers indexHandlers; | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
public LuceneRepositoryContentIndex( ArchivaRepository repository, File indexDir, LuceneIndexHandlers handlers ) | |||
public LuceneRepositoryContentIndex( ManagedRepositoryConfiguration repository, File indexDir, LuceneIndexHandlers handlers ) | |||
{ | |||
this.repository = repository; | |||
this.indexLocation = indexDir; | |||
@@ -399,7 +399,7 @@ public class LuceneRepositoryContentIndex | |||
return this.indexHandlers.getId(); | |||
} | |||
public ArchivaRepository getRepository() | |||
public ManagedRepositoryConfiguration getRepository() | |||
{ | |||
return repository; | |||
} |
@@ -27,7 +27,6 @@ import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.bytecode.BytecodeHandlers; | |||
import org.apache.maven.archiva.indexer.filecontent.FileContentHandlers; | |||
import org.apache.maven.archiva.indexer.hashcodes.HashcodesHandlers; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
@@ -46,19 +45,19 @@ public class LuceneRepositoryContentIndexFactory | |||
*/ | |||
private ArchivaConfiguration configuration; | |||
public RepositoryContentIndex createBytecodeIndex( ArchivaRepository repository ) | |||
public RepositoryContentIndex createBytecodeIndex( ManagedRepositoryConfiguration repository ) | |||
{ | |||
File indexDir = toIndexDir( repository, "bytecode" ); | |||
return new LuceneRepositoryContentIndex( repository, indexDir, new BytecodeHandlers() ); | |||
} | |||
public RepositoryContentIndex createFileContentIndex( ArchivaRepository repository ) | |||
public RepositoryContentIndex createFileContentIndex( ManagedRepositoryConfiguration repository ) | |||
{ | |||
File indexDir = toIndexDir( repository, "filecontent" ); | |||
return new LuceneRepositoryContentIndex( repository, indexDir, new FileContentHandlers() ); | |||
} | |||
public RepositoryContentIndex createHashcodeIndex( ArchivaRepository repository ) | |||
public RepositoryContentIndex createHashcodeIndex( ManagedRepositoryConfiguration repository ) | |||
{ | |||
File indexDir = toIndexDir( repository, "hashcodes" ); | |||
return new LuceneRepositoryContentIndex( repository, indexDir, new HashcodesHandlers() ); | |||
@@ -71,7 +70,7 @@ public class LuceneRepositoryContentIndexFactory | |||
* @param indexId the id of the index | |||
* @return the directory to put the index into. | |||
*/ | |||
private File toIndexDir( ArchivaRepository repository, String indexId ) | |||
private File toIndexDir( ManagedRepositoryConfiguration repository, String indexId ) | |||
{ | |||
// Attempt to get the specified indexDir in the configuration first. | |||
ManagedRepositoryConfiguration repoConfig = | |||
@@ -81,7 +80,7 @@ public class LuceneRepositoryContentIndexFactory | |||
if ( repoConfig == null ) | |||
{ | |||
// No configured index dir, use the repository path instead. | |||
String repoPath = repository.getUrl().getPath(); | |||
String repoPath = repository.getLocation(); | |||
indexDir = new File( repoPath, ".index/" + indexId + "/" ); | |||
} | |||
else | |||
@@ -90,7 +89,7 @@ public class LuceneRepositoryContentIndexFactory | |||
String repoPath = repoConfig.getIndexDir(); | |||
if ( StringUtils.isBlank( repoPath ) ) | |||
{ | |||
repoPath = repository.getUrl().getPath(); | |||
repoPath = repository.getLocation(); | |||
if ( !repoPath.endsWith( "/" ) ) | |||
{ | |||
repoPath += "/"; |
@@ -41,7 +41,6 @@ import org.apache.maven.archiva.indexer.hashcodes.HashcodesKeys; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneEntryConverter; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneQuery; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; | |||
@@ -330,7 +329,7 @@ public class DefaultCrossRepositorySearch | |||
{ | |||
if ( repo.isScanned() ) | |||
{ | |||
localIndexedRepositories.add( ArchivaConfigurationAdaptor.toArchivaRepository( repo ) ); | |||
localIndexedRepositories.add( repo ); | |||
} | |||
} | |||
} |
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.indexer; | |||
* under the License. | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.lucene.document.Document; | |||
import org.apache.lucene.index.IndexWriter; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
@@ -27,7 +26,6 @@ import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneIndexHandlers; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.codehaus.plexus.util.FileUtils; | |||
@@ -73,7 +71,7 @@ public abstract class AbstractIndexerTestCase | |||
} | |||
public abstract RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, | |||
ArchivaRepository repository ); | |||
ManagedRepositoryConfiguration repository ); | |||
public abstract LuceneIndexHandlers getIndexHandler(); | |||
@@ -86,14 +84,14 @@ public abstract class AbstractIndexerTestCase | |||
(RepositoryContentIndexFactory) lookup( RepositoryContentIndexFactory.class | |||
.getName(), "lucene" ); | |||
ArchivaRepository repository = createTestIndex( getIndexName() ); | |||
ManagedRepositoryConfiguration repository = createTestIndex( getIndexName() ); | |||
index = createIndex( indexFactory, repository ); | |||
indexHandlers = getIndexHandler(); | |||
} | |||
private ArchivaRepository createTestIndex( String indexName ) | |||
private ManagedRepositoryConfiguration createTestIndex( String indexName ) | |||
throws Exception | |||
{ | |||
File repoDir = new File( getBasedir(), "src/test/managed-repository" ); | |||
@@ -106,10 +104,8 @@ public abstract class AbstractIndexerTestCase | |||
assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
ArchivaRepository repository = | |||
new ArchivaRepository( TEST_DEFAULT_REPO_ID, TEST_DEFAULT_REPOSITORY_NAME, repoUri ); | |||
ManagedRepositoryConfiguration repository = createRepository( TEST_DEFAULT_REPO_ID, | |||
TEST_DEFAULT_REPOSITORY_NAME, repoDir ); | |||
File indexLocation = new File( testIndexesDir, "/index-" + indexName + "-" + getName() + "/" ); | |||
@@ -228,4 +224,13 @@ public abstract class AbstractIndexerTestCase | |||
writer.optimize(); | |||
writer.close(); | |||
} | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, File location ) | |||
{ | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.getAbsolutePath() ); | |||
return repo; | |||
} | |||
} |
@@ -19,13 +19,13 @@ package org.apache.maven.archiva.indexer.bytecode; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.AbstractIndexCreationTestCase; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneIndexHandlers; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
import java.util.Map; | |||
@@ -48,7 +48,7 @@ public class BytecodeIndexTest extends AbstractIndexCreationTestCase | |||
return new BytecodeHandlers(); | |||
} | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ArchivaRepository repository ) | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ManagedRepositoryConfiguration repository ) | |||
{ | |||
return indexFactory.createBytecodeIndex( repository ); | |||
} |
@@ -22,13 +22,13 @@ package org.apache.maven.archiva.indexer.bytecode; | |||
import org.apache.lucene.search.BooleanClause; | |||
import org.apache.lucene.search.BooleanQuery; | |||
import org.apache.lucene.search.MatchAllDocsQuery; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.AbstractSearchTestCase; | |||
import org.apache.maven.archiva.indexer.ArtifactKeys; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneIndexHandlers; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
import java.util.HashMap; | |||
@@ -54,7 +54,7 @@ public class BytecodeSearchTest extends AbstractSearchTestCase | |||
return new BytecodeHandlers(); | |||
} | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ArchivaRepository repository ) | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ManagedRepositoryConfiguration repository ) | |||
{ | |||
return indexFactory.createBytecodeIndex( repository ); | |||
} |
@@ -19,13 +19,13 @@ package org.apache.maven.archiva.indexer.hashcodes; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.AbstractIndexCreationTestCase; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneIndexHandlers; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* HashcodesIndexTest | |||
@@ -45,7 +45,7 @@ public class HashcodesIndexTest extends AbstractIndexCreationTestCase | |||
return new HashcodesHandlers(); | |||
} | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ArchivaRepository repository ) | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ManagedRepositoryConfiguration repository ) | |||
{ | |||
return indexFactory.createHashcodeIndex( repository ); | |||
} |
@@ -22,13 +22,13 @@ package org.apache.maven.archiva.indexer.hashcodes; | |||
import org.apache.lucene.search.BooleanClause; | |||
import org.apache.lucene.search.BooleanQuery; | |||
import org.apache.lucene.search.MatchAllDocsQuery; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.AbstractSearchTestCase; | |||
import org.apache.maven.archiva.indexer.ArtifactKeys; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.indexer.lucene.LuceneIndexHandlers; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.io.File; | |||
import java.util.HashMap; | |||
@@ -54,7 +54,7 @@ public class HashcodesSearchTest extends AbstractSearchTestCase | |||
return new HashcodesHandlers(); | |||
} | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ArchivaRepository repository ) | |||
public RepositoryContentIndex createIndex( RepositoryContentIndexFactory indexFactory, ManagedRepositoryConfiguration repository ) | |||
{ | |||
return indexFactory.createHashcodeIndex( repository ); | |||
} |
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.indexer.search; | |||
* under the License. | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.lucene.search.Hits; | |||
import org.apache.lucene.search.MatchAllDocsQuery; | |||
import org.apache.lucene.search.Query; | |||
@@ -29,7 +28,6 @@ import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.indexer.MockConfiguration; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndex; | |||
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.codehaus.plexus.util.FileUtils; | |||
@@ -62,10 +60,7 @@ public class DefaultCrossRepositorySearchTest | |||
assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
ArchivaRepository repository = | |||
new ArchivaRepository( TEST_DEFAULT_REPO_ID, TEST_DEFAULT_REPOSITORY_NAME, repoUri ); | |||
ManagedRepositoryConfiguration repository = createRepository( TEST_DEFAULT_REPO_ID, TEST_DEFAULT_REPOSITORY_NAME, repoDir ); | |||
File indexLocation = new File( "target/index-crossrepo-" + getName() + "/" ); | |||
@@ -168,4 +163,13 @@ public class DefaultCrossRepositorySearchTest | |||
assertEquals( "Search Result Hits", hitCount, results.getHits().size() ); | |||
} | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, File location ) | |||
{ | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.getAbsolutePath() ); | |||
return repo; | |||
} | |||
} |
@@ -1,137 +0,0 @@ | |||
package org.apache.maven.archiva.model; | |||
/* | |||
* 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. | |||
*/ | |||
/** | |||
* ArchivaRepository | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public class ArchivaRepository | |||
{ | |||
private ArchivaRepositoryModel model; | |||
private RepositoryURL url; | |||
protected boolean blacklisted; | |||
/** | |||
* Construct a Repository. | |||
* | |||
* @param id the unique identifier for this repository. | |||
* @param name the name for this repository. | |||
* @param url the base URL for this repository (this should point to the top level URL for the entire repository) | |||
* @param layout the layout technique for this repository. | |||
*/ | |||
public ArchivaRepository( String id, String name, String url ) | |||
{ | |||
model = new ArchivaRepositoryModel(); | |||
model.setId( id ); | |||
model.setName( name ); | |||
setUrl( new RepositoryURL( url ) ); | |||
} | |||
/** | |||
* Construct a Repository. | |||
* | |||
* @param model the model to use | |||
*/ | |||
public ArchivaRepository( ArchivaRepositoryModel model ) | |||
{ | |||
this.model = model; | |||
this.url = new RepositoryURL( model.getUrl() ); | |||
} | |||
public String getId() | |||
{ | |||
return model.getId(); | |||
} | |||
public void setUrl( RepositoryURL url ) | |||
{ | |||
this.url = url; | |||
model.setUrl( url.getUrl() ); | |||
} | |||
public RepositoryURL getUrl() | |||
{ | |||
return this.url; | |||
} | |||
public void setUsername(String username) | |||
{ | |||
this.model.setRepositoryUsername(username); | |||
} | |||
public void setPassword(String password) | |||
{ | |||
this.model.setRepositoryPassword(password); | |||
} | |||
public ArchivaRepositoryModel getModel() | |||
{ | |||
return this.model; | |||
} | |||
public boolean isBlacklisted() | |||
{ | |||
return blacklisted; | |||
} | |||
public void setBlacklisted( boolean blacklisted ) | |||
{ | |||
this.blacklisted = blacklisted; | |||
} | |||
public String getLayoutType() | |||
{ | |||
return this.model.getLayoutName(); | |||
} | |||
public String getName() | |||
{ | |||
return this.model.getName(); | |||
} | |||
public String getUsername() | |||
{ | |||
return model.getRepositoryUsername(); | |||
} | |||
public String getPassword() | |||
{ | |||
return model.getRepositoryPassword(); | |||
} | |||
public String toString() | |||
{ | |||
StringBuffer sb = new StringBuffer(); | |||
sb.append( "ArchivaRepository[" ); | |||
sb.append( this.model.getId() ).append( "," ); | |||
sb.append( this.model.getUrl() ); | |||
sb.append( "]" ); | |||
return sb.toString(); | |||
} | |||
} |
@@ -25,7 +25,7 @@ | |||
This object is not serialized to the Database. | |||
</description> | |||
<fields> | |||
<!-- Note: these are only managed repositories. This should be reviewed as to whether they are still needed --> | |||
<!-- Note: these are only managed repositories. This should be reviewed as to whether they are still needed | |||
<field> | |||
<name>repositories</name> | |||
<version>1.0.0+</version> | |||
@@ -34,6 +34,7 @@ | |||
<multiplicity>*</multiplicity> | |||
</association> | |||
</field> | |||
--> | |||
<field> | |||
<name>artifacts</name> | |||
<version>1.0.0+</version> | |||
@@ -93,7 +94,7 @@ | |||
|_| \_\___| .__/ \___/|___/_|\__\___/|_| \__, | | |||
|_| |___/ | |||
--> | |||
<!-- | |||
<class stash.storable="true" | |||
jpox.table="REPOSITORIES" | |||
jpox.not-persisted-fields="modelEncoding"> | |||
@@ -205,6 +206,7 @@ | |||
</codeSegment> | |||
</codeSegments> | |||
</class> | |||
--> | |||
<!-- _______________________________________________________________ | |||
_ _ _ __ _ | |||
@@ -2289,129 +2291,6 @@ | |||
private static final long serialVersionUID = -7113629916828442780L; | |||
]]></code> | |||
</codeSegment> | |||
<codeSegment> | |||
<version>1.0.0+</version> | |||
<code><![CDATA[ | |||
private transient long startTimestamp; | |||
public void triggerStart() | |||
{ | |||
startTimestamp = System.currentTimeMillis(); | |||
} | |||
public void triggerFinished() | |||
{ | |||
long finished = System.currentTimeMillis(); | |||
setDuration( finished - startTimestamp ); | |||
setWhenGathered( new java.util.Date( finished ) ); | |||
} | |||
public void increaseFileCount() | |||
{ | |||
this.totalFileCount++; | |||
} | |||
public void increaseNewFileCount() | |||
{ | |||
this.newFileCount++; | |||
} | |||
private transient java.util.List knownConsumers; | |||
private transient java.util.List invalidConsumers; | |||
public void setKnownConsumers( java.util.List consumers ) | |||
{ | |||
knownConsumers = consumers; | |||
} | |||
public void setInvalidConsumers( java.util.List consumers ) | |||
{ | |||
invalidConsumers = consumers; | |||
} | |||
private static boolean isEmpty( java.util.Collection coll ) | |||
{ | |||
if ( coll == null ) | |||
{ | |||
return true; | |||
} | |||
return coll.isEmpty(); | |||
} | |||
public String toDump( ArchivaRepository repo ) | |||
{ | |||
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(); | |||
StringBuffer buf = new StringBuffer(); | |||
buf.append( "\n.\\ Scan of " ).append( this.getRepositoryId() ); | |||
buf.append( " \\.__________________________________________" ); | |||
buf.append( "\n Repository URL : " ).append( repo.getUrl() ); | |||
buf.append( "\n Repository Name : " ).append( repo.getModel().getName() ); | |||
buf.append( "\n Repository Layout : " ).append( repo.getModel().getLayoutName() ); | |||
buf.append( "\n Known Consumers : " ); | |||
if ( !isEmpty( knownConsumers ) ) | |||
{ | |||
buf.append( "(" ).append( knownConsumers.size() ).append( " configured)" ); | |||
for ( java.util.Iterator iter = knownConsumers.iterator(); iter.hasNext(); ) | |||
{ | |||
String id = (String) iter.next(); | |||
buf.append( "\n " ).append( id ); | |||
} | |||
} | |||
else | |||
{ | |||
buf.append( "<none>" ); | |||
} | |||
buf.append( "\n Invalid Consumers : " ); | |||
if ( !isEmpty( invalidConsumers ) ) | |||
{ | |||
buf.append( "(" ).append( invalidConsumers.size() ).append( " configured)" ); | |||
for ( java.util.Iterator iter = invalidConsumers.iterator(); iter.hasNext(); ) | |||
{ | |||
String id = (String) iter.next(); | |||
buf.append( "\n " ).append( id ); | |||
} | |||
} | |||
else | |||
{ | |||
buf.append( "<none>" ); | |||
} | |||
buf.append( "\n Duration : " ); | |||
buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( this.getDuration() ) ); | |||
buf.append( "\n When Gathered : " ); | |||
if ( this.getWhenGathered() == null ) | |||
{ | |||
buf.append( "<null>" ); | |||
} | |||
else | |||
{ | |||
buf.append( df.format( this.getWhenGathered() ) ); | |||
} | |||
buf.append( "\n Total File Count : " ).append( this.getTotalFileCount() ); | |||
long averageMsPerFile = 0; | |||
if ( this.totalFileCount != 0 ) | |||
{ | |||
averageMsPerFile = ( this.getDuration() / this.getTotalFileCount() ); | |||
} | |||
buf.append( "\n Avg Time Per File : " ); | |||
buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( averageMsPerFile ) ); | |||
buf.append( "\n______________________________________________________________" ); | |||
return buf.toString(); | |||
} | |||
]]></code> | |||
</codeSegment> | |||
</codeSegments> | |||
</class> | |||
</classes> |
@@ -28,15 +28,14 @@ import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.NetworkProxyConfiguration; | |||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.RepositoryURL; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
import org.apache.maven.archiva.policies.DownloadPolicy; | |||
import org.apache.maven.archiva.policies.PostDownloadPolicy; | |||
import org.apache.maven.archiva.policies.PreDownloadPolicy; | |||
import org.apache.maven.archiva.policies.urlcache.UrlFailureCache; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -132,7 +131,7 @@ public class DefaultRepositoryProxyConnectors | |||
* could not be) fetched. | |||
* @throws ProxyException if there was a problem fetching the artifact. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, ArtifactReference artifact ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, ArtifactReference artifact ) | |||
throws ProxyException | |||
{ | |||
File localFile = toLocalFile( repository, artifact ); | |||
@@ -141,9 +140,9 @@ public class DefaultRepositoryProxyConnectors | |||
requestProperties.setProperty( "version", artifact.getVersion() ); | |||
List<ProxyConnector> connectors = getProxyConnectors( repository ); | |||
for( ProxyConnector connector: connectors ) | |||
for ( ProxyConnector connector : connectors ) | |||
{ | |||
ArchivaRepository targetRepository = connector.getTargetRepository(); | |||
RemoteRepositoryConfiguration targetRepository = connector.getTargetRepository(); | |||
String targetPath = getLayout( targetRepository ).toPath( artifact ); | |||
File downloadedFile = transferFile( connector, targetRepository, targetPath, localFile, requestProperties ); | |||
@@ -163,7 +162,7 @@ public class DefaultRepositoryProxyConnectors | |||
* | |||
* @return the (local) metadata file that was fetched/merged/updated, or null if no metadata file exists. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, VersionedReference metadata ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, VersionedReference metadata ) | |||
throws ProxyException | |||
{ | |||
File localFile = toLocalFile( repository, metadata ); | |||
@@ -172,9 +171,9 @@ public class DefaultRepositoryProxyConnectors | |||
boolean hasFetched = false; | |||
List<ProxyConnector> connectors = getProxyConnectors( repository ); | |||
for( ProxyConnector connector: connectors ) | |||
for ( ProxyConnector connector : connectors ) | |||
{ | |||
ArchivaRepository targetRepository = connector.getTargetRepository(); | |||
RemoteRepositoryConfiguration targetRepository = connector.getTargetRepository(); | |||
String targetPath = metadataTools.toPath( metadata ); | |||
File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath ); | |||
@@ -226,7 +225,7 @@ public class DefaultRepositoryProxyConnectors | |||
* | |||
* @return the (local) metadata file that was fetched/merged/updated, or null if no metadata file exists. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, ProjectReference metadata ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, ProjectReference metadata ) | |||
throws ProxyException | |||
{ | |||
File localFile = toLocalFile( repository, metadata ); | |||
@@ -235,9 +234,9 @@ public class DefaultRepositoryProxyConnectors | |||
boolean hasFetched = false; | |||
List<ProxyConnector> connectors = getProxyConnectors( repository ); | |||
for( ProxyConnector connector: connectors ) | |||
for ( ProxyConnector connector : connectors ) | |||
{ | |||
ArchivaRepository targetRepository = connector.getTargetRepository(); | |||
RemoteRepositoryConfiguration targetRepository = connector.getTargetRepository(); | |||
String targetPath = metadataTools.toPath( metadata ); | |||
File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath ); | |||
@@ -284,16 +283,17 @@ public class DefaultRepositoryProxyConnectors | |||
return null; | |||
} | |||
private File toLocalRepoFile( ArchivaRepository repository, ArchivaRepository targetRepository, String targetPath ) | |||
private File toLocalRepoFile( ManagedRepositoryConfiguration repository, | |||
RemoteRepositoryConfiguration targetRepository, String targetPath ) | |||
{ | |||
String repoPath = metadataTools.getRepositorySpecificName( targetRepository, targetPath ); | |||
return new File( repository.getUrl().getPath(), repoPath ); | |||
return new File( repository.getLocation(), repoPath ); | |||
} | |||
/** | |||
* Test if the provided ArchivaRepository has any proxies configured for it. | |||
* Test if the provided ManagedRepositoryConfiguration has any proxies configured for it. | |||
*/ | |||
public boolean hasProxies( ArchivaRepository repository ) | |||
public boolean hasProxies( ManagedRepositoryConfiguration repository ) | |||
{ | |||
synchronized ( this.proxyConnectorMap ) | |||
{ | |||
@@ -301,26 +301,26 @@ public class DefaultRepositoryProxyConnectors | |||
} | |||
} | |||
private File toLocalFile( ArchivaRepository repository, ArtifactReference artifact ) | |||
private File toLocalFile( ManagedRepositoryConfiguration repository, ArtifactReference artifact ) | |||
throws ProxyException | |||
{ | |||
BidirectionalRepositoryLayout sourceLayout = getLayout( repository ); | |||
String sourcePath = sourceLayout.toPath( artifact ); | |||
return new File( repository.getUrl().getPath(), sourcePath ); | |||
return new File( repository.getLocation(), sourcePath ); | |||
} | |||
private File toLocalFile( ArchivaRepository repository, ProjectReference metadata ) | |||
private File toLocalFile( ManagedRepositoryConfiguration repository, ProjectReference metadata ) | |||
throws ProxyException | |||
{ | |||
String sourcePath = metadataTools.toPath( metadata ); | |||
return new File( repository.getUrl().getPath(), sourcePath ); | |||
return new File( repository.getLocation(), sourcePath ); | |||
} | |||
private File toLocalFile( ArchivaRepository repository, VersionedReference metadata ) | |||
private File toLocalFile( ManagedRepositoryConfiguration repository, VersionedReference metadata ) | |||
throws ProxyException | |||
{ | |||
String sourcePath = metadataTools.toPath( metadata ); | |||
return new File( repository.getUrl().getPath(), sourcePath ); | |||
return new File( repository.getLocation(), sourcePath ); | |||
} | |||
/** | |||
@@ -331,17 +331,43 @@ public class DefaultRepositoryProxyConnectors | |||
* @throws ProxyException if there was a problem obtaining the layout from the repository (usually due to a bad | |||
* configuration of the repository) | |||
*/ | |||
private BidirectionalRepositoryLayout getLayout( ArchivaRepository repository ) | |||
private BidirectionalRepositoryLayout getLayout( ManagedRepositoryConfiguration repository ) | |||
throws ProxyException | |||
{ | |||
try | |||
{ | |||
return layoutFactory.getLayout( repository.getLayoutType() ); | |||
return layoutFactory.getLayout( repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ | |||
throw new ProxyException( "Unable to proxy due to bad repository layout definition [" + repository.getId() | |||
+ "] had a layout defined as [" + repository.getLayoutType() + "] : " + e.getMessage(), e ); | |||
throw new ProxyException( | |||
"Unable to proxy due to bad managed repository layout definition [" | |||
+ repository.getId() + "] had a layout defined as [" + repository.getLayout() | |||
+ "] : " + e.getMessage(), e ); | |||
} | |||
} | |||
/** | |||
* Get the layout for the repository. | |||
* | |||
* @param repository the repository to get the layout from. | |||
* @return the layout | |||
* @throws ProxyException if there was a problem obtaining the layout from the repository (usually due to a bad | |||
* configuration of the repository) | |||
*/ | |||
private BidirectionalRepositoryLayout getLayout( RemoteRepositoryConfiguration repository ) | |||
throws ProxyException | |||
{ | |||
try | |||
{ | |||
return layoutFactory.getLayout( repository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ | |||
throw new ProxyException( | |||
"Unable to proxy due to bad remote repository layout definition [" | |||
+ repository.getId() + "] had a layout defined as [" + repository.getLayout() | |||
+ "] : " + e.getMessage(), e ); | |||
} | |||
} | |||
@@ -382,11 +408,11 @@ public class DefaultRepositoryProxyConnectors | |||
* @return the local file that was downloaded, or null if not downloaded. | |||
* @throws ProxyException if transfer was unsuccessful. | |||
*/ | |||
private File transferFile( ProxyConnector connector, ArchivaRepository remoteRepository, String remotePath, | |||
File localFile, Properties requestProperties ) | |||
private File transferFile( ProxyConnector connector, RemoteRepositoryConfiguration remoteRepository, | |||
String remotePath, File localFile, Properties requestProperties ) | |||
throws ProxyException | |||
{ | |||
String url = remoteRepository.getUrl().toString() + remotePath; | |||
String url = remoteRepository.getUrl() + remotePath; | |||
requestProperties.setProperty( "url", url ); | |||
// Is a whitelist defined? | |||
@@ -423,7 +449,8 @@ public class DefaultRepositoryProxyConnectors | |||
Wagon wagon = null; | |||
try | |||
{ | |||
String protocol = remoteRepository.getUrl().getProtocol(); | |||
RepositoryURL repoUrl = new RepositoryURL( remoteRepository.getUrl() ); | |||
String protocol = repoUrl.getProtocol(); | |||
wagon = (Wagon) wagons.get( protocol ); | |||
if ( wagon == null ) | |||
{ | |||
@@ -497,11 +524,11 @@ public class DefaultRepositoryProxyConnectors | |||
* @param type the type of checksum to transfer (example: ".md5" or ".sha1") | |||
* @throws ProxyException if copying the downloaded file into place did not succeed. | |||
*/ | |||
private void transferChecksum( Wagon wagon, ArchivaRepository remoteRepository, String remotePath, File localFile, | |||
String type ) | |||
private void transferChecksum( Wagon wagon, RemoteRepositoryConfiguration remoteRepository, String remotePath, | |||
File localFile, String type ) | |||
throws ProxyException | |||
{ | |||
String url = remoteRepository.getUrl().toString() + remotePath; | |||
String url = remoteRepository.getUrl() + remotePath; | |||
// Transfer checksum does not use the policy. | |||
if ( urlFailureCache.hasFailedBefore( url + type ) ) | |||
@@ -537,7 +564,8 @@ public class DefaultRepositoryProxyConnectors | |||
* @throws ProxyException if there was a problem moving the downloaded file into place. | |||
* @throws WagonException if there was a problem tranfering the file. | |||
*/ | |||
private File transferSimpleFile( Wagon wagon, ArchivaRepository remoteRepository, String remotePath, File localFile ) | |||
private File transferSimpleFile( Wagon wagon, RemoteRepositoryConfiguration remoteRepository, String remotePath, | |||
File localFile ) | |||
throws ProxyException, WagonException | |||
{ | |||
assert ( remotePath != null ); | |||
@@ -612,9 +640,10 @@ public class DefaultRepositoryProxyConnectors | |||
* @param localFile the local file (utilized by the {@link DownloadPolicy#applyPolicy(String,Properties,File)}) | |||
* @return true if all of the policies passed, false if a policy failed. | |||
*/ | |||
private boolean applyPolicies( Map<String, ? extends DownloadPolicy> policies, Map<String, String> settings, Properties request, File localFile ) | |||
private boolean applyPolicies( Map<String, ? extends DownloadPolicy> policies, Map<String, String> settings, | |||
Properties request, File localFile ) | |||
{ | |||
for( Entry<String, ? extends DownloadPolicy> entry: policies.entrySet() ) | |||
for ( Entry<String, ? extends DownloadPolicy> entry : policies.entrySet() ) | |||
{ | |||
String key = (String) entry.getKey(); | |||
DownloadPolicy policy = entry.getValue(); | |||
@@ -674,7 +703,8 @@ public class DefaultRepositoryProxyConnectors | |||
* @param remoteRepository the remote repository to connect to. | |||
* @return true if the connection was successful. false if not connected. | |||
*/ | |||
private boolean connectToRepository( ProxyConnector connector, Wagon wagon, ArchivaRepository remoteRepository ) | |||
private boolean connectToRepository( ProxyConnector connector, Wagon wagon, | |||
RemoteRepositoryConfiguration remoteRepository ) | |||
{ | |||
boolean connected = false; | |||
@@ -691,7 +721,7 @@ public class DefaultRepositoryProxyConnectors | |||
String password = remoteRepository.getPassword(); | |||
if ( username != null && password != null ) | |||
{ | |||
getLogger().info( | |||
getLogger().debug( | |||
"Using username " + username + " to connect to remote repository " | |||
+ remoteRepository.getUrl() ); | |||
authInfo = new AuthenticationInfo(); | |||
@@ -700,7 +730,7 @@ public class DefaultRepositoryProxyConnectors | |||
} | |||
else | |||
{ | |||
getLogger().info( "No authentication for remote repository needed" ); | |||
getLogger().debug( "No authentication for remote repository needed" ); | |||
} | |||
Repository wagonRepository = new Repository( remoteRepository.getId(), remoteRepository.getUrl().toString() ); | |||
@@ -742,7 +772,7 @@ public class DefaultRepositoryProxyConnectors | |||
return false; | |||
} | |||
for( String pattern: patterns ) | |||
for ( String pattern : patterns ) | |||
{ | |||
if ( SelectorUtils.matchPath( pattern, path, false ) ) | |||
{ | |||
@@ -756,7 +786,7 @@ public class DefaultRepositoryProxyConnectors | |||
/** | |||
* TODO: Ensure that list is correctly ordered based on configuration. See MRM-477 | |||
*/ | |||
public List<ProxyConnector> getProxyConnectors( ArchivaRepository repository ) | |||
public List<ProxyConnector> getProxyConnectors( ManagedRepositoryConfiguration repository ) | |||
{ | |||
synchronized ( this.proxyConnectorMap ) | |||
{ | |||
@@ -765,6 +795,8 @@ public class DefaultRepositoryProxyConnectors | |||
{ | |||
return Collections.EMPTY_LIST; | |||
} | |||
Collections.sort( ret, ProxyConnectorOrderComparator.getInstance() ); | |||
return ret; | |||
} | |||
} | |||
@@ -792,8 +824,9 @@ public class DefaultRepositoryProxyConnectors | |||
ProxyConnectorOrderComparator proxyOrderSorter = new ProxyConnectorOrderComparator(); | |||
this.proxyConnectorMap.clear(); | |||
List<ProxyConnectorConfiguration> proxyConfigs = archivaConfiguration.getConfiguration().getProxyConnectors(); | |||
for( ProxyConnectorConfiguration proxyConfig: proxyConfigs ) | |||
List<ProxyConnectorConfiguration> proxyConfigs = archivaConfiguration.getConfiguration() | |||
.getProxyConnectors(); | |||
for ( ProxyConnectorConfiguration proxyConfig : proxyConfigs ) | |||
{ | |||
String key = proxyConfig.getSourceRepoId(); | |||
@@ -831,23 +864,23 @@ public class DefaultRepositoryProxyConnectors | |||
// Add the connector. | |||
connectors.add( connector ); | |||
// Ensure the list is sorted. | |||
Collections.sort( connectors, proxyOrderSorter ); | |||
// Set the key to the list of connectors. | |||
this.proxyConnectorMap.put( key, connectors ); | |||
} | |||
} | |||
synchronized ( this.networkProxyMap ) | |||
{ | |||
this.networkProxyMap.clear(); | |||
List<NetworkProxyConfiguration> networkProxies = archivaConfiguration.getConfiguration().getNetworkProxies(); | |||
for( NetworkProxyConfiguration networkProxyConfig: networkProxies ) | |||
List<NetworkProxyConfiguration> networkProxies = archivaConfiguration.getConfiguration() | |||
.getNetworkProxies(); | |||
for ( NetworkProxyConfiguration networkProxyConfig : networkProxies ) | |||
{ | |||
String key = networkProxyConfig.getId(); | |||
@@ -864,24 +897,14 @@ public class DefaultRepositoryProxyConnectors | |||
} | |||
} | |||
private ArchivaRepository getRemoteRepository( String repoId ) | |||
private RemoteRepositoryConfiguration getRemoteRepository( String repoId ) | |||
{ | |||
RemoteRepositoryConfiguration repoConfig = archivaConfiguration.getConfiguration() | |||
.findRemoteRepositoryById( repoId ); | |||
ArchivaRepository repo = new ArchivaRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getUrl() ); | |||
repo.getModel().setLayoutName( repoConfig.getLayout() ); | |||
repo.setUsername( repoConfig.getUsername() ); | |||
repo.setPassword( repoConfig.getPassword() ); | |||
return repo; | |||
return archivaConfiguration.getConfiguration().findRemoteRepositoryById( repoId ); | |||
} | |||
private ArchivaRepository getManagedRepository( String repoId ) | |||
private ManagedRepositoryConfiguration getManagedRepository( String repoId ) | |||
{ | |||
ManagedRepositoryConfiguration repoConfig = archivaConfiguration.getConfiguration() | |||
.findManagedRepositoryById( repoId ); | |||
return ArchivaConfigurationAdaptor.toArchivaRepository( repoConfig ); | |||
return archivaConfiguration.getConfiguration().findManagedRepositoryById( repoId ); | |||
} | |||
public void initialize() |
@@ -19,7 +19,8 @@ package org.apache.maven.archiva.proxy; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.maven.archiva.repository.connector.RepositoryConnector; | |||
import java.util.Iterator; | |||
@@ -35,9 +36,9 @@ import java.util.Map; | |||
public class ProxyConnector | |||
implements RepositoryConnector | |||
{ | |||
private ArchivaRepository sourceRepository; | |||
private ManagedRepositoryConfiguration sourceRepository; | |||
private ArchivaRepository targetRepository; | |||
private RemoteRepositoryConfiguration targetRepository; | |||
private List<String> blacklist; | |||
@@ -59,22 +60,22 @@ public class ProxyConnector | |||
this.blacklist = blacklist; | |||
} | |||
public ArchivaRepository getSourceRepository() | |||
public ManagedRepositoryConfiguration getSourceRepository() | |||
{ | |||
return sourceRepository; | |||
} | |||
public void setSourceRepository( ArchivaRepository sourceRepository ) | |||
public void setSourceRepository( ManagedRepositoryConfiguration sourceRepository ) | |||
{ | |||
this.sourceRepository = sourceRepository; | |||
} | |||
public ArchivaRepository getTargetRepository() | |||
public RemoteRepositoryConfiguration getTargetRepository() | |||
{ | |||
return targetRepository; | |||
} | |||
public void setTargetRepository( ArchivaRepository targetRepository ) | |||
public void setTargetRepository( RemoteRepositoryConfiguration targetRepository ) | |||
{ | |||
this.targetRepository = targetRepository; | |||
} |
@@ -19,7 +19,7 @@ package org.apache.maven.archiva.proxy; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
@@ -47,7 +47,7 @@ public interface RepositoryProxyConnectors | |||
* @return true if the fetch operation succeeded in obtaining content, false if no content was obtained. | |||
* @throws ProxyException if there was a problem fetching the content from the target repositories. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, ArtifactReference artifact ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, ArtifactReference artifact ) | |||
throws ProxyException; | |||
/** | |||
@@ -62,7 +62,7 @@ public interface RepositoryProxyConnectors | |||
* @return true if the fetch operation succeeded in obtaining content, false if no content was obtained. | |||
* @throws ProxyException if there was a problem fetching the content from the target repositories. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, VersionedReference metadata ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, VersionedReference metadata ) | |||
throws ProxyException; | |||
/** | |||
@@ -77,7 +77,7 @@ public interface RepositoryProxyConnectors | |||
* @return true if the fetch operation succeeded in obtaining content, false if no content was obtained. | |||
* @throws ProxyException if there was a problem fetching the content from the target repositories. | |||
*/ | |||
public File fetchFromProxies( ArchivaRepository repository, ProjectReference metadata ) | |||
public File fetchFromProxies( ManagedRepositoryConfiguration repository, ProjectReference metadata ) | |||
throws ProxyException; | |||
/** | |||
@@ -86,7 +86,7 @@ public interface RepositoryProxyConnectors | |||
* @param repository the source repository to look for. | |||
* @return the List of {@link ProxyConnector} objects. | |||
*/ | |||
public List<ProxyConnector> getProxyConnectors( ArchivaRepository repository ); | |||
public List<ProxyConnector> getProxyConnectors( ManagedRepositoryConfiguration repository ); | |||
/** | |||
* Tests to see if the provided repository is a source repository for | |||
@@ -96,5 +96,5 @@ public interface RepositoryProxyConnectors | |||
* @return true if there are proxy connectors that use the provided | |||
* repository as a source repository. | |||
*/ | |||
public boolean hasProxies( ArchivaRepository repository ); | |||
public boolean hasProxies( ManagedRepositoryConfiguration repository ); | |||
} |
@@ -20,14 +20,16 @@ package org.apache.maven.archiva.proxy; | |||
*/ | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.policies.CachedFailuresPolicy; | |||
import org.apache.maven.archiva.policies.ChecksumPolicy; | |||
import org.apache.maven.archiva.policies.ReleasesPolicy; | |||
import org.apache.maven.archiva.policies.SnapshotsPolicy; | |||
import org.apache.maven.archiva.policies.urlcache.UrlFailureCache; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
@@ -93,11 +95,11 @@ public abstract class AbstractProxyTestCase | |||
protected RepositoryProxyConnectors proxyHandler; | |||
protected ArchivaRepository managedDefaultRepository; | |||
protected ManagedRepositoryConfiguration managedDefaultRepository; | |||
protected File managedDefaultDir; | |||
protected ArchivaRepository managedLegacyRepository; | |||
protected ManagedRepositoryConfiguration managedLegacyRepository; | |||
protected File managedLegacyDir; | |||
@@ -246,40 +248,25 @@ public abstract class AbstractProxyTestCase | |||
return ref; | |||
} | |||
protected ArchivaRepository createManagedLegacyRepository() | |||
protected ManagedRepositoryConfiguration createManagedLegacyRepository() | |||
{ | |||
return createRepository( "src/test/repositories/legacy-managed", "testManagedLegacyRepo", | |||
"Test Managed (Legacy) Repository", "legacy" ); | |||
return createRepository( "testManagedLegacyRepo", "Test Managed (Legacy) Repository", | |||
"src/test/repositories/legacy-managed", "legacy" ); | |||
} | |||
protected ArchivaRepository createProxiedLegacyRepository() | |||
protected ManagedRepositoryConfiguration createProxiedLegacyRepository() | |||
{ | |||
return createRepository( "src/test/repositories/legacy-proxied", "testProxiedLegacyRepo", | |||
"Test Proxied (Legacy) Repository", "legacy" ); | |||
return createRepository( "testProxiedLegacyRepo", "Test Proxied (Legacy) Repository", | |||
"src/test/repositories/legacy-proxied", "legacy" ); | |||
} | |||
protected ManagedRepositoryConfiguration createRepoConfig( ArchivaRepository repo ) | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, String path, String layout ) | |||
{ | |||
return createRepoConfig( repo.getId(), repo.getName(), repo.getUrl().toString(), repo.getLayoutType() ); | |||
} | |||
protected ManagedRepositoryConfiguration createRepoConfig( String id, String name, String path, String layout ) | |||
{ | |||
ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration(); | |||
repoConfig.setId( id ); | |||
repoConfig.setName( name ); | |||
repoConfig.setLocation( path ); | |||
repoConfig.setLayout( layout ); | |||
return repoConfig; | |||
} | |||
protected ArchivaRepository createRepository( String id, String name, String path, String layout ) | |||
{ | |||
ArchivaRepository repo = new ArchivaRepository( id, name, PathUtil.toUrl( path ) ); | |||
repo.getModel().setLayoutName( layout ); | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( path ); | |||
repo.setLayout( layout ); | |||
return repo; | |||
} | |||
@@ -320,6 +307,12 @@ public abstract class AbstractProxyTestCase | |||
} | |||
} | |||
} | |||
protected void saveConnector( String sourceRepoId, String targetRepoId ) | |||
{ | |||
saveConnector( sourceRepoId, targetRepoId, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED, | |||
SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); | |||
} | |||
protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy, | |||
String snapshotPolicy, String cacheFailuresPolicy ) | |||
@@ -356,24 +349,33 @@ public abstract class AbstractProxyTestCase | |||
repoConfig.setLocation( path ); | |||
int count = config.getConfiguration().getManagedRepositories().size(); | |||
config.getConfiguration().addManagedRepository( repoConfig ); | |||
config.triggerChange( "repository", "" ); | |||
String prefix = "managedRepositories.managedRepository(" + count + ")"; | |||
config.triggerChange( prefix + ".id", repoConfig.getId() ); | |||
config.triggerChange( prefix + ".name", repoConfig.getName() ); | |||
config.triggerChange( prefix + ".location", repoConfig.getLocation() ); | |||
config.triggerChange( prefix + ".layout", repoConfig.getLayout() ); | |||
} | |||
protected void saveRemoteRepositoryConfig( String id, String name, String path, String layout ) | |||
protected void saveRemoteRepositoryConfig( String id, String name, String url, String layout ) | |||
{ | |||
RemoteRepositoryConfiguration repoConfig = new RemoteRepositoryConfiguration(); | |||
repoConfig.setId( id ); | |||
repoConfig.setName( name ); | |||
repoConfig.setLayout( layout ); | |||
repoConfig.setUrl( url ); | |||
repoConfig.setUrl( path ); | |||
int count = config.getConfiguration().getRemoteRepositories().size(); | |||
config.getConfiguration().addRemoteRepository( repoConfig ); | |||
config.triggerChange( "repository", "" ); | |||
String prefix = "remoteRepositories.remoteRepository(" + count + ")"; | |||
config.triggerChange( prefix + ".id", repoConfig.getId() ); | |||
config.triggerChange( prefix + ".name", repoConfig.getName() ); | |||
config.triggerChange( prefix + ".url", repoConfig.getUrl() ); | |||
config.triggerChange( prefix + ".layout", repoConfig.getLayout() ); | |||
} | |||
protected File saveTargetedRepositoryConfig( String id, String originalPath, String targetPath, String layout ) | |||
@@ -388,6 +390,7 @@ public abstract class AbstractProxyTestCase | |||
return repoLocation; | |||
} | |||
@Override | |||
protected void setUp() | |||
throws Exception | |||
{ | |||
@@ -405,9 +408,9 @@ public abstract class AbstractProxyTestCase | |||
managedDefaultRepository = | |||
createRepository( ID_DEFAULT_MANAGED, "Default Managed Repository", repoPath, "default" ); | |||
managedDefaultDir = new File( managedDefaultRepository.getUrl().getPath() ); | |||
managedDefaultDir = new File( managedDefaultRepository.getLocation() ); | |||
ManagedRepositoryConfiguration repoConfig = createRepoConfig( managedDefaultRepository ); | |||
ManagedRepositoryConfiguration repoConfig = managedDefaultRepository; | |||
config.getConfiguration().addManagedRepository( repoConfig ); | |||
@@ -419,9 +422,9 @@ public abstract class AbstractProxyTestCase | |||
managedLegacyRepository = createRepository( ID_LEGACY_MANAGED, "Legacy Managed Repository", | |||
REPOPATH_LEGACY_MANAGED_TARGET, "legacy" ); | |||
managedLegacyDir = new File( managedLegacyRepository.getUrl().getPath() ); | |||
managedLegacyDir = new File( managedLegacyRepository.getLocation() ); | |||
repoConfig = createRepoConfig( managedLegacyRepository ); | |||
repoConfig = managedLegacyRepository; | |||
config.getConfiguration().addManagedRepository( repoConfig ); | |||
@@ -484,7 +487,7 @@ public abstract class AbstractProxyTestCase | |||
{ | |||
// This is just a warning. | |||
System.err.println( | |||
"Skipping setup of testable managed repsoitory, source dir does not exist: " + sourceDir ); | |||
"[WARN] Skipping setup of testable managed repository, source dir does not exist: " + sourceDir ); | |||
return; | |||
} | |||
@@ -1,48 +0,0 @@ | |||
package org.apache.maven.archiva.proxy; | |||
/* | |||
* 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 junit.framework.Test; | |||
import junit.framework.TestSuite; | |||
/** | |||
* IDE Provided Utility Class for all tests. | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public class AllTests | |||
{ | |||
public static Test suite() | |||
{ | |||
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.proxy" ); | |||
//$JUnit-BEGIN$ | |||
suite.addTestSuite( ChecksumTransferTest.class ); | |||
suite.addTestSuite( MetadataTransferTest.class ); | |||
suite.addTestSuite( CacheFailuresTransferTest.class ); | |||
suite.addTestSuite( ManagedDefaultTransferTest.class ); | |||
suite.addTestSuite( SnapshotTransferTest.class ); | |||
suite.addTestSuite( ManagedLegacyTransferTest.class ); | |||
suite.addTestSuite( RelocateTransferTest.class ); | |||
//$JUnit-END$ | |||
return suite; | |||
} | |||
} |
@@ -44,7 +44,7 @@ public class CacheFailuresTransferTest | |||
throws Exception | |||
{ | |||
String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; | |||
File expectedFile = new File( managedDefaultDir, path ); | |||
File expectedFile = new File( managedDefaultDir.getAbsoluteFile(), path ); | |||
ArtifactReference artifact = createArtifactReference( "default", path ); | |||
expectedFile.delete(); | |||
@@ -78,7 +78,7 @@ public class CacheFailuresTransferTest | |||
throws Exception | |||
{ | |||
String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; | |||
File expectedFile = new File( managedDefaultDir, path ); | |||
File expectedFile = new File( managedDefaultDir.getAbsoluteFile(), path ); | |||
ArtifactReference artifact = createArtifactReference( "default", path ); | |||
expectedFile.delete(); |
@@ -286,10 +286,8 @@ public class ManagedDefaultTransferTest | |||
wagonMockControl.replay(); | |||
// Configure Connector (usually done within archiva.xml configuration) | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED, | |||
SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); | |||
saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED, | |||
SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied" ); | |||
saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 ); | |||
// Attempt the proxy fetch. | |||
File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); | |||
@@ -307,7 +305,7 @@ public class ManagedDefaultTransferTest | |||
String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; | |||
setupTestableManagedRepository( path ); | |||
File expectedFile = new File( managedDefaultDir, path ); | |||
File expectedFile = new File( managedDefaultDir.getAbsoluteFile(), path ); | |||
ArtifactReference artifact = createArtifactReference( "default", path ); | |||
expectedFile.delete(); | |||
@@ -318,15 +316,14 @@ public class ManagedDefaultTransferTest | |||
saveRemoteRepositoryConfig( "badproxied2", "Bad Proxied 2", "test://dead.machine.com/repo/", "default" ); | |||
// Configure Connector (usually done within archiva.xml configuration) | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED, | |||
SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied2", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED, | |||
SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied1" ); | |||
saveConnector( ID_DEFAULT_MANAGED, "badproxied2" ); | |||
wagonMock.getIfNewer( path, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ), 0 ); | |||
File tmpFile = new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ); | |||
wagonMock.getIfNewer( path, tmpFile, 0 ); | |||
wagonMockControl.setThrowable( new TransferFailedException( "transfer failed" ) ); | |||
wagonMock.getIfNewer( path, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ), 0 ); | |||
wagonMock.getIfNewer( path, tmpFile, 0 ); | |||
wagonMockControl.setThrowable( new TransferFailedException( "transfer failed" ) ); | |||
wagonMockControl.replay(); |
@@ -61,7 +61,7 @@ public class WagonDelegate | |||
public boolean getIfNewer( String resourceName, File destination, long timestamp ) | |||
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException | |||
{ | |||
getLogger().debug( ".getIfNewer(" + resourceName + ", " + destination + ", " + timestamp + ")" ); | |||
getLogger().info( ".getIfNewer(" + resourceName + ", " + destination + ", " + timestamp + ")" ); | |||
boolean result = delegate.getIfNewer( resourceName, destination, timestamp ); | |||
createIfMissing( destination ); |
@@ -1,67 +0,0 @@ | |||
package org.apache.maven.archiva.repository; | |||
/* | |||
* 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.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* ArchivaConfigurationAdaptor | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
* @todo the whole need for 2 objects is a consequence of using jpox. hopefully JPA will address some of this mess. | |||
*/ | |||
public class ArchivaConfigurationAdaptor | |||
{ | |||
private ArchivaConfigurationAdaptor() | |||
{ | |||
} | |||
public static ArchivaRepository toArchivaRepository( ManagedRepositoryConfiguration config ) | |||
{ | |||
if ( config == null ) | |||
{ | |||
throw new IllegalArgumentException( "Unable to convert null repository config to archiva repository." ); | |||
} | |||
if ( StringUtils.isBlank( config.getId() ) ) | |||
{ | |||
throw new IllegalArgumentException( "Unable to repository config with blank ID to archiva repository." ); | |||
} | |||
if ( StringUtils.isBlank( config.getLocation() ) ) | |||
{ | |||
throw new IllegalArgumentException( | |||
"Unable to convert repository config with blank location to archiva repository." ); | |||
} | |||
ArchivaRepository repository = | |||
new ArchivaRepository( config.getId(), config.getName(), PathUtil.toUrl( config.getLocation() ) ); | |||
repository.getModel().setLayoutName( config.getLayout() ); | |||
repository.getModel().setReleasePolicy( config.isReleases() ); | |||
repository.getModel().setSnapshotPolicy( config.isSnapshots() ); | |||
return repository; | |||
} | |||
} |
@@ -19,7 +19,8 @@ package org.apache.maven.archiva.repository.connector; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import java.util.List; | |||
@@ -31,11 +32,11 @@ import java.util.List; | |||
*/ | |||
public interface RepositoryConnector | |||
{ | |||
public ArchivaRepository getSourceRepository(); | |||
public ManagedRepositoryConfiguration getSourceRepository(); | |||
public ArchivaRepository getTargetRepository(); | |||
public RemoteRepositoryConfiguration getTargetRepository(); | |||
public List getBlacklist(); | |||
public List<String> getBlacklist(); | |||
public List getWhitelist(); | |||
public List<String> getWhitelist(); | |||
} |
@@ -24,8 +24,9 @@ import org.apache.maven.archiva.common.utils.VersionUtil; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ConfigurationNames; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepositoryMetadata; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
@@ -116,7 +117,7 @@ public class MetadataTools | |||
* @return the Set of available versions, based on the project reference. | |||
* @throws LayoutException | |||
*/ | |||
public Set<String> gatherAvailableVersions( ArchivaRepository managedRepository, ProjectReference reference ) | |||
public Set<String> gatherAvailableVersions( ManagedRepositoryConfiguration managedRepository, ProjectReference reference ) | |||
throws LayoutException, IOException | |||
{ | |||
String path = toPath( reference ); | |||
@@ -127,7 +128,7 @@ public class MetadataTools | |||
path = path.substring( 0, idx ); | |||
} | |||
File repoDir = new File( managedRepository.getUrl().getPath(), path ); | |||
File repoDir = new File( managedRepository.getLocation(), path ); | |||
if ( !repoDir.exists() ) | |||
{ | |||
@@ -169,7 +170,7 @@ public class MetadataTools | |||
return foundVersions; | |||
} | |||
private boolean hasArtifact( ArchivaRepository managedRepository, VersionedReference reference ) | |||
private boolean hasArtifact( ManagedRepositoryConfiguration managedRepository, VersionedReference reference ) | |||
throws LayoutException | |||
{ | |||
try | |||
@@ -192,10 +193,10 @@ public class MetadataTools | |||
* @throws IOException if the versioned reference is invalid (example: doesn't exist, or isn't a directory) | |||
* @throws LayoutException | |||
*/ | |||
public ArtifactReference getFirstArtifact( ArchivaRepository managedRepository, VersionedReference reference ) | |||
public ArtifactReference getFirstArtifact( ManagedRepositoryConfiguration managedRepository, VersionedReference reference ) | |||
throws LayoutException, IOException | |||
{ | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayoutType() ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayout() ); | |||
String path = toPath( reference ); | |||
int idx = path.lastIndexOf( '/' ); | |||
@@ -204,7 +205,7 @@ public class MetadataTools | |||
path = path.substring( 0, idx ); | |||
} | |||
File repoDir = new File( managedRepository.getUrl().getPath(), path ); | |||
File repoDir = new File( managedRepository.getLocation(), path ); | |||
if ( !repoDir.exists() ) | |||
{ | |||
@@ -227,7 +228,7 @@ public class MetadataTools | |||
continue; | |||
} | |||
String relativePath = PathUtil.getRelative( managedRepository.getUrl().getPath(), repoFiles[i] ); | |||
String relativePath = PathUtil.getRelative( managedRepository.getLocation(), repoFiles[i] ); | |||
if ( matchesArtifactPattern( relativePath ) ) | |||
{ | |||
@@ -247,10 +248,10 @@ public class MetadataTools | |||
* @return the Set of snapshot artifact versions found. | |||
* @throws LayoutException | |||
*/ | |||
public Set<String> gatherSnapshotVersions( ArchivaRepository managedRepository, VersionedReference reference ) | |||
public Set<String> gatherSnapshotVersions( ManagedRepositoryConfiguration managedRepository, VersionedReference reference ) | |||
throws LayoutException, IOException | |||
{ | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayoutType() ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayout() ); | |||
String path = toPath( reference ); | |||
int idx = path.lastIndexOf( '/' ); | |||
@@ -259,7 +260,7 @@ public class MetadataTools | |||
path = path.substring( 0, idx ); | |||
} | |||
File repoDir = new File( managedRepository.getUrl().getPath(), path ); | |||
File repoDir = new File( managedRepository.getLocation(), path ); | |||
if ( !repoDir.exists() ) | |||
{ | |||
@@ -285,7 +286,7 @@ public class MetadataTools | |||
continue; | |||
} | |||
String relativePath = PathUtil.getRelative( managedRepository.getUrl().getPath(), repoFiles[i] ); | |||
String relativePath = PathUtil.getRelative( managedRepository.getLocation(), repoFiles[i] ); | |||
if ( matchesArtifactPattern( relativePath ) ) | |||
{ | |||
@@ -490,7 +491,7 @@ public class MetadataTools | |||
* @param path the path to the metadata.xml file to adjust the name of. | |||
* @return the newly adjusted path reference to the repository specific metadata path. | |||
*/ | |||
public String getRepositorySpecificName( ArchivaRepository repository, String path ) | |||
public String getRepositorySpecificName( RemoteRepositoryConfiguration repository, String path ) | |||
{ | |||
return getRepositorySpecificName( repository.getId(), path ); | |||
} | |||
@@ -528,11 +529,11 @@ public class MetadataTools | |||
configuration.addChangeListener( this ); | |||
} | |||
public ArchivaRepositoryMetadata readProxyMetadata( ArchivaRepository managedRepository, ProjectReference reference, | |||
public ArchivaRepositoryMetadata readProxyMetadata( ManagedRepositoryConfiguration managedRepository, ProjectReference reference, | |||
String proxyId ) | |||
{ | |||
String metadataPath = getRepositorySpecificName( proxyId, toPath( reference ) ); | |||
File metadataFile = new File( managedRepository.getUrl().getPath(), metadataPath ); | |||
File metadataFile = new File( managedRepository.getLocation(), metadataPath ); | |||
try | |||
{ | |||
@@ -547,11 +548,11 @@ public class MetadataTools | |||
} | |||
} | |||
public ArchivaRepositoryMetadata readProxyMetadata( ArchivaRepository managedRepository, | |||
public ArchivaRepositoryMetadata readProxyMetadata( ManagedRepositoryConfiguration managedRepository, | |||
VersionedReference reference, String proxyId ) | |||
{ | |||
String metadataPath = getRepositorySpecificName( proxyId, toPath( reference ) ); | |||
File metadataFile = new File( managedRepository.getUrl().getPath(), metadataPath ); | |||
File metadataFile = new File( managedRepository.getLocation(), metadataPath ); | |||
try | |||
{ | |||
@@ -579,12 +580,12 @@ public class MetadataTools | |||
* @throws RepositoryMetadataException | |||
* @throws IOException | |||
*/ | |||
public void updateMetadata( ArchivaRepository managedRepository, ProjectReference reference ) | |||
public void updateMetadata( ManagedRepositoryConfiguration managedRepository, ProjectReference reference ) | |||
throws LayoutException, RepositoryMetadataException, IOException | |||
{ | |||
Comparator<String> comparator = VersionComparator.getInstance(); | |||
File metadataFile = new File( managedRepository.getUrl().getPath(), toPath( reference ) ); | |||
File metadataFile = new File( managedRepository.getLocation(), toPath( reference ) ); | |||
ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); | |||
metadata.setGroupId( reference.getGroupId() ); | |||
@@ -660,11 +661,11 @@ public class MetadataTools | |||
* @throws RepositoryMetadataException | |||
* @throws IOException | |||
*/ | |||
public void updateMetadata( ArchivaRepository managedRepository, VersionedReference reference ) | |||
public void updateMetadata( ManagedRepositoryConfiguration managedRepository, VersionedReference reference ) | |||
throws LayoutException, RepositoryMetadataException, IOException | |||
{ | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayoutType() ); | |||
File metadataFile = new File( managedRepository.getUrl().getPath(), toPath( reference ) ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayout() ); | |||
File metadataFile = new File( managedRepository.getLocation(), toPath( reference ) ); | |||
ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); | |||
metadata.setGroupId( reference.getGroupId() ); | |||
@@ -730,7 +731,7 @@ public class MetadataTools | |||
throw new IOException( "Not snapshot artifact found to reference in " + reference ); | |||
} | |||
File artifactFile = new File( managedRepository.getUrl().getPath(), layout.toPath( artifact ) ); | |||
File artifactFile = new File( managedRepository.getLocation(), layout.toPath( artifact ) ); | |||
if ( artifactFile.exists() ) | |||
{ |
@@ -23,15 +23,13 @@ import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ConfigurationNames; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
import org.apache.maven.archiva.repository.project.resolvers.NopProjectResolver; | |||
import org.apache.maven.archiva.repository.project.resolvers.ProjectModelResolverStack; | |||
import org.apache.maven.archiva.repository.project.resolvers.RepositoryProjectResolver; | |||
import org.apache.maven.archiva.repository.project.resolvers.ManagedRepositoryProjectResolver; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; | |||
@@ -98,20 +96,20 @@ public class ProjectModelResolverFactory | |||
archivaConfiguration.addChangeListener( this ); | |||
} | |||
private RepositoryProjectResolver toResolver( ArchivaRepository repo ) | |||
private ManagedRepositoryProjectResolver toResolver( ManagedRepositoryConfiguration repo ) | |||
throws RepositoryException | |||
{ | |||
try | |||
{ | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( repo.getLayoutType() ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( repo.getLayout() ); | |||
ProjectModelReader reader = project400Reader; | |||
if ( StringUtils.equals( "legacy", repo.getLayoutType() ) ) | |||
if ( StringUtils.equals( "legacy", repo.getLayout() ) ) | |||
{ | |||
reader = project300Reader; | |||
} | |||
RepositoryProjectResolver resolver = new RepositoryProjectResolver( repo, reader, layout ); | |||
ManagedRepositoryProjectResolver resolver = new ManagedRepositoryProjectResolver( repo, reader, layout ); | |||
return resolver; | |||
} | |||
catch ( LayoutException e ) | |||
@@ -129,12 +127,11 @@ public class ProjectModelResolverFactory | |||
List<ManagedRepositoryConfiguration> list = | |||
archivaConfiguration.getConfiguration().getManagedRepositories(); | |||
for ( ManagedRepositoryConfiguration repositoryConfiguration : list ) | |||
for ( ManagedRepositoryConfiguration repo : list ) | |||
{ | |||
ArchivaRepository repo = ArchivaConfigurationAdaptor.toArchivaRepository( repositoryConfiguration ); | |||
try | |||
{ | |||
RepositoryProjectResolver resolver = toResolver( repo ); | |||
ManagedRepositoryProjectResolver resolver = toResolver( repo ); | |||
// Add filesystem based resolver. | |||
this.currentResolverStack.addProjectModelResolver( resolver ); |
@@ -19,9 +19,9 @@ package org.apache.maven.archiva.repository.project.resolvers; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaProjectModel; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.project.ProjectModelException; | |||
@@ -31,21 +31,21 @@ import org.apache.maven.archiva.repository.project.ProjectModelResolver; | |||
import java.io.File; | |||
/** | |||
* Resolve Project from filesystem. | |||
* Resolve Project from managed repository. | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public class RepositoryProjectResolver | |||
public class ManagedRepositoryProjectResolver | |||
implements ProjectModelResolver, FilesystemBasedResolver | |||
{ | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private ProjectModelReader reader; | |||
private BidirectionalRepositoryLayout layout; | |||
public RepositoryProjectResolver( ArchivaRepository repository, ProjectModelReader reader, | |||
public ManagedRepositoryProjectResolver( ManagedRepositoryConfiguration repository, ProjectModelReader reader, | |||
BidirectionalRepositoryLayout layout ) | |||
{ | |||
this.repository = repository; | |||
@@ -60,7 +60,7 @@ public class RepositoryProjectResolver | |||
.getVersion(), "", "pom" ); | |||
String path = layout.toPath( artifact ); | |||
File repoFile = new File( this.repository.getUrl().getPath(), path ); | |||
File repoFile = new File( this.repository.getLocation(), path ); | |||
return reader.read( repoFile ); | |||
} |
@@ -19,12 +19,12 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.commons.collections.Closure; | |||
import org.apache.commons.collections.CollectionUtils; | |||
import org.apache.maven.archiva.configuration.FileTypes; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
import org.codehaus.plexus.util.DirectoryWalker; | |||
@@ -54,19 +54,20 @@ public class DefaultRepositoryScanner | |||
*/ | |||
private RepositoryContentConsumers consumerUtil; | |||
public RepositoryContentStatistics scan( ArchivaRepository repository, long changesSince ) | |||
public RepositoryScanStatistics scan( ManagedRepositoryConfiguration repository, long changesSince ) | |||
throws RepositoryException | |||
{ | |||
List knownContentConsumers = consumerUtil.getSelectedKnownConsumers(); | |||
List invalidContentConsumers = consumerUtil.getSelectedInvalidConsumers(); | |||
List ignoredPatterns = filetypes.getFileTypePatterns( FileTypes.IGNORED ); | |||
List<KnownRepositoryContentConsumer> knownContentConsumers = consumerUtil.getSelectedKnownConsumers(); | |||
List<InvalidRepositoryContentConsumer> invalidContentConsumers = consumerUtil.getSelectedInvalidConsumers(); | |||
List<String> ignoredPatterns = filetypes.getFileTypePatterns( FileTypes.IGNORED ); | |||
return scan( repository, knownContentConsumers, invalidContentConsumers, ignoredPatterns, changesSince ); | |||
} | |||
public RepositoryContentStatistics scan( ArchivaRepository repository, List knownContentConsumers, | |||
List invalidContentConsumers, List ignoredContentPatterns, | |||
long changesSince ) | |||
public RepositoryScanStatistics scan( ManagedRepositoryConfiguration repository, | |||
List<KnownRepositoryContentConsumer> knownContentConsumers, | |||
List<InvalidRepositoryContentConsumer> invalidContentConsumers, | |||
List<String> ignoredContentPatterns, long changesSince ) | |||
throws RepositoryException | |||
{ | |||
if ( repository == null ) | |||
@@ -74,29 +75,24 @@ public class DefaultRepositoryScanner | |||
throw new IllegalArgumentException( "Unable to operate on a null repository." ); | |||
} | |||
if ( !"file".equals( repository.getUrl().getProtocol() ) ) | |||
{ | |||
throw new UnsupportedOperationException( "Only filesystem repositories are supported." ); | |||
} | |||
File repositoryBase = new File( repository.getUrl().getPath() ); | |||
File repositoryBase = new File( repository.getLocation() ); | |||
if ( !repositoryBase.exists() ) | |||
{ | |||
throw new UnsupportedOperationException( | |||
"Unable to scan a repository, directory " + repositoryBase.getAbsolutePath() + " does not exist." ); | |||
throw new UnsupportedOperationException( "Unable to scan a repository, directory " | |||
+ repositoryBase.getAbsolutePath() + " does not exist." ); | |||
} | |||
if ( !repositoryBase.isDirectory() ) | |||
{ | |||
throw new UnsupportedOperationException( | |||
"Unable to scan a repository, path " + repositoryBase.getAbsolutePath() + " is not a directory." ); | |||
throw new UnsupportedOperationException( "Unable to scan a repository, path " | |||
+ repositoryBase.getAbsolutePath() + " is not a directory." ); | |||
} | |||
// Setup Includes / Excludes. | |||
List allExcludes = new ArrayList(); | |||
List allIncludes = new ArrayList(); | |||
List<String> allExcludes = new ArrayList<String>(); | |||
List<String> allIncludes = new ArrayList<String>(); | |||
if ( CollectionUtils.isNotEmpty( ignoredContentPatterns ) ) | |||
{ | |||
@@ -115,8 +111,8 @@ public class DefaultRepositoryScanner | |||
dirWalker.setExcludes( allExcludes ); | |||
// Setup the Scan Instance | |||
RepositoryScannerInstance scannerInstance = | |||
new RepositoryScannerInstance( repository, knownContentConsumers, invalidContentConsumers, getLogger() ); | |||
RepositoryScannerInstance scannerInstance = new RepositoryScannerInstance( repository, knownContentConsumers, | |||
invalidContentConsumers, getLogger() ); | |||
scannerInstance.setOnlyModifiedAfterTimestamp( changesSince ); | |||
dirWalker.addDirectoryWalkListener( scannerInstance ); | |||
@@ -124,38 +120,21 @@ public class DefaultRepositoryScanner | |||
// Execute scan. | |||
dirWalker.scan(); | |||
RepositoryContentStatistics stats = scannerInstance.getStatistics(); | |||
ConsumerIdClosure consumerIdList; | |||
consumerIdList = new ConsumerIdClosure(); | |||
CollectionUtils.forAllDo( knownContentConsumers, consumerIdList ); | |||
stats.setKnownConsumers( consumerIdList.getList() ); | |||
RepositoryScanStatistics stats = scannerInstance.getStatistics(); | |||
consumerIdList = new ConsumerIdClosure(); | |||
CollectionUtils.forAllDo( invalidContentConsumers, consumerIdList ); | |||
stats.setInvalidConsumers( consumerIdList.getList() ); | |||
stats.setKnownConsumers( gatherIds( knownContentConsumers ) ); | |||
stats.setInvalidConsumers( gatherIds( invalidContentConsumers ) ); | |||
return stats; | |||
} | |||
class ConsumerIdClosure | |||
implements Closure | |||
private List<String> gatherIds( List<? extends RepositoryContentConsumer> consumers ) | |||
{ | |||
private List list = new ArrayList(); | |||
public void execute( Object input ) | |||
{ | |||
if ( input instanceof RepositoryContentConsumer ) | |||
{ | |||
RepositoryContentConsumer consumer = (RepositoryContentConsumer) input; | |||
list.add( consumer.getId() ); | |||
} | |||
} | |||
public List getList() | |||
List<String> ids = new ArrayList<String>(); | |||
for ( RepositoryContentConsumer consumer : consumers ) | |||
{ | |||
return list; | |||
ids.add( consumer.getId() ); | |||
} | |||
return ids; | |||
} | |||
} |
@@ -21,23 +21,17 @@ package org.apache.maven.archiva.repository.scanner; | |||
import org.apache.commons.collections.Closure; | |||
import org.apache.commons.collections.CollectionUtils; | |||
import org.apache.commons.collections.Predicate; | |||
import org.apache.commons.collections.functors.IfClosure; | |||
import org.apache.commons.collections.functors.OrPredicate; | |||
import org.apache.maven.archiva.common.utils.BaseFile; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.functors.PermanentConsumerPredicate; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.scanner.functors.ConsumerProcessFileClosure; | |||
import org.apache.maven.archiva.repository.scanner.functors.ConsumerWantsFilePredicate; | |||
import org.apache.maven.archiva.repository.scanner.functors.TriggerBeginScanClosure; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; | |||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; | |||
import java.io.File; | |||
import java.util.ArrayList; | |||
@@ -55,7 +49,6 @@ import java.util.Map; | |||
*/ | |||
public class RepositoryContentConsumers | |||
extends AbstractLogEnabled | |||
implements Initializable | |||
{ | |||
/** | |||
* @plexus.requirement | |||
@@ -72,122 +65,82 @@ public class RepositoryContentConsumers | |||
*/ | |||
private List<InvalidRepositoryContentConsumer> availableInvalidConsumers; | |||
private Predicate selectedKnownPredicate; | |||
private Predicate selectedInvalidPredicate; | |||
class SelectedKnownRepoConsumersPredicate | |||
implements Predicate | |||
public List<String> getSelectedKnownConsumerIds() | |||
{ | |||
public boolean evaluate( Object object ) | |||
{ | |||
boolean satisfies = false; | |||
if ( object instanceof KnownRepositoryContentConsumer ) | |||
{ | |||
KnownRepositoryContentConsumer known = (KnownRepositoryContentConsumer) object; | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration() | |||
.getRepositoryScanning(); | |||
return scanning.getKnownContentConsumers().contains( known.getId() ); | |||
} | |||
return satisfies; | |||
} | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration().getRepositoryScanning(); | |||
return scanning.getKnownContentConsumers(); | |||
} | |||
class SelectedInvalidRepoConsumersPredicate | |||
implements Predicate | |||
public List<String> getSelectedInvalidConsumerIds() | |||
{ | |||
public boolean evaluate( Object object ) | |||
{ | |||
boolean satisfies = false; | |||
if ( object instanceof InvalidRepositoryContentConsumer ) | |||
{ | |||
InvalidRepositoryContentConsumer invalid = (InvalidRepositoryContentConsumer) object; | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration() | |||
.getRepositoryScanning(); | |||
return scanning.getInvalidContentConsumers().contains( invalid.getId() ); | |||
} | |||
return satisfies; | |||
} | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration().getRepositoryScanning(); | |||
return scanning.getInvalidContentConsumers(); | |||
} | |||
class RepoConsumerToMapClosure | |||
implements Closure | |||
public Map<String, KnownRepositoryContentConsumer> getSelectedKnownConsumersMap() | |||
{ | |||
private Map map = new HashMap(); | |||
Map<String, KnownRepositoryContentConsumer> consumerMap = new HashMap<String, KnownRepositoryContentConsumer>(); | |||
List<String> knownSelected = getSelectedKnownConsumerIds(); | |||
public void execute( Object input ) | |||
for ( KnownRepositoryContentConsumer consumer : availableKnownConsumers ) | |||
{ | |||
if ( input instanceof RepositoryContentConsumer ) | |||
if ( knownSelected.contains( consumer.getId() ) || consumer.isPermanent() ) | |||
{ | |||
RepositoryContentConsumer consumer = (RepositoryContentConsumer) input; | |||
map.put( consumer.getId(), consumer ); | |||
consumerMap.put( consumer.getId(), consumer ); | |||
} | |||
} | |||
public Map getMap() | |||
{ | |||
return map; | |||
} | |||
return consumerMap; | |||
} | |||
public void initialize() | |||
throws InitializationException | |||
public Map<String, InvalidRepositoryContentConsumer> getSelectedInvalidConsumersMap() | |||
{ | |||
Predicate permanentConsumers = new PermanentConsumerPredicate(); | |||
Map<String, InvalidRepositoryContentConsumer> consumerMap = new HashMap<String, InvalidRepositoryContentConsumer>(); | |||
this.selectedKnownPredicate = new OrPredicate( permanentConsumers, new SelectedKnownRepoConsumersPredicate() ); | |||
this.selectedInvalidPredicate = new OrPredicate( permanentConsumers, | |||
new SelectedInvalidRepoConsumersPredicate() ); | |||
} | |||
List<String> invalidSelected = getSelectedInvalidConsumerIds(); | |||
public List getSelectedKnownConsumerIds() | |||
{ | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration().getRepositoryScanning(); | |||
return scanning.getKnownContentConsumers(); | |||
} | |||
for ( InvalidRepositoryContentConsumer consumer : availableInvalidConsumers ) | |||
{ | |||
if ( invalidSelected.contains( consumer.getId() ) || consumer.isPermanent() ) | |||
{ | |||
consumerMap.put( consumer.getId(), consumer ); | |||
} | |||
} | |||
public List getSelectedInvalidConsumerIds() | |||
{ | |||
RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration().getRepositoryScanning(); | |||
return scanning.getInvalidContentConsumers(); | |||
return consumerMap; | |||
} | |||
public Map getSelectedKnownConsumersMap() | |||
public List<KnownRepositoryContentConsumer> getSelectedKnownConsumers() | |||
{ | |||
RepoConsumerToMapClosure consumerMapClosure = new RepoConsumerToMapClosure(); | |||
Closure ifclosure = IfClosure.getInstance( selectedKnownPredicate, consumerMapClosure ); | |||
CollectionUtils.forAllDo( availableKnownConsumers, ifclosure ); | |||
List<KnownRepositoryContentConsumer> ret = new ArrayList<KnownRepositoryContentConsumer>(); | |||
return consumerMapClosure.getMap(); | |||
} | |||
List<String> knownSelected = getSelectedInvalidConsumerIds(); | |||
public Map getSelectedInvalidConsumersMap() | |||
{ | |||
RepoConsumerToMapClosure consumerMapClosure = new RepoConsumerToMapClosure(); | |||
Closure ifclosure = IfClosure.getInstance( selectedInvalidPredicate, consumerMapClosure ); | |||
CollectionUtils.forAllDo( availableInvalidConsumers, ifclosure ); | |||
for ( KnownRepositoryContentConsumer consumer : availableKnownConsumers ) | |||
{ | |||
if ( knownSelected.contains( consumer.getId() ) || consumer.isPermanent() ) | |||
{ | |||
ret.add( consumer ); | |||
} | |||
} | |||
return consumerMapClosure.getMap(); | |||
return ret; | |||
} | |||
public List getSelectedKnownConsumers() | |||
public List<InvalidRepositoryContentConsumer> getSelectedInvalidConsumers() | |||
{ | |||
List ret = new ArrayList(); | |||
ret.addAll( CollectionUtils.select( availableKnownConsumers, selectedKnownPredicate ) ); | |||
List<InvalidRepositoryContentConsumer> ret = new ArrayList<InvalidRepositoryContentConsumer>(); | |||
return ret; | |||
} | |||
List<String> invalidSelected = getSelectedInvalidConsumerIds(); | |||
public List getSelectedInvalidConsumers() | |||
{ | |||
List ret = new ArrayList(); | |||
ret.addAll( CollectionUtils.select( availableInvalidConsumers, selectedInvalidPredicate ) ); | |||
for ( InvalidRepositoryContentConsumer consumer : availableInvalidConsumers ) | |||
{ | |||
if ( invalidSelected.contains( consumer.getId() ) || consumer.isPermanent() ) | |||
{ | |||
ret.add( consumer ); | |||
} | |||
} | |||
return ret; | |||
} | |||
@@ -212,7 +165,7 @@ public class RepositoryContentConsumers | |||
this.availableInvalidConsumers = availableInvalidConsumers; | |||
} | |||
public void executeConsumers( ArchivaRepository repository, File localFile ) | |||
public void executeConsumers( ManagedRepositoryConfiguration repository, File localFile ) | |||
{ | |||
// Run the repository consumers | |||
try | |||
@@ -224,7 +177,7 @@ public class RepositoryContentConsumers | |||
// yuck. In case you can't read this, it says | |||
// "process the file if the consumer has it in the includes list, and not in the excludes list" | |||
BaseFile baseFile = new BaseFile( repository.getUrl().getPath(), localFile ); | |||
BaseFile baseFile = new BaseFile( repository.getLocation(), localFile ); | |||
ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate(); | |||
predicate.setBasefile( baseFile ); | |||
ConsumerProcessFileClosure closure = new ConsumerProcessFileClosure( getLogger() ); | |||
@@ -242,10 +195,10 @@ public class RepositoryContentConsumers | |||
} | |||
finally | |||
{ | |||
/* TODO: This is never called by the repository scanner instance, so not calling here either - but it probably should be? | |||
CollectionUtils.forAllDo( availableKnownConsumers, triggerCompleteScan ); | |||
CollectionUtils.forAllDo( availableInvalidConsumers, triggerCompleteScan ); | |||
*/ | |||
/* TODO: This is never called by the repository scanner instance, so not calling here either - but it probably should be? | |||
CollectionUtils.forAllDo( availableKnownConsumers, triggerCompleteScan ); | |||
CollectionUtils.forAllDo( availableInvalidConsumers, triggerCompleteScan ); | |||
*/ | |||
} | |||
} | |||
@@ -0,0 +1,144 @@ | |||
package org.apache.maven.archiva.repository.scanner; | |||
/* | |||
* 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.commons.collections.CollectionUtils; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import java.util.List; | |||
/** | |||
* RepositoryScanStatistics - extension to the RepositoryContentStatistics model. | |||
* | |||
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public class RepositoryScanStatistics | |||
extends RepositoryContentStatistics | |||
{ | |||
private transient List<String> knownConsumers; | |||
private transient List<String> invalidConsumers; | |||
private transient long startTimestamp; | |||
public void triggerStart() | |||
{ | |||
startTimestamp = System.currentTimeMillis(); | |||
} | |||
public void triggerFinished() | |||
{ | |||
long finished = System.currentTimeMillis(); | |||
setDuration( finished - startTimestamp ); | |||
setWhenGathered( new java.util.Date( finished ) ); | |||
} | |||
public void increaseFileCount() | |||
{ | |||
long count = getTotalFileCount(); | |||
setTotalFileCount( ++count ); | |||
} | |||
public void increaseNewFileCount() | |||
{ | |||
long count = getNewFileCount(); | |||
setNewFileCount( ++count ); | |||
} | |||
public void setKnownConsumers( List<String> consumers ) | |||
{ | |||
knownConsumers = consumers; | |||
} | |||
public void setInvalidConsumers( List<String> consumers ) | |||
{ | |||
invalidConsumers = consumers; | |||
} | |||
public String toDump( ManagedRepositoryConfiguration repo ) | |||
{ | |||
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(); | |||
StringBuffer buf = new StringBuffer(); | |||
buf.append( "\n.\\ Scan of " ).append( this.getRepositoryId() ); | |||
buf.append( " \\.__________________________________________" ); | |||
buf.append( "\n Repository Dir : " ).append( repo.getLocation() ); | |||
buf.append( "\n Repository Name : " ).append( repo.getName() ); | |||
buf.append( "\n Repository Layout : " ).append( repo.getLayout() ); | |||
buf.append( "\n Known Consumers : " ); | |||
if ( CollectionUtils.isNotEmpty( knownConsumers ) ) | |||
{ | |||
buf.append( "(" ).append( knownConsumers.size() ).append( " configured)" ); | |||
for ( String id : knownConsumers ) | |||
{ | |||
buf.append( "\n " ).append( id ); | |||
} | |||
} | |||
else | |||
{ | |||
buf.append( "<none>" ); | |||
} | |||
buf.append( "\n Invalid Consumers : " ); | |||
if ( CollectionUtils.isNotEmpty( invalidConsumers ) ) | |||
{ | |||
buf.append( "(" ).append( invalidConsumers.size() ).append( " configured)" ); | |||
for ( String id : invalidConsumers ) | |||
{ | |||
buf.append( "\n " ).append( id ); | |||
} | |||
} | |||
else | |||
{ | |||
buf.append( "<none>" ); | |||
} | |||
buf.append( "\n Duration : " ); | |||
buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( this.getDuration() ) ); | |||
buf.append( "\n When Gathered : " ); | |||
if ( this.getWhenGathered() == null ) | |||
{ | |||
buf.append( "<null>" ); | |||
} | |||
else | |||
{ | |||
buf.append( df.format( this.getWhenGathered() ) ); | |||
} | |||
buf.append( "\n Total File Count : " ).append( this.getTotalFileCount() ); | |||
long averageMsPerFile = 0; | |||
if ( getTotalFileCount() != 0 ) | |||
{ | |||
averageMsPerFile = ( this.getDuration() / this.getTotalFileCount() ); | |||
} | |||
buf.append( "\n Avg Time Per File : " ); | |||
buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( averageMsPerFile ) ); | |||
buf.append( "\n______________________________________________________________" ); | |||
return buf.toString(); | |||
} | |||
} |
@@ -19,10 +19,9 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import java.util.List; | |||
@@ -36,11 +35,11 @@ import java.util.List; | |||
public interface RepositoryScanner | |||
{ | |||
/** | |||
* The value to pass to {@link #scan(ArchivaRepository, long)} to have the scan | |||
* The value to pass to {@link #scan(ManagedRepositoryConfiguration, long)} to have the scan | |||
* operate in a fresh fashion, with no check on changes based on timestamp. | |||
*/ | |||
public static final long FRESH_SCAN = 0; | |||
/** | |||
* <p> | |||
* Typical Ignorable Content patterns. | |||
@@ -70,7 +69,7 @@ public interface RepositoryScanner | |||
"**/README*", | |||
"**/CHANGELOG*", | |||
"**/KEYS*" }; | |||
/** | |||
* Scan the repository for content changes. | |||
* | |||
@@ -83,9 +82,9 @@ public interface RepositoryScanner | |||
* @return the statistics for this scan. | |||
* @throws RepositoryException if there was a fundamental problem with getting the discoverer started. | |||
*/ | |||
public RepositoryContentStatistics scan( ArchivaRepository repository, long changesSince ) | |||
public RepositoryScanStatistics scan( ManagedRepositoryConfiguration repository, long changesSince ) | |||
throws RepositoryException; | |||
/** | |||
* Scan the repository for content changes. | |||
* | |||
@@ -103,9 +102,10 @@ public interface RepositoryScanner | |||
* @return the statistics for this scan. | |||
* @throws RepositoryException if there was a fundamental problem with getting the discoverer started. | |||
*/ | |||
public RepositoryContentStatistics scan( ArchivaRepository repository, List knownContentConsumers, | |||
List invalidContentConsumers, List ignoredContentPatterns, | |||
long changesSince ) | |||
public RepositoryScanStatistics scan( ManagedRepositoryConfiguration repository, | |||
List<KnownRepositoryContentConsumer> knownContentConsumers, | |||
List<InvalidRepositoryContentConsumer> invalidContentConsumers, | |||
List<String> ignoredContentPatterns, long changesSince ) | |||
throws RepositoryException; | |||
} |
@@ -24,8 +24,9 @@ import org.apache.commons.collections.CollectionUtils; | |||
import org.apache.commons.collections.functors.IfClosure; | |||
import org.apache.commons.lang.SystemUtils; | |||
import org.apache.maven.archiva.common.utils.BaseFile; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.repository.scanner.functors.ConsumerProcessFileClosure; | |||
import org.apache.maven.archiva.repository.scanner.functors.ConsumerWantsFilePredicate; | |||
import org.apache.maven.archiva.repository.scanner.functors.TriggerBeginScanClosure; | |||
@@ -47,16 +48,16 @@ public class RepositoryScannerInstance | |||
/** | |||
* Consumers that process known content. | |||
*/ | |||
private List knownConsumers; | |||
private List<KnownRepositoryContentConsumer> knownConsumers; | |||
/** | |||
* Consumers that process unknown/invalid content. | |||
*/ | |||
private List invalidConsumers; | |||
private List<InvalidRepositoryContentConsumer> invalidConsumers; | |||
ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private RepositoryContentStatistics stats; | |||
private RepositoryScanStatistics stats; | |||
private long onlyModifiedAfterTimestamp = 0; | |||
@@ -66,8 +67,9 @@ public class RepositoryScannerInstance | |||
private Logger logger; | |||
public RepositoryScannerInstance( ArchivaRepository repository, List knownConsumerList, List invalidConsumerList, | |||
Logger logger ) | |||
public RepositoryScannerInstance( ManagedRepositoryConfiguration repository, | |||
List<KnownRepositoryContentConsumer> knownConsumerList, | |||
List<InvalidRepositoryContentConsumer> invalidConsumerList, Logger logger ) | |||
{ | |||
this.repository = repository; | |||
this.knownConsumers = knownConsumerList; | |||
@@ -77,7 +79,7 @@ public class RepositoryScannerInstance | |||
this.consumerProcessFile = new ConsumerProcessFileClosure( logger ); | |||
this.consumerWantsFile = new ConsumerWantsFilePredicate(); | |||
stats = new RepositoryContentStatistics(); | |||
stats = new RepositoryScanStatistics(); | |||
stats.setRepositoryId( repository.getId() ); | |||
Closure triggerBeginScan = new TriggerBeginScanClosure( repository, logger ); | |||
@@ -91,14 +93,14 @@ public class RepositoryScannerInstance | |||
} | |||
} | |||
public RepositoryContentStatistics getStatistics() | |||
public RepositoryScanStatistics getStatistics() | |||
{ | |||
return stats; | |||
} | |||
public void directoryWalkStarting( File basedir ) | |||
{ | |||
logger.info( "Walk Started: [" + this.repository.getId() + "] " + this.repository.getUrl() ); | |||
logger.info( "Walk Started: [" + this.repository.getId() + "] " + this.repository.getLocation() ); | |||
stats.triggerStart(); | |||
} | |||
@@ -118,7 +120,7 @@ public class RepositoryScannerInstance | |||
stats.increaseNewFileCount(); | |||
BaseFile basefile = new BaseFile( repository.getUrl().getPath(), file ); | |||
BaseFile basefile = new BaseFile( repository.getLocation(), file ); | |||
consumerProcessFile.setBasefile( basefile ); | |||
consumerWantsFile.setBasefile( basefile ); | |||
@@ -135,7 +137,7 @@ public class RepositoryScannerInstance | |||
public void directoryWalkFinished() | |||
{ | |||
logger.info( "Walk Finished: [" + this.repository.getId() + "] " + this.repository.getUrl() ); | |||
logger.info( "Walk Finished: [" + this.repository.getId() + "] " + this.repository.getLocation() ); | |||
stats.triggerFinished(); | |||
} | |||
@@ -20,9 +20,9 @@ package org.apache.maven.archiva.repository.scanner.functors; | |||
*/ | |||
import org.apache.commons.collections.Closure; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.codehaus.plexus.logging.Logger; | |||
/** | |||
@@ -34,11 +34,11 @@ import org.codehaus.plexus.logging.Logger; | |||
public class TriggerBeginScanClosure | |||
implements Closure | |||
{ | |||
private ArchivaRepository repository; | |||
private ManagedRepositoryConfiguration repository; | |||
private Logger logger; | |||
public TriggerBeginScanClosure( ArchivaRepository repository, Logger logger ) | |||
public TriggerBeginScanClosure( ManagedRepositoryConfiguration repository, Logger logger ) | |||
{ | |||
this.repository = repository; | |||
this.logger = logger; |
@@ -0,0 +1,54 @@ | |||
package org.apache.maven.archiva.repository; | |||
/* | |||
* 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.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import java.io.File; | |||
/** | |||
* AbstractRepositoryLayerTestCase | |||
* | |||
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public abstract class AbstractRepositoryLayerTestCase | |||
extends PlexusTestCase | |||
{ | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, File location ) | |||
{ | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.getAbsolutePath() ); | |||
return repo; | |||
} | |||
protected RemoteRepositoryConfiguration createRemoteRepository( String id, String name, String url ) | |||
{ | |||
RemoteRepositoryConfiguration repo = new RemoteRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setUrl( url ); | |||
return repo; | |||
} | |||
} |
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.repository.layout; | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
@@ -38,7 +38,7 @@ import java.io.File; | |||
public abstract class AbstractBidirectionalRepositoryLayoutTestCase | |||
extends PlexusTestCase | |||
{ | |||
protected ArchivaRepository repository; | |||
protected ManagedRepositoryConfiguration repository; | |||
protected void setUp() | |||
throws Exception | |||
@@ -48,7 +48,7 @@ public abstract class AbstractBidirectionalRepositoryLayoutTestCase | |||
repository = createTestRepository(); | |||
} | |||
protected ArchivaRepository createTestRepository() | |||
protected ManagedRepositoryConfiguration createTestRepository() | |||
{ | |||
File targetDir = new File( getBasedir(), "target" ); | |||
File testRepo = new File( targetDir, "test-repo" ); | |||
@@ -58,9 +58,11 @@ public abstract class AbstractBidirectionalRepositoryLayoutTestCase | |||
testRepo.mkdirs(); | |||
} | |||
String repoUri = "file://" + StringUtils.replace( testRepo.getAbsolutePath(), "\\", "/" ); | |||
return new ArchivaRepository( "testRepo", "Test Repository", repoUri ); | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( "testRepo" ); | |||
repo.setName( "Test Repository" ); | |||
repo.setLocation( testRepo.getAbsolutePath() ); | |||
return repo; | |||
} | |||
protected ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String classifier, | |||
@@ -92,8 +94,8 @@ public abstract class AbstractBidirectionalRepositoryLayoutTestCase | |||
protected void assertArtifactReference( ArtifactReference actualReference, String groupId, String artifactId, | |||
String version, String classifier, String type ) | |||
{ | |||
String expectedId = | |||
"ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + classifier + ":" + type; | |||
String expectedId = "ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + classifier | |||
+ ":" + type; | |||
assertNotNull( expectedId + " - Should not be null.", actualReference ); | |||
@@ -18,23 +18,22 @@ package org.apache.maven.archiva.repository.metadata; | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.common.utils.VersionComparator; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
import org.apache.maven.archiva.policies.DownloadPolicy; | |||
import org.apache.maven.archiva.repository.AbstractRepositoryLayerTestCase; | |||
import org.apache.maven.archiva.repository.MockConfiguration; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.custommonkey.xmlunit.DetailedDiff; | |||
import org.custommonkey.xmlunit.Diff; | |||
import org.custommonkey.xmlunit.XMLAssert; | |||
import org.xml.sax.SAXException; | |||
import javax.xml.parsers.ParserConfigurationException; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.util.ArrayList; | |||
@@ -43,6 +42,8 @@ import java.util.Collections; | |||
import java.util.List; | |||
import java.util.Set; | |||
import javax.xml.parsers.ParserConfigurationException; | |||
/** | |||
* MetadataToolsTest | |||
* | |||
@@ -50,7 +51,7 @@ import java.util.Set; | |||
* @version $Id$ | |||
*/ | |||
public class MetadataToolsTest | |||
extends PlexusTestCase | |||
extends AbstractRepositoryLayerTestCase | |||
{ | |||
private MetadataTools tools; | |||
@@ -65,8 +66,8 @@ public class MetadataToolsTest | |||
public void testGatherAvailableVersionsMissingMultipleVersions() | |||
throws Exception | |||
{ | |||
assertAvailableVersions( "missing_metadata_b", | |||
Arrays.asList( "1.0", "1.0.1", "2.0", "2.0.1", "2.0-20070821-dev" ) ); | |||
assertAvailableVersions( "missing_metadata_b", Arrays.asList( "1.0", "1.0.1", "2.0", "2.0.1", | |||
"2.0-20070821-dev" ) ); | |||
} | |||
public void testGatherAvailableVersionsSimpleYetIncomplete() | |||
@@ -84,10 +85,15 @@ public class MetadataToolsTest | |||
public void testGatherSnapshotVersionsA() | |||
throws Exception | |||
{ | |||
assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[]{"1.0-alpha-11-SNAPSHOT", | |||
"1.0-alpha-11-20070221.194724-2", "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4", | |||
"1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6", "1.0-alpha-11-20070314.211405-9", | |||
"1.0-alpha-11-20070316.175232-11"} ); | |||
assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[] { | |||
"1.0-alpha-11-SNAPSHOT", | |||
"1.0-alpha-11-20070221.194724-2", | |||
"1.0-alpha-11-20070302.212723-3", | |||
"1.0-alpha-11-20070303.152828-4", | |||
"1.0-alpha-11-20070305.215149-5", | |||
"1.0-alpha-11-20070307.170909-6", | |||
"1.0-alpha-11-20070314.211405-9", | |||
"1.0-alpha-11-20070316.175232-11" } ); | |||
} | |||
public void testGatherSnapshotVersionsAWithProxies() | |||
@@ -99,23 +105,28 @@ public class MetadataToolsTest | |||
createProxyConnector( "test-repo", "internal-snapshots" ); | |||
createProxyConnector( "test-repo", "snapshots.codehaus.org" ); | |||
assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[]{"1.0-alpha-11-SNAPSHOT", | |||
"1.0-alpha-11-20070221.194724-2", "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4", | |||
"1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6", "1.0-alpha-11-20070314.211405-9", | |||
assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[] { | |||
"1.0-alpha-11-SNAPSHOT", | |||
"1.0-alpha-11-20070221.194724-2", | |||
"1.0-alpha-11-20070302.212723-3", | |||
"1.0-alpha-11-20070303.152828-4", | |||
"1.0-alpha-11-20070305.215149-5", | |||
"1.0-alpha-11-20070307.170909-6", | |||
"1.0-alpha-11-20070314.211405-9", | |||
"1.0-alpha-11-20070315.033030-10" /* Arrives in via snapshots.codehaus.org proxy */, | |||
"1.0-alpha-11-20070316.175232-11"} ); | |||
"1.0-alpha-11-20070316.175232-11" } ); | |||
} | |||
public void testGetRepositorySpecificName() | |||
{ | |||
ArchivaRepository repoJavaNet = new ArchivaRepository( "maven2-repository.dev.java.net", | |||
"Java.net Repository for Maven 2", | |||
"http://download.java.net/maven/2/" ); | |||
ArchivaRepository repoCentral = | |||
new ArchivaRepository( "central", "Central Global Repository", "http://repo1.maven.org/maven2/" ); | |||
RemoteRepositoryConfiguration repoJavaNet = createRemoteRepository( "maven2-repository.dev.java.net", | |||
"Java.net Repository for Maven 2", | |||
"http://download.java.net/maven/2/" ); | |||
RemoteRepositoryConfiguration repoCentral = createRemoteRepository( "central", "Central Global Repository", | |||
"http://repo1.maven.org/maven2/" ); | |||
String convertedName = | |||
tools.getRepositorySpecificName( repoJavaNet, "commons-lang/commons-lang/maven-metadata.xml" ); | |||
String convertedName = tools.getRepositorySpecificName( repoJavaNet, | |||
"commons-lang/commons-lang/maven-metadata.xml" ); | |||
assertMetadataPath( "commons-lang/commons-lang/maven-metadata-maven2-repository.dev.java.net.xml", | |||
convertedName ); | |||
@@ -140,8 +151,12 @@ public class MetadataToolsTest | |||
public void testUpdateProjectMissingMultipleVersions() | |||
throws Exception | |||
{ | |||
assertUpdatedProjectMetadata( "missing_metadata_b", | |||
new String[]{"1.0", "1.0.1", "2.0", "2.0.1", "2.0-20070821-dev"} ); | |||
assertUpdatedProjectMetadata( "missing_metadata_b", new String[] { | |||
"1.0", | |||
"1.0.1", | |||
"2.0", | |||
"2.0.1", | |||
"2.0-20070821-dev" } ); | |||
} | |||
public void testUpdateProjectMissingMultipleVersionsWithProxies() | |||
@@ -153,22 +168,30 @@ public class MetadataToolsTest | |||
createProxyConnector( "test-repo", "central" ); | |||
createProxyConnector( "test-repo", "java.net" ); | |||
assertUpdatedProjectMetadata( "proxied_multi", new String[]{"1.0-spec" /* in java.net */, "1.0" | |||
/* in managed, and central */, "1.0.1" /* in central */, "1.1" /* in managed */, "2.0-proposal-beta" | |||
/* in java.net */, "2.0-spec" /* in java.net */, "2.0" /* in central, and java.net */, "2.0.1" | |||
/* in java.net */, "2.1" /* in managed */, "3.0" /* in central */, "3.1" /* in central */}, "3.1", "3.1" ); | |||
assertUpdatedProjectMetadata( "proxied_multi", new String[] { | |||
"1.0-spec" /* in java.net */, | |||
"1.0" /* in managed, and central */, | |||
"1.0.1" /* in central */, | |||
"1.1" /* in managed */, | |||
"2.0-proposal-beta" /* in java.net */, | |||
"2.0-spec" /* in java.net */, | |||
"2.0" /* in central, and java.net */, | |||
"2.0.1" /* in java.net */, | |||
"2.1" /* in managed */, | |||
"3.0" /* in central */, | |||
"3.1" /* in central */}, "3.1", "3.1" ); | |||
} | |||
public void testUpdateProjectSimpleYetIncomplete() | |||
throws Exception | |||
{ | |||
assertUpdatedProjectMetadata( "incomplete_metadata_a", new String[]{"1.0"} ); | |||
assertUpdatedProjectMetadata( "incomplete_metadata_a", new String[] { "1.0" } ); | |||
} | |||
public void testUpdateProjectSimpleYetMissing() | |||
throws Exception | |||
{ | |||
assertUpdatedProjectMetadata( "missing_metadata_a", new String[]{"1.0"} ); | |||
assertUpdatedProjectMetadata( "missing_metadata_a", new String[] { "1.0" } ); | |||
} | |||
public void testUpdateVersionSimple10() | |||
@@ -314,8 +337,8 @@ public class MetadataToolsTest | |||
reference.setGroupId( "org.apache.archiva.metadata.tests" ); | |||
reference.setArtifactId( artifactId ); | |||
String repoRootURL = PathUtil.toUrl( repoRootDir ); | |||
ArchivaRepository repo = new ArchivaRepository( "test-repo", "Test Repository: " + getName(), repoRootURL ); | |||
ManagedRepositoryConfiguration repo = createRepository( "test-repo", "Test Repository: " | |||
+ getName(), repoRootDir ); | |||
Set<String> testedVersionSet = tools.gatherAvailableVersions( repo, reference ); | |||
@@ -338,8 +361,8 @@ public class MetadataToolsTest | |||
reference.setArtifactId( artifactId ); | |||
reference.setVersion( version ); | |||
String repoRootURL = PathUtil.toUrl( repoRootDir ); | |||
ArchivaRepository repo = new ArchivaRepository( "test-repo", "Test Repository: " + getName(), repoRootURL ); | |||
ManagedRepositoryConfiguration repo = createRepository( "test-repo", "Test Repository: " | |||
+ getName(), repoRootDir ); | |||
Set<String> testedVersionSet = tools.gatherSnapshotVersions( repo, reference ); | |||
@@ -358,19 +381,21 @@ public class MetadataToolsTest | |||
} | |||
} | |||
private void assertMetadata( String expectedMetadata, ArchivaRepository repository, ProjectReference reference ) | |||
private void assertMetadata( String expectedMetadata, ManagedRepositoryConfiguration repository, | |||
ProjectReference reference ) | |||
throws LayoutException, IOException, SAXException, ParserConfigurationException | |||
{ | |||
File metadataFile = new File( repository.getUrl().getPath(), tools.toPath( reference ) ); | |||
File metadataFile = new File( repository.getLocation(), tools.toPath( reference ) ); | |||
String actualMetadata = FileUtils.readFileToString( metadataFile, null ); | |||
XMLAssert.assertXMLEqual( expectedMetadata, actualMetadata ); | |||
} | |||
private void assertMetadata( String expectedMetadata, ArchivaRepository repository, VersionedReference reference ) | |||
private void assertMetadata( String expectedMetadata, ManagedRepositoryConfiguration repository, | |||
VersionedReference reference ) | |||
throws LayoutException, IOException, SAXException, ParserConfigurationException | |||
{ | |||
File metadataFile = new File( repository.getUrl().getPath(), tools.toPath( reference ) ); | |||
File metadataFile = new File( repository.getLocation(), tools.toPath( reference ) ); | |||
String actualMetadata = FileUtils.readFileToString( metadataFile, null ); | |||
DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) ); | |||
@@ -396,7 +421,7 @@ public class MetadataToolsTest | |||
String releaseVersion ) | |||
throws IOException, LayoutException, RepositoryMetadataException, SAXException, ParserConfigurationException | |||
{ | |||
ArchivaRepository testRepo = createTestRepo(); | |||
ManagedRepositoryConfiguration testRepo = createTestRepo(); | |||
ProjectReference reference = new ProjectReference(); | |||
reference.setGroupId( "org.apache.archiva.metadata.tests" ); | |||
reference.setArtifactId( artifactId ); | |||
@@ -439,7 +464,7 @@ public class MetadataToolsTest | |||
private void assertUpdatedReleaseVersionMetadata( String artifactId, String version ) | |||
throws IOException, LayoutException, RepositoryMetadataException, SAXException, ParserConfigurationException | |||
{ | |||
ArchivaRepository testRepo = createTestRepo(); | |||
ManagedRepositoryConfiguration testRepo = createTestRepo(); | |||
VersionedReference reference = new VersionedReference(); | |||
reference.setGroupId( "org.apache.archiva.metadata.tests" ); | |||
reference.setArtifactId( artifactId ); | |||
@@ -463,7 +488,7 @@ public class MetadataToolsTest | |||
String expectedTime, String expectedBuildNumber ) | |||
throws IOException, LayoutException, RepositoryMetadataException, SAXException, ParserConfigurationException | |||
{ | |||
ArchivaRepository testRepo = createTestRepo(); | |||
ManagedRepositoryConfiguration testRepo = createTestRepo(); | |||
VersionedReference reference = new VersionedReference(); | |||
reference.setGroupId( "org.apache.archiva.metadata.tests" ); | |||
reference.setArtifactId( artifactId ); | |||
@@ -516,7 +541,7 @@ public class MetadataToolsTest | |||
config.triggerChange( prefix + ".policies.cache-failures", connectorConfig.getPolicy( "cache-failures", "" ) ); | |||
} | |||
private ArchivaRepository createTestRepo() | |||
private ManagedRepositoryConfiguration createTestRepo() | |||
throws IOException | |||
{ | |||
File repoRoot = new File( "target/metadata-tests/" + getName() ); | |||
@@ -527,12 +552,10 @@ public class MetadataToolsTest | |||
repoRoot.mkdirs(); | |||
String repoRootURL = PathUtil.toUrl( repoRoot ); | |||
return new ArchivaRepository( "test-repo", "Test Repository: " + getName(), repoRootURL ); | |||
return createRepository( "test-repo", "Test Repository: " + getName(), repoRoot ); | |||
} | |||
private void prepTestRepo( ArchivaRepository repo, ProjectReference reference ) | |||
private void prepTestRepo( ManagedRepositoryConfiguration repo, ProjectReference reference ) | |||
throws IOException | |||
{ | |||
String groupDir = StringUtils.replaceChars( reference.getGroupId(), '.', '/' ); | |||
@@ -540,7 +563,7 @@ public class MetadataToolsTest | |||
File srcRepoDir = new File( "src/test/repositories/metadata-repository" ); | |||
File srcDir = new File( srcRepoDir, path ); | |||
File destDir = new File( repo.getUrl().getPath(), path ); | |||
File destDir = new File( repo.getLocation(), path ); | |||
assertTrue( "Source Dir exists: " + srcDir, srcDir.exists() ); | |||
destDir.mkdirs(); | |||
@@ -548,7 +571,7 @@ public class MetadataToolsTest | |||
FileUtils.copyDirectory( srcDir, destDir ); | |||
} | |||
private void prepTestRepo( ArchivaRepository repo, VersionedReference reference ) | |||
private void prepTestRepo( ManagedRepositoryConfiguration repo, VersionedReference reference ) | |||
throws IOException | |||
{ | |||
ProjectReference projectRef = new ProjectReference(); |
@@ -20,10 +20,11 @@ package org.apache.maven.archiva.repository.project.filters; | |||
*/ | |||
import org.apache.maven.archiva.common.utils.VersionUtil; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaProjectModel; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.Dependency; | |||
import org.apache.maven.archiva.model.Individual; | |||
import org.apache.maven.archiva.repository.AbstractRepositoryLayerTestCase; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.DefaultBidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.project.ProjectModelException; | |||
@@ -32,8 +33,7 @@ import org.apache.maven.archiva.repository.project.ProjectModelReader; | |||
import org.apache.maven.archiva.repository.project.ProjectModelResolver; | |||
import org.apache.maven.archiva.repository.project.ProjectModelResolverFactory; | |||
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; | |||
import org.apache.maven.archiva.repository.project.resolvers.RepositoryProjectResolver; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.apache.maven.archiva.repository.project.resolvers.ManagedRepositoryProjectResolver; | |||
import java.io.File; | |||
import java.util.HashMap; | |||
@@ -48,7 +48,7 @@ import java.util.Map; | |||
* @version $Id$ | |||
*/ | |||
public class EffectiveProjectModelFilterTest | |||
extends PlexusTestCase | |||
extends AbstractRepositoryLayerTestCase | |||
{ | |||
private static final String DEFAULT_REPOSITORY = "src/test/repositories/default-repository"; | |||
@@ -72,12 +72,11 @@ public class EffectiveProjectModelFilterTest | |||
{ | |||
File defaultRepoDir = new File( getBasedir(), DEFAULT_REPOSITORY ); | |||
ArchivaRepository repo = new ArchivaRepository( "defaultTestRepo", "Default Test Repo", "file://" | |||
+ defaultRepoDir.getAbsolutePath() ); | |||
ManagedRepositoryConfiguration repo = createRepository( "defaultTestRepo", "Default Test Repo", defaultRepoDir ); | |||
ProjectModelReader reader = new ProjectModel400Reader(); | |||
BidirectionalRepositoryLayout layout = new DefaultBidirectionalRepositoryLayout(); | |||
RepositoryProjectResolver resolver = new RepositoryProjectResolver( repo, reader, layout ); | |||
ManagedRepositoryProjectResolver resolver = new ManagedRepositoryProjectResolver( repo, reader, layout ); | |||
return resolver; | |||
} |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.util.List; | |||
@@ -38,7 +38,7 @@ public class InvalidScanConsumer | |||
{ | |||
private int processCount = 0; | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
/* do nothing */ |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
@@ -68,7 +68,7 @@ public class KnownScanConsumer | |||
return "Scan Consumer (for testing)"; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
/* do nothing */ |
@@ -19,10 +19,11 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.AbstractRepositoryLayerTestCase; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.easymock.MockControl; | |||
@@ -38,7 +39,7 @@ import java.util.Map; | |||
* @version $Id$ | |||
*/ | |||
public class RepositoryContentConsumerUtilTest | |||
extends PlexusTestCase | |||
extends AbstractRepositoryLayerTestCase | |||
{ | |||
private RepositoryContentConsumers lookupRepositoryConsumerUtil() | |||
throws Exception | |||
@@ -118,8 +119,7 @@ public class RepositoryContentConsumerUtilTest | |||
InvalidRepositoryContentConsumer invalidConsumer = (InvalidRepositoryContentConsumer) invalidControl.getMock(); | |||
consumers.setAvailableInvalidConsumers( Collections.singletonList( invalidConsumer ) ); | |||
ArchivaRepository repo = | |||
new ArchivaRepository( "id", "name", getTestFile( "target/test-repo" ).toURL().toExternalForm() ); | |||
ManagedRepositoryConfiguration repo = createRepository( "id", "name", getTestFile( "target/test-repo" ) ); | |||
File testFile = getTestFile( "target/test-repo/path/to/test-file.txt" ); | |||
knownConsumer.beginScan( repo ); |
@@ -19,11 +19,9 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.apache.maven.archiva.repository.AbstractRepositoryLayerTestCase; | |||
import java.io.File; | |||
import java.util.ArrayList; | |||
@@ -37,7 +35,7 @@ import java.util.List; | |||
* @version $Id$ | |||
*/ | |||
public class RepositoryScannerTest | |||
extends PlexusTestCase | |||
extends AbstractRepositoryLayerTestCase | |||
{ | |||
private static final String[] ARTIFACT_PATTERNS = new String[] { | |||
"**/*.jar", | |||
@@ -47,29 +45,25 @@ public class RepositoryScannerTest | |||
"**/*.war", | |||
"**/*.tar.gz" }; | |||
private ArchivaRepository createDefaultRepository() | |||
private ManagedRepositoryConfiguration createDefaultRepository() | |||
{ | |||
File repoDir = new File( getBasedir(), "src/test/repositories/default-repository" ); | |||
assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
ArchivaRepository repo = new ArchivaRepository( "testDefaultRepo", "Test Default Repository", repoUri ); | |||
ManagedRepositoryConfiguration repo = createRepository( "testDefaultRepo", "Test Default Repository", repoDir ); | |||
return repo; | |||
} | |||
private ArchivaRepository createLegacyRepository() | |||
private ManagedRepositoryConfiguration createLegacyRepository() | |||
{ | |||
File repoDir = new File( getBasedir(), "src/test/repositories/legacy-repository" ); | |||
assertTrue( "Legacy Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
ArchivaRepository repo = new ArchivaRepository( "testLegacyRepo", "Test Legacy Repository", repoUri ); | |||
repo.getModel().setLayoutName( "legacy" ); | |||
ManagedRepositoryConfiguration repo = createRepository( "testLegacyRepo", "Test Legacy Repository", repoDir ); | |||
repo.setLayout( "legacy" ); | |||
return repo; | |||
} | |||
@@ -99,7 +93,7 @@ public class RepositoryScannerTest | |||
public void testDefaultRepositoryScanner() | |||
throws Exception | |||
{ | |||
ArchivaRepository repository = createDefaultRepository(); | |||
ManagedRepositoryConfiguration repository = createDefaultRepository(); | |||
List knownConsumers = new ArrayList(); | |||
KnownScanConsumer consumer = new KnownScanConsumer(); | |||
@@ -166,7 +160,7 @@ public class RepositoryScannerTest | |||
actualArtifactPaths.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" ); | |||
actualArtifactPaths.add( "javax/sql/jdbc/2.0/jdbc-2.0.jar" ); | |||
ArchivaRepository repository = createDefaultRepository(); | |||
ManagedRepositoryConfiguration repository = createDefaultRepository(); | |||
List knownConsumers = new ArrayList(); | |||
KnownScanConsumer consumer = new KnownScanConsumer(); | |||
@@ -202,7 +196,7 @@ public class RepositoryScannerTest | |||
actualMetadataPaths.add( "javax/sql/maven-metadata-repository.xml" ); | |||
actualMetadataPaths.add( "javax/maven-metadata.xml" ); | |||
ArchivaRepository repository = createDefaultRepository(); | |||
ManagedRepositoryConfiguration repository = createDefaultRepository(); | |||
List knownConsumers = new ArrayList(); | |||
KnownScanConsumer knownConsumer = new KnownScanConsumer(); | |||
@@ -238,7 +232,7 @@ public class RepositoryScannerTest | |||
actualProjectPaths.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ); | |||
actualProjectPaths.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" ); | |||
ArchivaRepository repository = createDefaultRepository(); | |||
ManagedRepositoryConfiguration repository = createDefaultRepository(); | |||
List knownConsumers = new ArrayList(); | |||
KnownScanConsumer consumer = new KnownScanConsumer(); | |||
@@ -278,7 +272,7 @@ public class RepositoryScannerTest | |||
actualArtifactPaths.add( "org.apache.maven.update/jars/test-not-updated-1.0.jar" ); | |||
actualArtifactPaths.add( "org.apache.maven.update/jars/test-updated-1.0.jar" ); | |||
ArchivaRepository repository = createLegacyRepository(); | |||
ManagedRepositoryConfiguration repository = createLegacyRepository(); | |||
List knownConsumers = new ArrayList(); | |||
KnownScanConsumer consumer = new KnownScanConsumer(); |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.repository.scanner; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.util.List; | |||
@@ -39,7 +39,7 @@ public class SampleKnownConsumer | |||
extends AbstractMonitoredConsumer | |||
implements KnownRepositoryContentConsumer | |||
{ | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
/* nothing to do */ |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.cli; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
/** | |||
* AbstractProgressConsumer | |||
@@ -36,7 +36,7 @@ public abstract class AbstractProgressConsumer | |||
{ | |||
private int count = 0; | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
this.count = 0; |
@@ -24,13 +24,14 @@ import org.apache.commons.cli.Option; | |||
import org.apache.commons.cli.Options; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.converter.RepositoryConversionException; | |||
import org.apache.maven.archiva.converter.legacy.LegacyRepositoryConverter; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.apache.maven.archiva.repository.scanner.RepositoryScanStatistics; | |||
import org.apache.maven.archiva.repository.scanner.RepositoryScanner; | |||
import org.codehaus.plexus.PlexusContainer; | |||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException; | |||
@@ -167,7 +168,10 @@ public class ArchivaCli | |||
{ | |||
String path = cli.getOptionValue( SCAN ); | |||
ArchivaRepository repo = new ArchivaRepository( "cliRepo", "Archiva CLI Provided Repo", "file://" + path ); | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( "cliRepo" ); | |||
repo.setName( "Archiva CLI Provided Repo" ); | |||
repo.setLocation( path ); | |||
List knownConsumerList = new ArrayList(); | |||
@@ -182,8 +186,8 @@ public class ArchivaCli | |||
try | |||
{ | |||
RepositoryContentStatistics stats = scanner.scan( repo, knownConsumerList, invalidConsumerList, | |||
ignoredContent, RepositoryScanner.FRESH_SCAN ); | |||
RepositoryScanStatistics stats = scanner.scan( repo, knownConsumerList, invalidConsumerList, | |||
ignoredContent, RepositoryScanner.FRESH_SCAN ); | |||
System.out.println( "\n" + stats.toDump( repo ) ); | |||
} |
@@ -19,10 +19,10 @@ package org.apache.maven.archiva.cli; | |||
* under the License. | |||
*/ | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.consumers.ConsumerException; | |||
import org.apache.maven.archiva.consumers.RepositoryContentConsumer; | |||
import org.apache.maven.archiva.model.ArchivaProjectModel; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.project.ProjectModelException; | |||
import org.apache.maven.archiva.repository.project.ProjectModelReader; | |||
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; | |||
@@ -57,7 +57,7 @@ public class ProjectReaderConsumer | |||
private ProjectModelReader reader; | |||
private ArchivaRepository repo; | |||
private ManagedRepositoryConfiguration repo; | |||
private List includes; | |||
@@ -94,7 +94,7 @@ public class ProjectReaderConsumer | |||
return includes; | |||
} | |||
public void beginScan( ArchivaRepository repository ) | |||
public void beginScan( ManagedRepositoryConfiguration repository ) | |||
throws ConsumerException | |||
{ | |||
super.beginScan( repository ); | |||
@@ -106,7 +106,7 @@ public class ProjectReaderConsumer | |||
{ | |||
super.processFile( path ); | |||
File pomFile = new File( repo.getUrl().getPath(), path ); | |||
File pomFile = new File( repo.getLocation(), path ); | |||
try | |||
{ | |||
ArchivaProjectModel model = reader.read( pomFile ); |
@@ -52,7 +52,5 @@ public interface ArchivaDAO | |||
ProjectModelDAO getProjectModelDAO(); | |||
RepositoryDAO getRepositoryDAO(); | |||
RepositoryProblemDAO getRepositoryProblemDAO(); | |||
} |
@@ -1,71 +0,0 @@ | |||
package org.apache.maven.archiva.database; | |||
/* | |||
* 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.maven.archiva.model.ArchivaRepository; | |||
import java.util.List; | |||
/** | |||
* RepositoryDAO | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public interface RepositoryDAO | |||
{ | |||
/* NOTE TO ARCHIVA DEVELOPERS. | |||
* | |||
* Please keep this interface clean and lean. | |||
* We don't want a repeat of the Continuum Store. | |||
* You should have the following methods per object type ... | |||
* | |||
* (Required Methods) | |||
* | |||
* DatabaseObject .createDatabaseObject( Required Params ) ; | |||
* List .queryDatabaseObject( Constraint ) throws ObjectNotFoundException, DatabaseException; | |||
* DatabaseObject .saveDatabaseObject( DatabaseObject ) throws DatabaseException; | |||
* | |||
* (Optional Methods) | |||
* | |||
* DatabaseObject .getDatabaseObject( Id ) throws ObjectNotFoundException, DatabaseException; | |||
* List .getDatabaseObjects() throws ObjectNotFoundException, DatabaseException; | |||
* void .deleteDatabaseObject( DatabaseObject ) throws DatabaseException; | |||
* | |||
* This is the only list of options created in this DAO. | |||
*/ | |||
public ArchivaRepository createRepository( String id, String name, String url ); | |||
public List /*<ArchivaRepository>*/getRepositories() | |||
throws ObjectNotFoundException, ArchivaDatabaseException; | |||
public ArchivaRepository getRepository( String id ) | |||
throws ObjectNotFoundException, ArchivaDatabaseException; | |||
public List /*<ArchivaRepository>*/queryRepositories( Constraint constraint ) | |||
throws ObjectNotFoundException, ArchivaDatabaseException; | |||
public ArchivaRepository saveRepository( ArchivaRepository repository ) | |||
throws ArchivaDatabaseException; | |||
public void deleteRepository( ArchivaRepository repository ) | |||
throws ArchivaDatabaseException; | |||
} |
@@ -22,7 +22,6 @@ package org.apache.maven.archiva.database.jdo; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.database.ProjectModelDAO; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.database.RepositoryProblemDAO; | |||
import org.apache.maven.archiva.database.SimpleConstraint; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
@@ -57,11 +56,6 @@ public class JdoArchivaDAO | |||
*/ | |||
private ProjectModelDAO projectModelDAO; | |||
/** | |||
* @plexus.requirement role-hint="jdo" | |||
*/ | |||
private RepositoryDAO repositoryDAO; | |||
/** | |||
* @plexus.requirement role-hint="jdo" | |||
*/ | |||
@@ -87,11 +81,6 @@ public class JdoArchivaDAO | |||
return projectModelDAO; | |||
} | |||
public RepositoryDAO getRepositoryDAO() | |||
{ | |||
return repositoryDAO; | |||
} | |||
public RepositoryProblemDAO getRepositoryProblemDAO() | |||
{ | |||
return repositoryProblemDAO; |
@@ -1,118 +0,0 @@ | |||
package org.apache.maven.archiva.database.jdo; | |||
/* | |||
* 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.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.Constraint; | |||
import org.apache.maven.archiva.database.ObjectNotFoundException; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArchivaRepositoryModel; | |||
import java.util.ArrayList; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
/** | |||
* JdoRepositoryDAO | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
* | |||
* @plexus.component role-hint="jdo" | |||
*/ | |||
public class JdoRepositoryDAO | |||
implements RepositoryDAO | |||
{ | |||
/** | |||
* @plexus.requirement role-hint="archiva" | |||
*/ | |||
private JdoAccess jdo; | |||
/* .\ Archiva Repository \.____________________________________________________________ */ | |||
public ArchivaRepository createRepository( String id, String name, String url ) | |||
{ | |||
ArchivaRepository repo; | |||
try | |||
{ | |||
repo = getRepository( id ); | |||
} | |||
catch ( ArchivaDatabaseException e ) | |||
{ | |||
repo = new ArchivaRepository( id, name, url ); | |||
} | |||
return repo; | |||
} | |||
public List getRepositories() | |||
throws ObjectNotFoundException, ArchivaDatabaseException | |||
{ | |||
return queryRepositories( null ); | |||
} | |||
public ArchivaRepository getRepository( String id ) | |||
throws ObjectNotFoundException, ArchivaDatabaseException | |||
{ | |||
ArchivaRepositoryModel model = (ArchivaRepositoryModel) jdo.getObjectById( ArchivaRepositoryModel.class, id, | |||
null ); | |||
return new ArchivaRepository( model ); | |||
} | |||
public List queryRepositories( Constraint constraint ) | |||
throws ObjectNotFoundException, ArchivaDatabaseException | |||
{ | |||
List results = jdo.queryObjects( ArchivaRepositoryModel.class, constraint ); | |||
if ( ( results == null ) || results.isEmpty() ) | |||
{ | |||
return results; | |||
} | |||
List ret = new ArrayList(); | |||
Iterator it = results.iterator(); | |||
while ( it.hasNext() ) | |||
{ | |||
ArchivaRepositoryModel model = (ArchivaRepositoryModel) it.next(); | |||
ret.add( new ArchivaRepository( model ) ); | |||
} | |||
return ret; | |||
} | |||
public ArchivaRepository saveRepository( ArchivaRepository repository ) | |||
{ | |||
ArchivaRepositoryModel model = (ArchivaRepositoryModel) jdo.saveObject( repository.getModel() ); | |||
if ( model == null ) | |||
{ | |||
return null; | |||
} | |||
return new ArchivaRepository( model ); | |||
} | |||
public void deleteRepository( ArchivaRepository repository ) | |||
throws ArchivaDatabaseException | |||
{ | |||
jdo.removeObject( repository.getModel() ); | |||
} | |||
} |
@@ -33,6 +33,7 @@ public class JdoArchivaDAOTest | |||
public void testSubDAOs() | |||
{ | |||
assertNotNull( "Artifact DAO", dao.getArtifactDAO() ); | |||
assertNotNull( "Repository DAO", dao.getRepositoryDAO() ); | |||
assertNotNull( "Project Model DAO", dao.getProjectModelDAO() ); | |||
assertNotNull( "Repository Problem DAO", dao.getRepositoryProblemDAO() ); | |||
} | |||
} |
@@ -1,96 +0,0 @@ | |||
package org.apache.maven.archiva.database.jdo; | |||
/* | |||
* 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.maven.archiva.database.AbstractArchivaDatabaseTestCase; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import java.util.List; | |||
import javax.jdo.JDOHelper; | |||
/** | |||
* JdoRepositoryDAOTest | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
*/ | |||
public class JdoRepositoryDAOTest | |||
extends AbstractArchivaDatabaseTestCase | |||
{ | |||
public void testRepositoryCRUD() | |||
throws ArchivaDatabaseException | |||
{ | |||
RepositoryDAO repoDao = dao.getRepositoryDAO(); | |||
// Create it | |||
ArchivaRepository repo = repoDao.createRepository( "testRepo", "Test Repository", | |||
"http://localhost:8080/repository/foo" ); | |||
assertNotNull( repo ); | |||
// Set some mandatory values | |||
repo.getModel().setCreationSource( "Test Case" ); | |||
repo.getModel().setLayoutName( "default" ); | |||
// Save it. | |||
ArchivaRepository repoSaved = repoDao.saveRepository( repo ); | |||
assertNotNull( repoSaved ); | |||
assertNotNull( repoSaved.getModel() ); | |||
assertEquals( "testRepo", JDOHelper.getObjectId( repoSaved.getModel() ).toString() ); | |||
// Test that something has been saved. | |||
List repos = repoDao.getRepositories(); | |||
assertNotNull( repos ); | |||
assertEquals( 1, repos.size() ); | |||
// Test that retreived object is what we expect. | |||
ArchivaRepository firstRepo = (ArchivaRepository) repos.get( 0 ); | |||
assertNotNull( firstRepo ); | |||
assertEquals( "testRepo", repo.getId() ); | |||
assertEquals( "Test Repository", repo.getModel().getName() ); | |||
assertEquals( "Test Case", repo.getModel().getCreationSource() ); | |||
assertEquals( "default", repo.getModel().getLayoutName() ); | |||
// Change value and save. | |||
repoSaved.getModel().setCreationSource( "Changed" ); | |||
repoDao.saveRepository( repoSaved ); | |||
// Test that only 1 object is saved. | |||
assertEquals( 1, repoDao.getRepositories().size() ); | |||
// Get the specific repo. | |||
ArchivaRepository actualRepo = repoDao.getRepository( "testRepo" ); | |||
assertNotNull( actualRepo ); | |||
// Test expected values. | |||
assertEquals( "testRepo", actualRepo.getId() ); | |||
assertEquals( "http://localhost:8080/repository/foo", actualRepo.getUrl().toString() ); | |||
assertEquals( "Changed", actualRepo.getModel().getCreationSource() ); | |||
// Test that only 1 object is saved. | |||
assertEquals( 1, repoDao.getRepositories().size() ); | |||
// Delete object. | |||
repoDao.deleteRepository( actualRepo ); | |||
assertEquals( 0, repoDao.getRepositories().size() ); | |||
} | |||
} |
@@ -31,9 +31,7 @@ import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaProjectModel; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryProblem; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -142,9 +140,9 @@ public class LocationArtifactsConsumer | |||
public void processArchivaArtifact( ArchivaArtifact artifact ) | |||
throws ConsumerException | |||
{ | |||
ArchivaRepository repository = findRepository( artifact ); | |||
ManagedRepositoryConfiguration repository = findRepository( artifact ); | |||
File artifactFile = new File( repository.getUrl().toString(), toPath( artifact ) ); | |||
File artifactFile = new File( repository.getLocation(), toPath( artifact ) ); | |||
ArchivaProjectModel fsModel = readFilesystemModel( artifactFile ); | |||
ArchivaProjectModel embeddedModel = readEmbeddedModel( artifact, artifactFile ); | |||
@@ -287,9 +285,9 @@ public class LocationArtifactsConsumer | |||
return new File( pomFilename ); | |||
} | |||
private ArchivaRepository findRepository( ArchivaArtifact artifact ) | |||
private ManagedRepositoryConfiguration findRepository( ArchivaArtifact artifact ) | |||
{ | |||
return (ArchivaRepository) this.repositoryMap.get( artifact.getModel().getRepositoryId() ); | |||
return (ManagedRepositoryConfiguration) this.repositoryMap.get( artifact.getModel().getRepositoryId() ); | |||
} | |||
private String toPath( ArchivaArtifact artifact ) | |||
@@ -337,12 +335,12 @@ public class LocationArtifactsConsumer | |||
{ | |||
this.repositoryMap.clear(); | |||
Map<String, ManagedRepositoryConfiguration> map = | |||
Map<String, ManagedRepositoryConfiguration> map = | |||
configuration.getConfiguration().getManagedRepositoriesAsMap(); | |||
for ( Map.Entry<String, ManagedRepositoryConfiguration> entry : map.entrySet() ) | |||
{ | |||
ArchivaRepository repository = ArchivaConfigurationAdaptor.toArchivaRepository( entry.getValue() ); | |||
this.repositoryMap.put( entry.getKey(), repository ); | |||
this.repositoryMap.put( entry.getKey(), entry.getValue() ); | |||
} | |||
} | |||
} |
@@ -21,13 +21,13 @@ package org.apache.maven.archiva.scheduled.executors; | |||
import org.apache.commons.collections.CollectionUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.database.constraints.MostRecentRepositoryScanStatistics; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
import org.apache.maven.archiva.repository.RepositoryException; | |||
import org.apache.maven.archiva.repository.scanner.RepositoryScanStatistics; | |||
import org.apache.maven.archiva.repository.scanner.RepositoryScanner; | |||
import org.apache.maven.archiva.scheduled.tasks.RepositoryTask; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
@@ -57,11 +57,11 @@ public class ArchivaRepositoryScanningTaskExecutor | |||
* @plexus.requirement role-hint="jdo" | |||
*/ | |||
private ArchivaDAO dao; | |||
/** | |||
* @plexus.requirement role-hint="jdo" | |||
* @plexus.requirement | |||
*/ | |||
private RepositoryDAO repositoryDAO; | |||
private ArchivaConfiguration archivaConfiguration; | |||
/** | |||
* The repository scanner component. | |||
@@ -90,11 +90,11 @@ public class ArchivaRepositoryScanningTaskExecutor | |||
try | |||
{ | |||
ArchivaRepository arepo = repositoryDAO.getRepository( repoTask.getRepositoryId() ); | |||
ManagedRepositoryConfiguration arepo = archivaConfiguration.getConfiguration().findManagedRepositoryById( repoTask.getRepositoryId() ); | |||
long sinceWhen = RepositoryScanner.FRESH_SCAN; | |||
List results = dao.query( new MostRecentRepositoryScanStatistics( arepo.getId() ) ); | |||
List<RepositoryContentStatistics> results = dao.query( new MostRecentRepositoryScanStatistics( arepo.getId() ) ); | |||
if ( CollectionUtils.isNotEmpty( results ) ) | |||
{ | |||
@@ -102,15 +102,19 @@ public class ArchivaRepositoryScanningTaskExecutor | |||
sinceWhen = lastStats.getWhenGathered().getTime() + lastStats.getDuration(); | |||
} | |||
RepositoryContentStatistics stats = repoScanner.scan( arepo, sinceWhen ); | |||
RepositoryScanStatistics stats = repoScanner.scan( arepo, sinceWhen ); | |||
getLogger().info( "Finished repository task: " + stats.toDump( arepo ) ); | |||
stats = (RepositoryContentStatistics) dao.save( stats ); | |||
} | |||
catch ( ArchivaDatabaseException e ) | |||
{ | |||
throw new TaskExecutionException( "Database error when executing repository job.", e ); | |||
// I hate jpox and modello | |||
RepositoryContentStatistics dbstats = new RepositoryContentStatistics(); | |||
dbstats.setDuration( stats.getDuration() ); | |||
dbstats.setNewFileCount( stats.getNewFileCount() ); | |||
dbstats.setRepositoryId( stats.getRepositoryId() ); | |||
dbstats.setTotalFileCount( stats.getTotalFileCount() ); | |||
dbstats.setWhenGathered( stats.getWhenGathered() ); | |||
dao.save( dbstats ); | |||
} | |||
catch ( RepositoryException e ) | |||
{ |
@@ -20,12 +20,11 @@ package org.apache.maven.archiva.scheduled.executors; | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.database.constraints.ArtifactsProcessedConstraint; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.scheduled.tasks.DatabaseTask; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory; | |||
@@ -142,28 +141,13 @@ public class ArchivaDatabaseUpdateTaskExecutorTest | |||
public void testExecutor() | |||
throws Exception | |||
{ | |||
RepositoryDAO repoDao = dao.getRepositoryDAO(); | |||
File repoDir = new File( getBasedir(), "src/test/repositories/default-repository" ); | |||
assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
// Create it | |||
ArchivaRepository repo = repoDao.createRepository( "testRepo", "Test Repository", repoUri ); | |||
ManagedRepositoryConfiguration repo = createRepository( "testRepo", "Test Repository", repoDir ); | |||
assertNotNull( repo ); | |||
// Set some mandatory values | |||
repo.getModel().setCreationSource( "Test Case" ); | |||
repo.getModel().setLayoutName( "default" ); | |||
// Save it. | |||
ArchivaRepository repoSaved = repoDao.saveRepository( repo ); | |||
assertNotNull( repoSaved ); | |||
assertNotNull( repoSaved.getModel() ); | |||
assertEquals( "testRepo", JDOHelper.getObjectId( repoSaved.getModel() ).toString() ); | |||
ArtifactDAO adao = dao.getArtifactDAO(); | |||
ArchivaArtifact sqlArtifact = adao.createArtifact( "javax.sql", "jdbc", "2.0", "", "jar" ); | |||
@@ -205,4 +189,13 @@ public class ArchivaDatabaseUpdateTaskExecutorTest | |||
assertNotNull( "Processed Results should not be null.", processedResultList ); | |||
assertEquals( "Incorrect number of processed artifacts detected.", 1, processedResultList.size() ); | |||
} | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, File location ) | |||
{ | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.getAbsolutePath() ); | |||
return repo; | |||
} | |||
} |
@@ -19,12 +19,12 @@ package org.apache.maven.archiva.scheduled.executors; | |||
* under the License. | |||
*/ | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.Configuration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.database.constraints.ArtifactsProcessedConstraint; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.scheduled.tasks.RepositoryTask; | |||
import org.codehaus.plexus.PlexusTestCase; | |||
import org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory; | |||
@@ -39,7 +39,6 @@ import java.util.List; | |||
import java.util.Map; | |||
import java.util.Properties; | |||
import javax.jdo.JDOHelper; | |||
import javax.jdo.PersistenceManager; | |||
import javax.jdo.PersistenceManagerFactory; | |||
@@ -140,28 +139,18 @@ public class ArchivaRepositoryScanningTaskExecutorTest | |||
public void testExecutor() throws Exception | |||
{ | |||
RepositoryDAO repoDao = dao.getRepositoryDAO(); | |||
File repoDir = new File( getBasedir(), "src/test/repositories/default-repository" ); | |||
assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() ); | |||
String repoUri = "file://" + StringUtils.replace( repoDir.getAbsolutePath(), "\\", "/" ); | |||
ArchivaConfiguration archivaConfig = (ArchivaConfiguration) lookup( ArchivaConfiguration.class ); | |||
assertNotNull( archivaConfig ); | |||
// Create it | |||
ArchivaRepository repo = | |||
repoDao.createRepository( "testRepo", "Test Repository", repoUri ); | |||
ManagedRepositoryConfiguration repo = createRepository( "testRepo", "Test Repository", repoDir ); | |||
assertNotNull( repo ); | |||
// Set some mandatory values | |||
repo.getModel().setCreationSource( "Test Case" ); | |||
repo.getModel().setLayoutName( "default" ); | |||
// Save it. | |||
ArchivaRepository repoSaved = repoDao.saveRepository( repo ); | |||
assertNotNull( repoSaved ); | |||
assertNotNull( repoSaved.getModel() ); | |||
assertEquals( "testRepo", JDOHelper.getObjectId( repoSaved.getModel() ).toString() ); | |||
archivaConfig.getConfiguration().getManagedRepositories().clear(); | |||
archivaConfig.getConfiguration().addManagedRepository( repo ); | |||
RepositoryTask repoTask = new RepositoryTask(); | |||
@@ -176,4 +165,13 @@ public class ArchivaRepositoryScanningTaskExecutorTest | |||
assertNotNull( unprocessedResultList ); | |||
assertEquals("Incorrect number of unprocessed artifacts detected.", 8, unprocessedResultList.size() ); | |||
} | |||
protected ManagedRepositoryConfiguration createRepository( String id, String name, File location ) | |||
{ | |||
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.getAbsolutePath() ); | |||
return repo; | |||
} | |||
} |
@@ -19,18 +19,18 @@ | |||
--> | |||
<configuration> | |||
<repositories> | |||
<repository> | |||
<managedRepositories> | |||
<managedRepository> | |||
<id>testRepo</id> | |||
<name>Archiva Test Repository</name> | |||
<url>file://${basedir}/src/test/repositories/default-repository</url> | |||
<location>${basedir}/src/test/repositories/default-repository</location> | |||
<layout>default</layout> | |||
<releases>true</releases> | |||
<snapshots>false</snapshots> | |||
<indexed>true</indexed> | |||
<refreshCronExpression>0 0 * * ?</refreshCronExpression> | |||
</repository> | |||
</repositories> | |||
</managedRepository> | |||
</managedRepositories> | |||
<proxyConnectors /> | |||
@@ -33,9 +33,8 @@ | |||
<field-name>dao</field-name> | |||
</requirement> | |||
<requirement> | |||
<role>org.apache.maven.archiva.database.RepositoryDAO</role> | |||
<role-hint>jdo</role-hint> | |||
<field-name>repositoryDAO</field-name> | |||
<role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role> | |||
<field-name>archivaConfiguration</field-name> | |||
</requirement> | |||
<requirement> | |||
<role>org.apache.maven.archiva.repository.scanner.RepositoryScanner</role> |
@@ -22,13 +22,11 @@ package org.apache.maven.archiva.web.repository; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.Configuration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.model.ArtifactReference; | |||
import org.apache.maven.archiva.model.ProjectReference; | |||
import org.apache.maven.archiva.model.VersionedReference; | |||
import org.apache.maven.archiva.proxy.ProxyException; | |||
import org.apache.maven.archiva.proxy.RepositoryProxyConnectors; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
@@ -38,21 +36,21 @@ import org.apache.maven.model.DistributionManagement; | |||
import org.apache.maven.model.Model; | |||
import org.apache.maven.model.Relocation; | |||
import org.apache.maven.model.io.xpp3.MavenXpp3Reader; | |||
import org.apache.maven.wagon.ResourceDoesNotExistException; | |||
import org.codehaus.plexus.webdav.AbstractDavServerComponent; | |||
import org.codehaus.plexus.webdav.DavServerComponent; | |||
import org.codehaus.plexus.webdav.DavServerException; | |||
import org.codehaus.plexus.webdav.servlet.DavServerRequest; | |||
import org.codehaus.plexus.webdav.util.WebdavMethodUtil; | |||
import javax.servlet.ServletConfig; | |||
import javax.servlet.ServletException; | |||
import javax.servlet.http.HttpServletResponse; | |||
import java.io.File; | |||
import java.io.FileNotFoundException; | |||
import java.io.FileReader; | |||
import java.io.IOException; | |||
import javax.servlet.ServletConfig; | |||
import javax.servlet.ServletException; | |||
import javax.servlet.http.HttpServletResponse; | |||
/** | |||
* ProxiedDavServer | |||
* | |||
@@ -91,9 +89,7 @@ public class ProxiedDavServer | |||
private BidirectionalRepositoryLayout layout; | |||
private ManagedRepositoryConfiguration repositoryConfiguration; | |||
private ArchivaRepository managedRepository; | |||
private ManagedRepositoryConfiguration managedRepository; | |||
public String getPrefix() | |||
{ | |||
@@ -122,14 +118,11 @@ public class ProxiedDavServer | |||
Configuration config = archivaConfiguration.getConfiguration(); | |||
repositoryConfiguration = config.findManagedRepositoryById( getPrefix() ); | |||
managedRepository = | |||
ArchivaConfigurationAdaptor.toArchivaRepository( repositoryConfiguration ); | |||
managedRepository = config.findManagedRepositoryById( getPrefix() ); | |||
try | |||
{ | |||
layout = layoutFactory.getLayout( managedRepository.getLayoutType() ); | |||
layout = layoutFactory.getLayout( managedRepository.getLayout() ); | |||
} | |||
catch ( LayoutException e ) | |||
{ | |||
@@ -332,6 +325,6 @@ public class ProxiedDavServer | |||
public ManagedRepositoryConfiguration getRepositoryConfiguration() | |||
{ | |||
return repositoryConfiguration; | |||
return managedRepository; | |||
} | |||
} |
@@ -42,7 +42,7 @@ public class ArchivaStartup | |||
/** | |||
* @plexus.requirement role-hint="default" | |||
*/ | |||
private ConfigurationSynchronization configSync; | |||
private SecuritySynchronization securitySync; | |||
/** | |||
* @plexus.requirement role-hint="default" | |||
@@ -61,7 +61,7 @@ public class ArchivaStartup | |||
try | |||
{ | |||
configSync.startup(); | |||
securitySync.startup(); | |||
resolverFactory.startup(); | |||
taskScheduler.startup(); | |||
} |
@@ -20,15 +20,9 @@ package org.apache.maven.archiva.web.startup; | |||
*/ | |||
import org.apache.maven.archiva.common.ArchivaException; | |||
import org.apache.maven.archiva.common.utils.PathUtil; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ConfigurationNames; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.ObjectNotFoundException; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor; | |||
import org.codehaus.plexus.logging.AbstractLogEnabled; | |||
import org.codehaus.plexus.redback.role.RoleManager; | |||
import org.codehaus.plexus.redback.role.RoleManagerException; | |||
@@ -42,19 +36,14 @@ import java.util.List; | |||
* | |||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> | |||
* @version $Id$ | |||
* @plexus.component role="org.apache.maven.archiva.web.startup.ConfigurationSynchronization" | |||
* | |||
* @plexus.component role="org.apache.maven.archiva.web.startup.SecuritySynchronization" | |||
* role-hint="default" | |||
* @todo consider whether we really need these in the database or not | |||
*/ | |||
public class ConfigurationSynchronization | |||
public class SecuritySynchronization | |||
extends AbstractLogEnabled | |||
implements RegistryListener | |||
{ | |||
/** | |||
* @plexus.requirement role-hint="jdo" | |||
*/ | |||
private ArchivaDAO dao; | |||
/** | |||
* @plexus.requirement role-hint="default" | |||
*/ | |||
@@ -82,37 +71,6 @@ public class ConfigurationSynchronization | |||
{ | |||
for ( ManagedRepositoryConfiguration repoConfig : repos ) | |||
{ | |||
try | |||
{ | |||
try | |||
{ | |||
ArchivaRepository repository = dao.getRepositoryDAO().getRepository( repoConfig.getId() ); | |||
// Found repository. Update it. | |||
repository.getModel().setName( repoConfig.getName() ); | |||
repository.getModel().setUrl( PathUtil.toUrl( repoConfig.getLocation() ) ); | |||
repository.getModel().setLayoutName( repoConfig.getLayout() ); | |||
repository.getModel().setCreationSource( "configuration" ); | |||
repository.getModel().setReleasePolicy( repoConfig.isReleases() ); | |||
repository.getModel().setSnapshotPolicy( repoConfig.isSnapshots() ); | |||
dao.getRepositoryDAO().saveRepository( repository ); | |||
} | |||
catch ( ObjectNotFoundException e ) | |||
{ | |||
// Add the repository to the database. | |||
getLogger().info( "Adding repository configuration to DB: " + repoConfig ); | |||
ArchivaRepository drepo = ArchivaConfigurationAdaptor.toArchivaRepository( repoConfig ); | |||
drepo.getModel().setCreationSource( "configuration" ); | |||
dao.getRepositoryDAO().saveRepository( drepo ); | |||
} | |||
} | |||
catch ( ArchivaDatabaseException e ) | |||
{ | |||
// Log error. | |||
getLogger().error( "Unable to add configured repositories to the database: " + e.getMessage(), e ); | |||
} | |||
// manage roles for repositories | |||
try | |||
{ |
@@ -22,29 +22,32 @@ package org.apache.maven.archiva.web.tags; | |||
import com.opensymphony.webwork.WebWorkException; | |||
import com.opensymphony.webwork.components.Component; | |||
import com.opensymphony.xwork.util.OgnlValueStack; | |||
import org.apache.commons.lang.StringEscapeUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArchivaDatabaseException; | |||
import org.apache.maven.archiva.database.Constraint; | |||
import org.apache.maven.archiva.database.ObjectNotFoundException; | |||
import org.apache.maven.archiva.database.constraints.ArtifactsRelatedConstraint; | |||
import org.apache.maven.archiva.model.ArchivaArtifact; | |||
import org.apache.maven.archiva.model.ArchivaRepository; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; | |||
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; | |||
import org.apache.maven.archiva.repository.layout.LayoutException; | |||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import javax.servlet.jsp.PageContext; | |||
import java.io.IOException; | |||
import java.io.Writer; | |||
import java.text.DecimalFormat; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import javax.servlet.jsp.PageContext; | |||
/** | |||
* DownloadArtifact | |||
* | |||
@@ -60,6 +63,11 @@ public class DownloadArtifact | |||
* @plexus.requirement role-hint="jdo" | |||
*/ | |||
private ArchivaDAO dao; | |||
/** | |||
* @plexus.requirement | |||
*/ | |||
private ArchivaConfiguration archivaConfiguration; | |||
/** | |||
* @plexus.requirement | |||
@@ -110,8 +118,8 @@ public class DownloadArtifact | |||
if ( relatedArtifacts != null ) | |||
{ | |||
String repoId = ( (ArchivaArtifact) relatedArtifacts.get( 0 ) ).getModel().getRepositoryId(); | |||
ArchivaRepository repo = dao.getRepositoryDAO().getRepository( repoId ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( repo.getLayoutType() ); | |||
ManagedRepositoryConfiguration repo = findRepository( repoId ); | |||
BidirectionalRepositoryLayout layout = layoutFactory.getLayout( repo.getLayout() ); | |||
String prefix = req.getContextPath() + "/repository/" + repoId; | |||
@@ -150,18 +158,23 @@ public class DownloadArtifact | |||
return super.end( writer, body ); | |||
} | |||
private ManagedRepositoryConfiguration findRepository( String repoId ) | |||
{ | |||
return archivaConfiguration.getConfiguration().findManagedRepositoryById( repoId ); | |||
} | |||
private void appendError( StringBuffer sb, Exception e ) | |||
{ | |||
/* do nothing */ | |||
} | |||
private void appendMini( StringBuffer sb, String prefix, ArchivaRepository repo, | |||
private void appendMini( StringBuffer sb, String prefix, ManagedRepositoryConfiguration repo, | |||
BidirectionalRepositoryLayout layout, List relatedArtifacts ) | |||
{ | |||
/* do nothing */ | |||
} | |||
private void appendNormal( StringBuffer sb, String prefix, ArchivaRepository repo, | |||
private void appendNormal( StringBuffer sb, String prefix, ManagedRepositoryConfiguration repo, | |||
BidirectionalRepositoryLayout layout, List relatedArtifacts ) | |||
{ | |||
/* |
@@ -1,11 +1,9 @@ | |||
package org.apache.maven.archiva.web.action.admin.repositories; | |||
import junit.framework.Assert; | |||
import org.apache.maven.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.maven.archiva.database.ArchivaDAO; | |||
import org.apache.maven.archiva.database.ArtifactDAO; | |||
import org.apache.maven.archiva.database.ProjectModelDAO; | |||
import org.apache.maven.archiva.database.RepositoryDAO; | |||
import org.apache.maven.archiva.database.RepositoryProblemDAO; | |||
import org.apache.maven.archiva.database.SimpleConstraint; | |||
import org.apache.maven.archiva.model.RepositoryContentStatistics; | |||
@@ -14,6 +12,8 @@ import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import junit.framework.Assert; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
@@ -72,11 +72,6 @@ public class ArchivaDAOStub | |||
throw new UnsupportedOperationException( "query not implemented for stub" ); | |||
} | |||
public RepositoryDAO getRepositoryDAO() | |||
{ | |||
throw new UnsupportedOperationException( "query not implemented for stub" ); | |||
} | |||
public RepositoryProblemDAO getRepositoryProblemDAO() | |||
{ | |||
throw new UnsupportedOperationException( "query not implemented for stub" ); |