Browse Source

Finishing the Repository split work that brett started.

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-ffa450edef68
tags/archiva-1.0-beta-3
Joakim Erdfelt 16 years ago
parent
commit
8af86cd884
85 changed files with 881 additions and 1443 deletions
  1. 4
    0
      archiva-base/archiva-consumers/archiva-consumer-api/pom.xml
  2. 2
    2
      archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java
  3. 5
    5
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
  4. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java
  5. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java
  6. 5
    5
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java
  7. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java
  8. 4
    4
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
  9. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
  10. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
  11. 2
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
  12. 3
    3
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
  13. 20
    24
      archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
  14. 0
    15
      archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml
  15. 5
    5
      archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java
  16. 4
    7
      archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexArtifactConsumer.java
  17. 5
    5
      archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
  18. 6
    16
      archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
  19. 2
    2
      archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
  20. 8
    6
      archiva-base/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java
  21. 2
    2
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryContentIndex.java
  22. 4
    4
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryContentIndexFactory.java
  23. 3
    3
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/BytecodeIndexTransformer.java
  24. 3
    3
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/FileContentIndexTransformer.java
  25. 3
    3
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/HashcodesIndexTransformer.java
  26. 2
    2
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/UserAllowedToSearchRepositoryPredicate.java
  27. 4
    4
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java
  28. 6
    7
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java
  29. 1
    2
      archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java
  30. 14
    9
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/AbstractIndexerTestCase.java
  31. 2
    2
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/bytecode/BytecodeIndexTest.java
  32. 2
    2
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/bytecode/BytecodeSearchTest.java
  33. 2
    2
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/hashcodes/HashcodesIndexTest.java
  34. 2
    2
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/hashcodes/HashcodesSearchTest.java
  35. 10
    6
      archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java
  36. 0
    137
      archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java
  37. 4
    125
      archiva-base/archiva-model/src/main/mdo/archiva-base.xml
  38. 84
    61
      archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
  39. 8
    7
      archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java
  40. 6
    6
      archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/RepositoryProxyConnectors.java
  41. 44
    41
      archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
  42. 0
    48
      archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java
  43. 2
    2
      archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java
  44. 8
    11
      archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java
  45. 1
    1
      archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/WagonDelegate.java
  46. 0
    67
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaConfigurationAdaptor.java
  47. 6
    5
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
  48. 24
    23
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
  49. 7
    10
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolverFactory.java
  50. 6
    6
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/ManagedRepositoryProjectResolver.java
  51. 28
    49
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/DefaultRepositoryScanner.java
  52. 53
    100
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java
  53. 144
    0
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanStatistics.java
  54. 11
    11
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java
  55. 15
    13
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
  56. 3
    3
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java
  57. 54
    0
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AbstractRepositoryLayerTestCase.java
  58. 10
    8
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java
  59. 71
    48
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java
  60. 6
    7
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java
  61. 2
    2
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java
  62. 2
    2
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java
  63. 4
    4
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.java
  64. 14
    20
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerTest.java
  65. 2
    2
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java
  66. 2
    2
      archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java
  67. 8
    4
      archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java
  68. 4
    4
      archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java
  69. 0
    2
      archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
  70. 0
    71
      archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryDAO.java
  71. 0
    11
      archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
  72. 0
    118
      archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryDAO.java
  73. 2
    1
      archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAOTest.java
  74. 0
    96
      archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryDAOTest.java
  75. 7
    9
      archiva-reporting/archiva-artifact-reports/src/main/java/org/apache/maven/archiva/reporting/artifact/LocationArtifactsConsumer.java
  76. 18
    14
      archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
  77. 11
    18
      archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.java
  78. 17
    19
      archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.java
  79. 5
    5
      archiva-scheduled/src/test/resources/archiva-test.xml
  80. 2
    3
      archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml
  81. 8
    15
      archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
  82. 2
    2
      archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
  83. 3
    45
      archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java
  84. 21
    8
      archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java
  85. 2
    7
      archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java

+ 4
- 0
archiva-base/archiva-consumers/archiva-consumer-api/pom.xml View File

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

+ 2
- 2
archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java View File

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

+ 5
- 5
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java View File

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

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java View File

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

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java View File

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

+ 5
- 5
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java View File

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

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java View File

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

+ 4
- 4
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java View File

@@ -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" ) )
{

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java View File

@@ -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() )
{

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java View File

@@ -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() )
{

+ 2
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java View File

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

+ 3
- 3
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java View File

@@ -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() )
{

+ 20
- 24
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java View File

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

+ 0
- 15
archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml View File

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

+ 5
- 5
archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java View File

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

+ 4
- 7
archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexArtifactConsumer.java View File

@@ -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 );
}
}
}

+ 5
- 5
archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java View File

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

+ 6
- 16
archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java View File

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

+ 2
- 2
archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java View File

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


+ 8
- 6
archiva-base/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java View File

@@ -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 );
}

+ 2
- 2
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryContentIndex.java View File

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

+ 4
- 4
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryContentIndexFactory.java View File

@@ -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 );
}

+ 3
- 3
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/BytecodeIndexTransformer.java View File

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

+ 3
- 3
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/FileContentIndexTransformer.java View File

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

+ 3
- 3
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/HashcodesIndexTransformer.java View File

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

+ 2
- 2
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/functors/UserAllowedToSearchRepositoryPredicate.java View File

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

+ 4
- 4
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java View File

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

+ 6
- 7
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java View File

@@ -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 += "/";

+ 1
- 2
archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java View File

@@ -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 );
}
}
}

+ 14
- 9
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/AbstractIndexerTestCase.java View File

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

+ 2
- 2
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/bytecode/BytecodeIndexTest.java View File

@@ -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 );
}

+ 2
- 2
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/bytecode/BytecodeSearchTest.java View File

@@ -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 );
}

+ 2
- 2
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/hashcodes/HashcodesIndexTest.java View File

@@ -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 );
}

+ 2
- 2
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/hashcodes/HashcodesSearchTest.java View File

@@ -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 );
}

+ 10
- 6
archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java View File

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

+ 0
- 137
archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java View File

@@ -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();
}
}

+ 4
- 125
archiva-base/archiva-model/src/main/mdo/archiva-base.xml View File

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

+ 84
- 61
archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java View File

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

+ 8
- 7
archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java View File

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

+ 6
- 6
archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/RepositoryProxyConnectors.java View File

@@ -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 );
}

+ 44
- 41
archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java View File

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


+ 0
- 48
archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java View File

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

+ 2
- 2
archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java View File

@@ -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();

+ 8
- 11
archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java View File

@@ -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();

+ 1
- 1
archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/WagonDelegate.java View File

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

+ 0
- 67
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaConfigurationAdaptor.java View File

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

+ 6
- 5
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java View File

@@ -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
- 23
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java View File

@@ -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() )
{

+ 7
- 10
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolverFactory.java View File

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

archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/RepositoryProjectResolver.java → archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/ManagedRepositoryProjectResolver.java View File

@@ -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 );
}

+ 28
- 49
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/DefaultRepositoryScanner.java View File

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

+ 53
- 100
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java View File

@@ -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 );
*/
}
}


+ 144
- 0
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanStatistics.java View File

@@ -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();
}
}

+ 11
- 11
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java View File

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

+ 15
- 13
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java View File

@@ -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();
}


+ 3
- 3
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java View File

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

+ 54
- 0
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AbstractRepositoryLayerTestCase.java View File

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

+ 10
- 8
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java View File

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


+ 71
- 48
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java View File

@@ -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();

+ 6
- 7
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java View File

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

+ 2
- 2
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java View File

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

+ 2
- 2
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java View File

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

+ 4
- 4
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.java View File

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

+ 14
- 20
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerTest.java View File

@@ -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();

+ 2
- 2
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java View File

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

+ 2
- 2
archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java View File

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

+ 8
- 4
archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java View File

@@ -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 ) );
}

+ 4
- 4
archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java View File

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

+ 0
- 2
archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java View File

@@ -52,7 +52,5 @@ public interface ArchivaDAO

ProjectModelDAO getProjectModelDAO();

RepositoryDAO getRepositoryDAO();

RepositoryProblemDAO getRepositoryProblemDAO();
}

+ 0
- 71
archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryDAO.java View File

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

+ 0
- 11
archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java View File

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

+ 0
- 118
archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryDAO.java View File

@@ -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() );
}
}

+ 2
- 1
archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAOTest.java View File

@@ -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() );
}
}

+ 0
- 96
archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryDAOTest.java View File

@@ -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() );
}
}

+ 7
- 9
archiva-reporting/archiva-artifact-reports/src/main/java/org/apache/maven/archiva/reporting/artifact/LocationArtifactsConsumer.java View File

@@ -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() );
}
}
}

+ 18
- 14
archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java View File

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

+ 11
- 18
archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.java View File

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

+ 17
- 19
archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.java View File

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

+ 5
- 5
archiva-scheduled/src/test/resources/archiva-test.xml View File

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


+ 2
- 3
archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml View File

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

+ 8
- 15
archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java View File

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

+ 2
- 2
archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java View File

@@ -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();
}

archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java → archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java View File

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

+ 21
- 8
archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java View File

@@ -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 )
{
/*

+ 2
- 7
archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java View File

@@ -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" );

Loading…
Cancel
Save