You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2017/11/01 21:55:54 UTC
[2/2] archiva git commit: Refactoring the repository content factory
Refactoring the repository content factory
Adding content provider service that creates repository content instances
remove direct access to the repository content instances.
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/97b2c9c9
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/97b2c9c9
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/97b2c9c9
Branch: refs/heads/master
Commit: 97b2c9c9095b95500ab15caaf447369ed9251f08
Parents: dfbe05b
Author: Martin Stockhammer <ma...@apache.org>
Authored: Wed Nov 1 22:52:14 2017 +0100
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Wed Nov 1 22:52:14 2017 +0100
----------------------------------------------------------------------
.../src/test/resources/spring-context.xml | 4 +-
.../repository/AbstractRepositoryPurgeTest.java | 6 +-
.../mock/ManagedRepositoryContentMock.java | 181 -------------------
.../mock/RemoteRepositoryContentMock.java | 78 --------
...pring-context-cleanup-released-snapshots.xml | 3 +-
.../src/test/resources/spring-context.xml | 1 -
.../legacy/LegacyConverterArtifactConsumer.java | 10 +-
.../src/test/resources/spring-context.xml | 5 -
.../archiva/proxy/AbstractProxyTestCase.java | 5 +-
.../archiva/proxy/HttpProxyTransferTest.java | 5 +-
.../src/test/resources/spring-context.xml | 4 +-
.../src/test/resources/spring-context.xml | 3 -
.../repository/ManagedRepositoryContent.java | 26 +--
.../repository/RemoteRepositoryContent.java | 21 +--
.../archiva/repository/RepositoryContent.java | 52 ++++++
.../repository/RepositoryContentFactory.java | 86 +++++----
.../repository/RepositoryContentProvider.java | 82 +++++++++
.../archiva/repository/RepositoryRegistry.java | 4 +-
.../src/test/resources/spring-context.xml | 3 -
.../src/test/resources/spring-context.xml | 4 -
.../resources/META-INF/spring-context-test.xml | 3 -
.../src/test/resources/spring-context.xml | 3 -
.../spring-context-artifacts-download.xml | 5 -
.../spring-context-merge-index-download.xml | 4 -
.../resources/spring-context-rss-servlet.xml | 6 +-
.../resources/spring-context-test-common.xml | 4 +-
.../test/resources/spring-context-with-jcr.xml | 4 -
.../webdav/ArchivaDavResourceFactoryTest.java | 70 ++++++-
.../spring-context-servlet-security-test.xml | 5 +-
.../src/test/resources/spring-context.xml | 5 +-
.../AbstractDefaultRepositoryContent.java | 19 +-
.../maven2/ManagedDefaultRepositoryContent.java | 27 +--
.../content/maven2/MavenContentProvider.java | 123 +++++++++++++
.../maven2/RemoteDefaultRepositoryContent.java | 10 +-
.../ManagedDefaultRepositoryContentTest.java | 9 +-
.../RemoteDefaultRepositoryContentTest.java | 7 +-
.../AbstractRepositoryLayerTestCase.java | 8 +-
.../content/maven2/RepositoryRequestTest.java | 6 +-
.../repository/metadata/MetadataToolsTest.java | 12 +-
.../resources/spring-context-no-mock-conf.xml | 2 -
.../spring-context-repo-request-test.xml | 4 -
.../src/test/resources/spring-context.xml | 1 -
42 files changed, 474 insertions(+), 446 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/resources/spring-context.xml
index b5ff215..56894fc 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/resources/spring-context.xml
@@ -32,10 +32,8 @@
<mockito:mock id="mockManagedRepositoryAdmin" class="org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin" />
<mockito:mock id="mockRemoteRepositoryAdmin" class="org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin" />
- <context:component-scan base-package="org.apache.archiva.repository.mock,org.apache.archiva.repository.content.maven2,$package"/>
+ <context:component-scan base-package="org.apache.archiva.repository.mock,org.apache.archiva.repository.content.maven2"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
<alias name="mockRepositoryProvider" alias="mavenRepositoryProvider" />
<alias alias="repositorySessionFactory#jcr" name="repositorySessionFactory#file" />
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
index b0e9a98..d65d1a4 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
@@ -27,6 +27,7 @@ import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPat
import org.apache.archiva.repository.BasicManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.ReleaseScheme;
+import org.apache.archiva.repository.RepositoryContentProvider;
import org.apache.archiva.repository.events.RepositoryListener;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
@@ -184,8 +185,9 @@ public abstract class AbstractRepositoryPurgeTest
{
if ( repo == null )
{
- repo = applicationContext.getBean( "managedRepositoryContent#default", ManagedRepositoryContent.class );
- repo.setRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) );
+ org.apache.archiva.repository.ManagedRepository repoCfg = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
+ RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class );
+ repo = provider.createManagedContent( repoCfg );
}
return repo;
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
deleted file mode 100644
index 9a53bf2..0000000
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.apache.archiva.repository.mock;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.archiva.model.ArchivaArtifact;
-import org.apache.archiva.model.ArtifactReference;
-import org.apache.archiva.model.ProjectReference;
-import org.apache.archiva.model.VersionedReference;
-import org.apache.archiva.repository.ContentNotFoundException;
-import org.apache.archiva.repository.ManagedRepository;
-import org.apache.archiva.repository.ManagedRepositoryContent;
-import org.apache.archiva.repository.RepositoryException;
-import org.apache.archiva.repository.layout.LayoutException;
-import org.springframework.stereotype.Service;
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Set;
-
-/**
- * @author Martin Stockhammer <ma...@apache.org>
- */
-@Service("managedRepositoryContent#mock")
-public class ManagedRepositoryContentMock implements ManagedRepositoryContent
-{
- private ManagedRepository repository;
-
- @Override
- public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException
- {
-
- }
-
- @Override
- public void deleteArtifact( ArtifactReference artifactReference ) throws ContentNotFoundException
- {
-
- }
-
- @Override
- public void deleteGroupId( String groupId ) throws ContentNotFoundException
- {
-
- }
-
- @Override
- public void deleteProject( String namespace, String projectId ) throws RepositoryException
- {
-
- }
-
- @Override
- public String getId( )
- {
- return null;
- }
-
- @Override
- public Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference ) throws ContentNotFoundException
- {
- return null;
- }
-
- @Override
- public String getRepoRoot()
- {
- return convertUriToPath( repository.getLocation() );
- }
-
- private String convertUriToPath( URI uri ) {
- if (uri.getScheme()==null) {
- return Paths.get(uri.getPath()).toString();
- } else if ("file".equals(uri.getScheme())) {
- return Paths.get(uri).toString();
- } else {
- return uri.toString();
- }
- }
-
- @Override
- public ManagedRepository getRepository( )
- {
- return repository;
- }
-
- @Override
- public Set<String> getVersions( ProjectReference reference ) throws ContentNotFoundException, LayoutException
- {
- return null;
- }
-
- @Override
- public Set<String> getVersions( VersionedReference reference ) throws ContentNotFoundException
- {
- return null;
- }
-
- @Override
- public boolean hasContent( ArtifactReference reference )
- {
- return false;
- }
-
- @Override
- public boolean hasContent( ProjectReference reference )
- {
- return false;
- }
-
- @Override
- public boolean hasContent( VersionedReference reference )
- {
- return false;
- }
-
- @Override
- public void setRepository( ManagedRepository repo )
- {
- this.repository = repo;
- }
-
- @Override
- public ArtifactReference toArtifactReference( String path ) throws LayoutException
- {
- return null;
- }
-
- @Override
- public Path toFile( ArtifactReference reference )
- {
- return null;
- }
-
- @Override
- public Path toFile( ArchivaArtifact reference )
- {
- return null;
- }
-
- @Override
- public String toMetadataPath( ProjectReference reference )
- {
- return null;
- }
-
- @Override
- public String toMetadataPath( VersionedReference reference )
- {
- return null;
- }
-
- @Override
- public String toPath( ArtifactReference reference )
- {
- return null;
- }
-
- @Override
- public String toPath( ArchivaArtifact reference )
- {
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java
deleted file mode 100644
index 238b0cf..0000000
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.apache.archiva.repository.mock;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.archiva.model.ArtifactReference;
-import org.apache.archiva.model.RepositoryURL;
-import org.apache.archiva.repository.RemoteRepository;
-import org.apache.archiva.repository.RemoteRepositoryContent;
-import org.apache.archiva.repository.layout.LayoutException;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Martin Stockhammer <ma...@apache.org>
- */
-@Service("remoteRepositoryContent#mock")
-public class RemoteRepositoryContentMock implements RemoteRepositoryContent
-{
- RemoteRepository repository;
-
- @Override
- public String getId( )
- {
- return null;
- }
-
- @Override
- public RemoteRepository getRepository( )
- {
- return null;
- }
-
- @Override
- public RepositoryURL getURL( )
- {
- return null;
- }
-
- @Override
- public void setRepository( RemoteRepository repo )
- {
- this.repository = repo;
- }
-
- @Override
- public ArtifactReference toArtifactReference( String path ) throws LayoutException
- {
- return null;
- }
-
- @Override
- public String toPath( ArtifactReference reference )
- {
- return null;
- }
-
- @Override
- public RepositoryURL toURL( ArtifactReference reference )
- {
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml
index c6fa2a1..5119c55 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml
@@ -32,9 +32,8 @@
</bean>
<alias name="archivaConfiguration#cleanup-released-snapshots" alias="archivaConfiguration"/>
<alias name="archivaConfiguration#cleanup-released-snapshots" alias="archivaConfiguration#default"/>
- <context:component-scan base-package="org.apache.archiva.repository.mock,org.apache.archiva.repository.content.maven2"/>
+ <context:component-scan base-package="org.apache.archiva.configuration,org.apache.archiva.repository.content.maven2"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
<alias name="repositoryContentFactory#cleanup-released-snapshots" alias="repositoryContentFactory#default" />
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context.xml
index 360e20d..e63eb7a 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context.xml
@@ -44,7 +44,6 @@
</property>
</bean>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
<alias name="userConfiguration#redback" alias="userConfiguration#default"/>
<!-- ***
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/LegacyConverterArtifactConsumer.java b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
index 7fb542e..9cdde0a 100644
--- a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
+++ b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
@@ -21,11 +21,13 @@ package org.apache.archiva.converter.legacy;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
+import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.consumers.AbstractMonitoredConsumer;
import org.apache.archiva.consumers.ConsumerException;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.converter.artifact.ArtifactConversionException;
import org.apache.archiva.converter.artifact.ArtifactConverter;
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
@@ -63,6 +65,12 @@ public class LegacyConverterArtifactConsumer
@Named("artifactConverter#legacy-to-default")
private ArtifactConverter artifactConverter;
+ @Inject
+ private List<? extends ArtifactMappingProvider> artifactMappingProviders;
+
+ @Inject
+ private FileTypes fileTypes;
+
private ArtifactFactory artifactFactory;
private ManagedRepositoryContent managedRepository;
@@ -88,7 +96,7 @@ public class LegacyConverterArtifactConsumer
public void beginScan( org.apache.archiva.repository.ManagedRepository repository, Date whenGathered )
throws ConsumerException
{
- this.managedRepository = new ManagedDefaultRepositoryContent();
+ this.managedRepository = new ManagedDefaultRepositoryContent(artifactMappingProviders, fileTypes);
this.managedRepository.setRepository( repository );
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-indexer/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/spring-context.xml
index 4877906..e0bf5c4 100644
--- a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/spring-context.xml
@@ -28,11 +28,6 @@
default-lazy-init="false">
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java
index 2a43b86..c4bfff3 100644
--- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java
+++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java
@@ -36,6 +36,7 @@ import org.apache.archiva.policies.ReleasesPolicy;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.apache.archiva.proxy.model.RepositoryProxyConnectors;
import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.RepositoryContentProvider;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.maven2.MavenManagedRepository;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
@@ -357,9 +358,9 @@ public abstract class AbstractProxyTestCase
repo.setLocation( new URI(path) );
repo.setLayout( layout );
+ RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class );
ManagedRepositoryContent repoContent =
- applicationContext.getBean( "managedRepositoryContent#" + layout, ManagedRepositoryContent.class );
- repoContent.setRepository( repo );
+ provider.createManagedContent( repo );
return repoContent;
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
index 8b8d08e..3980d87 100644
--- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
+++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
@@ -23,6 +23,7 @@ import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin;
import org.apache.archiva.proxy.model.RepositoryProxyConnectors;
+import org.apache.archiva.repository.RepositoryContentProvider;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.maven2.MavenManagedRepository;
import org.apache.commons.io.FileUtils;
@@ -126,10 +127,10 @@ public class HttpProxyTransferTest
repo.setLocation( new URI(repoPath) );
repo.setLayout( "default" );
+ RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class );
ManagedRepositoryContent repoContent =
- applicationContext.getBean( "managedRepositoryContent#default", ManagedRepositoryContent.class );
+ provider.createManagedContent( repo );
- repoContent.setRepository( repo );
managedDefaultRepository = repoContent;
( (DefaultManagedRepositoryAdmin) applicationContext.getBean(
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml
index 6ec124f..baef8a5 100755
--- a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml
@@ -28,9 +28,7 @@
default-lazy-init="true">
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.metadata.repository,org.apache.archiva.repository.content.maven2,org.apache.archiva.proxy,org.apache.archiva.repository.mock"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+ <context:component-scan base-package="org.apache.archiva.metadata.repository,org.apache.archiva.proxy,org.apache.archiva.repository.mock"/>
<alias name="mockRepositoryProvider" alias="mavenRepositoryProvider" />
<alias name="archivaConfiguration#mock" alias="archivaConfiguration#default"/>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/resources/spring-context.xml
index a2670af..dd261eb 100644
--- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/resources/spring-context.xml
@@ -33,9 +33,6 @@
<context:annotation-config/>
<context:component-scan base-package="org.apache.archiva.admin.mock,org.apache.archiva.repository.content.maven2"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
<props>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
index c209c38..5baf32f 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
@@ -32,8 +32,11 @@ import java.util.Set;
* ManagedRepositoryContent interface for interacting with a managed repository in an abstract way,
* without the need for processing based on filesystem paths, or working with the database.
*/
-public interface ManagedRepositoryContent
+public interface ManagedRepositoryContent extends RepositoryContent
{
+
+
+
/**
* Delete from the managed repository all files / directories associated with the
* provided version reference.
@@ -117,7 +120,7 @@ public interface ManagedRepositoryContent
*
* @return the repository that is associated with this repository content.
*/
- org.apache.archiva.repository.ManagedRepository getRepository();
+ ManagedRepository getRepository();
/**
* Given a specific {@link ProjectReference}, return the list of available versions for
@@ -180,17 +183,6 @@ public interface ManagedRepositoryContent
void setRepository( org.apache.archiva.repository.ManagedRepository repo );
/**
- * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
- *
- * @param path the path relative to the repository base dir for the artifact.
- * @return the {@link ArtifactReference} representing the path. (or null if path cannot be converted to
- * a {@link ArtifactReference})
- * @throws LayoutException if there was a problem converting the path to an artifact.
- */
- ArtifactReference toArtifactReference( String path )
- throws LayoutException;
-
- /**
* Given an {@link ArtifactReference}, return the file reference to the artifact.
*
* @param reference the artifact reference to use.
@@ -225,14 +217,6 @@ public interface ManagedRepositoryContent
String toMetadataPath( VersionedReference reference );
/**
- * Given an {@link ArtifactReference}, return the relative path to the artifact.
- *
- * @param reference the artifact reference to use.
- * @return the relative path to the artifact.
- */
- String toPath( ArtifactReference reference );
-
- /**
* Given an {@link ArchivaArtifact}, return the relative path to the artifact.
*
* @param reference the archiva artifact to use.
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java
index 6745dd8..7002d7e 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java
@@ -29,7 +29,7 @@ import org.apache.archiva.repository.layout.LayoutException;
*
*
*/
-public interface RemoteRepositoryContent
+public interface RemoteRepositoryContent extends RepositoryContent
{
/**
* <p>
@@ -74,25 +74,6 @@ public interface RemoteRepositoryContent
void setRepository( RemoteRepository repo );
/**
- * Given a repository relative path to a filename, return the {@link org.apache.archiva.model.VersionedReference} object suitable for the path.
- *
- * @param path the path relative to the repository base dir for the artifact.
- * @return the {@link ArtifactReference} representing the path. (or null if path cannot be converted to
- * a {@link ArtifactReference})
- * @throws LayoutException if there was a problem converting the path to an artifact.
- */
- ArtifactReference toArtifactReference( String path )
- throws LayoutException;
-
- /**
- * Given an ArtifactReference, return the relative path to the artifact.
- *
- * @param reference the artifact reference to use.
- * @return the relative path to the artifact.
- */
- String toPath( ArtifactReference reference );
-
- /**
* Given an ArtifactReference, return the url to the artifact.
*
* @param reference the artifact reference to use.
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java
new file mode 100644
index 0000000..2ceedec
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java
@@ -0,0 +1,52 @@
+package org.apache.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.archiva.model.ArtifactReference;
+import org.apache.archiva.model.VersionedReference;
+import org.apache.archiva.repository.layout.LayoutException;
+
+
+/**
+ * Common aspects of content provider interfaces
+ */
+public interface RepositoryContent
+{
+
+
+ /**
+ * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
+ *
+ * @param path the path relative to the repository base dir for the artifact.
+ * @return the {@link ArtifactReference} representing the path. (or null if path cannot be converted to
+ * a {@link ArtifactReference})
+ * @throws LayoutException if there was a problem converting the path to an artifact.
+ */
+ ArtifactReference toArtifactReference( String path )
+ throws LayoutException;
+
+ /**
+ * Given an {@link ArtifactReference}, return the relative path to the artifact.
+ *
+ * @param reference the artifact reference to use.
+ * @return the relative path to the artifact.
+ */
+ String toPath( ArtifactReference reference );
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java
index 5547458..65d54e6 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -49,6 +50,9 @@ public class RepositoryContentFactory
@Inject
private ApplicationContext applicationContext;
+ @Inject
+ private List<RepositoryContentProvider> repositoryContentProviders;
+
private final Map<String, ManagedRepositoryContent> managedContentMap;
private final Map<String, RemoteRepositoryContent> remoteContentMap;
@@ -69,7 +73,7 @@ public class RepositoryContentFactory
* @throws RepositoryException the repository content object cannot be loaded due to configuration issue.
*/
public ManagedRepositoryContent getManagedRepositoryContent( String repoId )
- throws RepositoryNotFoundException, RepositoryException
+ throws RepositoryException
{
ManagedRepositoryContent repo = managedContentMap.get( repoId );
@@ -85,33 +89,38 @@ public class RepositoryContentFactory
}
- public ManagedRepositoryContent getManagedRepositoryContent( ManagedRepositoryConfiguration repoConfig, org.apache.archiva.repository.ManagedRepository mRepo )
- throws RepositoryNotFoundException, RepositoryException
+ private RepositoryContentProvider getProvider(final String layout, final RepositoryType repoType) throws RepositoryException
+ {
+ return repositoryContentProviders.stream().filter(p->p.supports( repoType ) && p.supportsLayout( layout )).
+ findFirst().orElseThrow( ( ) -> new RepositoryException( "Could not find content provider for repository type "+repoType+" and layout "+layout ) );
+ }
+
+ public ManagedRepositoryContent getManagedRepositoryContent( org.apache.archiva.repository.ManagedRepository mRepo )
+ throws RepositoryException
{
- ManagedRepositoryContent repo = managedContentMap.get( repoConfig.getId( ) );
+ final String id = mRepo.getId();
+ ManagedRepositoryContent content = managedContentMap.get( id );
- if ( repo != null && repo.getRepository()==mRepo)
+ if ( content != null && content.getRepository()==mRepo)
{
- return repo;
+ return content;
}
- repo = applicationContext.getBean( "managedRepositoryContent#" + repoConfig.getLayout( ),
- ManagedRepositoryContent.class );
- repo.setRepository( mRepo );
- ManagedRepositoryContent previousRepo = managedContentMap.put( repoConfig.getId( ), repo );
- if (previousRepo!=null) {
- ManagedRepository previousMRepo = previousRepo.getRepository( );
- if (previousMRepo!=null && previousMRepo instanceof EditableManagedRepository) {
- ((EditableManagedRepository)previousMRepo).setContent( null );
- }
- previousRepo.setRepository( null );
+ RepositoryContentProvider contentProvider = getProvider( mRepo.getLayout( ), mRepo.getType( ) );
+ content = contentProvider.createManagedContent( mRepo );
+ if (content==null) {
+ throw new RepositoryException( "Could not create repository content instance for "+mRepo.getId() );
+ }
+ ManagedRepositoryContent previousContent = managedContentMap.put( id, content );
+ if (previousContent!=null) {
+ previousContent.setRepository( null );
}
- return repo;
+ return content;
}
public RemoteRepositoryContent getRemoteRepositoryContent( String repoId )
- throws RepositoryNotFoundException, RepositoryException
+ throws RepositoryException
{
RemoteRepositoryContent repo = remoteContentMap.get( repoId );
@@ -127,30 +136,27 @@ public class RepositoryContentFactory
}
- public RemoteRepositoryContent getRemoteRepositoryContent( RemoteRepositoryConfiguration repoConfig, RemoteRepository mRepo )
- throws RepositoryNotFoundException, RepositoryException
+ public RemoteRepositoryContent getRemoteRepositoryContent( RemoteRepository mRepo )
+ throws RepositoryException
{
- RemoteRepositoryContent repo = remoteContentMap.get( repoConfig.getId( ) );
+ final String id = mRepo.getId();
+ RemoteRepositoryContent content = remoteContentMap.get( id );
- if ( repo != null && repo.getRepository()==mRepo)
+ if ( content != null && content.getRepository()==mRepo)
{
- return repo;
+ return content;
}
- repo = applicationContext.getBean( "remoteRepositoryContent#" + repoConfig.getLayout( ),
- RemoteRepositoryContent.class );
- repo.setRepository( mRepo );
- RemoteRepositoryContent previousRepo = remoteContentMap.put( repoConfig.getId( ), repo );
- if (previousRepo!=null) {
- RemoteRepository previousMRepo = previousRepo.getRepository( );
- if (previousMRepo!=null && previousMRepo instanceof EditableRemoteRepository) {
- ((EditableRemoteRepository)previousMRepo).setContent( null );
- }
- previousRepo.setRepository( null );
+ RepositoryContentProvider contentProvider = getProvider( mRepo.getLayout( ), mRepo.getType( ) );
+ content = contentProvider.createRemoteContent( mRepo );
+ if (content==null) {
+ throw new RepositoryException( "Could not create repository content instance for "+mRepo.getId() );
}
-
-
- return repo;
+ RemoteRepositoryContent previousContent = remoteContentMap.put( id, content );
+ if (previousContent!=null) {
+ previousContent.setRepository( null );
+ }
+ return content;
}
@@ -199,4 +205,12 @@ public class RepositoryContentFactory
{
this.archivaConfiguration = archivaConfiguration;
}
+
+ public void setRepositoryContentProviders(List<RepositoryContentProvider> providers) {
+ this.repositoryContentProviders = providers;
+ }
+
+ public List<RepositoryContentProvider> getRepositoryContentProviders() {
+ return repositoryContentProviders;
+ }
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentProvider.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentProvider.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentProvider.java
new file mode 100644
index 0000000..8234449
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentProvider.java
@@ -0,0 +1,82 @@
+package org.apache.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 java.util.Set;
+
+/**
+ * A repository content provider creates repository content instances for specific repository types.
+ */
+public interface RepositoryContentProvider
+{
+ /**
+ * Returns true, if this content object supports the given layout otherwise, false.
+ * @param layout the layout string
+ * @return true, if layout is supported, otherwise false.
+ */
+ boolean supportsLayout(String layout);
+
+ /**
+ * Returns the repository types, this content object can be used for.
+ *
+ * @return all supported repository types.
+ */
+ Set<RepositoryType> getSupportedRepositoryTypes();
+
+
+ /**
+ * Returns true, if this content object supports the given repository type.
+ *
+ * @param type the type to check.
+ * @return true, if the type is supported, otherwise false.
+ */
+ boolean supports(RepositoryType type);
+
+ /**
+ * Creates a new instance of RemoteRepositoryContent. The returned instance should be initialized
+ * from the given repository data.
+ *
+ * @param repository the repository
+ * @return a repository content instance
+ * @throws RepositoryException if the layout is not supported, or a error occured during initialization
+ */
+ RemoteRepositoryContent createRemoteContent(RemoteRepository repository) throws RepositoryException;
+
+ /**
+ * Creates a new instance of ManagedRepositoryContent.
+ *
+ * @param repository the repository
+ * @return a new instance
+ * @throws RepositoryException if the layout is not supported, or a error occured during initialization
+ */
+ ManagedRepositoryContent createManagedContent(ManagedRepository repository) throws RepositoryException;
+
+ /**
+ * Creates a generic content object.
+ *
+ * @param repository the repository
+ * @param clazz the content class
+ * @param <T> the generic type of the content
+ * @param <V> the generic type of the repository (must correspond to the content class)
+ * @return a new instance
+ * @throws RepositoryException if the clazz, or layout is not supported, or something went wrong during initialization
+ */
+ <T extends RepositoryContent, V extends Repository> T createContent(Class<T> clazz, V repository) throws RepositoryException;
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
index 385cd16..e1d4787 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
@@ -191,7 +191,7 @@ public class RepositoryRegistry implements ConfigurationListener {
}
if ( repo instanceof EditableManagedRepository && repo.getContent() == null)
{
- ( (EditableManagedRepository) repo ).setContent( repositoryContentFactory.getManagedRepositoryContent( cfg, repo ) );
+ ( (EditableManagedRepository) repo ).setContent( repositoryContentFactory.getManagedRepositoryContent( repo ) );
}
}
@@ -265,7 +265,7 @@ public class RepositoryRegistry implements ConfigurationListener {
{
if ( repo instanceof EditableRemoteRepository && repo.getContent() == null)
{
- ( (EditableRemoteRepository) repo ).setContent( repositoryContentFactory.getRemoteRepositoryContent( cfg, repo ) );
+ ( (EditableRemoteRepository) repo ).setContent( repositoryContentFactory.getRemoteRepositoryContent( repo ) );
}
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
index adec67c..fc6f65a 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
@@ -27,9 +27,6 @@
<context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
<props>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/spring-context.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/spring-context.xml
index 4b4b0df..47127b6 100755
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/spring-context.xml
@@ -28,10 +28,6 @@
default-lazy-init="false">
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.metadata.repository,org.apache.archiva.repository.content.maven2"/>
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
<bean name="managedRepoAdmin#test" class="org.apache.archiva.mock.MockManagedRepositoryAdmin">
<property name="archivaConfiguration" ref="archivaConfiguration#test-repository-scanning"/>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
index d77b845..ebf958b 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
@@ -34,9 +34,6 @@
<context:component-scan
base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils,org.apache.archiva.repository.content.maven2"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
<props>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml b/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
index fcc22ae..6965148 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
@@ -27,9 +27,6 @@
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
default-lazy-init="true">
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="securitySystem#testable" class="org.apache.archiva.redback.system.DefaultSecuritySystem">
<property name="userManager" ref="userManager#memory"/>
<property name="keyManager" ref="keyManager#memory"/>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
index cdec7b4..570eeb5 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
@@ -30,11 +30,6 @@
<context:property-placeholder system-properties-mode="OVERRIDE"/>
- <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
<bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry">
<property name="properties">
<value>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
index 7388de1..7a06a88 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
@@ -29,10 +29,6 @@
default-lazy-init="true">
<context:property-placeholder system-properties-mode="OVERRIDE"/>
- <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
<bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
index e35f0ac..5f9f771 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
@@ -30,11 +30,7 @@
<context:property-placeholder system-properties-mode="OVERRIDE"/>
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.webtest.memory,org.apache.archiva.repository.content.maven2"/>
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
+ <context:component-scan base-package="org.apache.archiva.webtest.memory"/>
<alias name="repositorySessionFactory#test" alias="repositorySessionFactory"/>
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
index d7083d2..d62446b 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
@@ -29,9 +29,7 @@
<context:annotation-config/>
<context:component-scan
- base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils,org.apache.archiva.repository.content.maven2"/>
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+ base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/>
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
index 7eb9645..f29dbcb 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
@@ -37,10 +37,6 @@
</bean>
-->
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
-
-
<alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/>
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
index ba1fdeb..1c56a04 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
@@ -31,13 +31,22 @@ import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
+import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.proxy.DefaultRepositoryProxyConnectors;
import org.apache.archiva.proxy.model.ProxyFetchResult;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.RemoteRepository;
+import org.apache.archiva.repository.RemoteRepositoryContent;
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryContent;
import org.apache.archiva.repository.RepositoryContentFactory;
+import org.apache.archiva.repository.RepositoryContentProvider;
+import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryRegistry;
+import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
import org.apache.archiva.repository.content.maven2.RepositoryRequest;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
@@ -62,8 +71,10 @@ import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
+import java.util.Set;
import static org.easymock.EasyMock.*;
@@ -128,6 +139,12 @@ public class ArchivaDavResourceFactoryTest
@Inject
DefaultRepositoryGroupAdmin defaultRepositoryGroupAdmin;
+ @Inject
+ List<? extends ArtifactMappingProvider> artifactMappingProviders;
+
+ @Inject
+ FileTypes fileTypes;
+
@Before
@Override
@@ -215,7 +232,7 @@ public class ArchivaDavResourceFactoryTest
private ManagedRepositoryContent createManagedRepositoryContent( String repoId )
throws RepositoryAdminException
{
- ManagedRepositoryContent repoContent = new ManagedDefaultRepositoryContent();
+ ManagedRepositoryContent repoContent = new ManagedDefaultRepositoryContent(artifactMappingProviders, fileTypes);
org.apache.archiva.repository.ManagedRepository repo = repositoryRegistry.getManagedRepository( repoId );
repoContent.setRepository( repo );
if (repo!=null && repo instanceof EditableManagedRepository)
@@ -225,6 +242,52 @@ public class ArchivaDavResourceFactoryTest
return repoContent;
}
+ private RepositoryContentProvider createRepositoryContentProvider(ManagedRepositoryContent content) {
+ Set<RepositoryType> TYPES = new HashSet<>( );
+ TYPES.add(RepositoryType.MAVEN);
+ return new RepositoryContentProvider( )
+ {
+
+
+ @Override
+ public boolean supportsLayout( String layout )
+ {
+ return true;
+ }
+
+ @Override
+ public Set<RepositoryType> getSupportedRepositoryTypes( )
+ {
+ return TYPES;
+ }
+
+ @Override
+ public boolean supports( RepositoryType type )
+ {
+ return true;
+ }
+
+ @Override
+ public RemoteRepositoryContent createRemoteContent( RemoteRepository repository ) throws RepositoryException
+ {
+ return null;
+ }
+
+ @Override
+ public ManagedRepositoryContent createManagedContent( org.apache.archiva.repository.ManagedRepository repository ) throws RepositoryException
+ {
+ content.setRepository( repository );
+ return content;
+ }
+
+ @Override
+ public <T extends RepositoryContent, V extends Repository> T createContent( Class<T> clazz, V repository ) throws RepositoryException
+ {
+ return null;
+ }
+ };
+ }
+
@After
@Override
public void tearDown()
@@ -580,7 +643,10 @@ public class ArchivaDavResourceFactoryTest
{
ManagedRepositoryContent legacyRepo = createManagedRepositoryContent( LEGACY_REPO );
ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) applicationContext).getBeanFactory();
- beanFactory.registerSingleton("managedRepositoryContent#legacy", legacyRepo);
+ RepositoryContentProvider provider = createRepositoryContentProvider(legacyRepo );
+ beanFactory.registerSingleton("repositoryContentProvider#legacy", provider);
+ RepositoryContentFactory repoContentFactory = applicationContext.getBean( "repositoryContentFactory#default", RepositoryContentFactory.class );
+ repoContentFactory.getRepositoryContentProviders().add(provider);
defaultManagedRepositoryAdmin.addManagedRepository(
createManagedRepository( LEGACY_REPO, Paths.get( "target/test-classes/" + LEGACY_REPO ).toString(),
"legacy" ), false, null );
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context-servlet-security-test.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context-servlet-security-test.xml b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context-servlet-security-test.xml
index 6938160..9f38b82 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context-servlet-security-test.xml
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context-servlet-security-test.xml
@@ -31,10 +31,7 @@
<context:annotation-config/>
<context:component-scan
- base-package="org.apache.archiva.redback.keys,org.apache.archiva.webdav,org.apache.archiva.metadata.repository,org.apache.archiva.webdav.util,org.apache.archiva.common.plexusbridge,org.apache.archiva.repository.content.maven2,org.apache.archiva.repository"/>
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+ base-package="org.apache.archiva.redback.keys,org.apache.archiva.webdav,org.apache.archiva.metadata.repository,org.apache.archiva.webdav.util,org.apache.archiva.common.plexusbridge"/>
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context.xml b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context.xml
index 28f59f7..fba9707 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/spring-context.xml
@@ -30,10 +30,7 @@
<context:property-placeholder system-properties-mode="OVERRIDE"/>
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.redback.keys,org.apache.archiva.webdav,org.apache.archiva.metadata.repository,org.apache.archiva.repository,org.apache.archiva.repository.content.maven2"/>
-
- <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
- <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+ <context:component-scan base-package="org.apache.archiva.redback.keys,org.apache.archiva.webdav,org.apache.archiva.metadata.repository" />
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
index 4f8b80c..a15b5d7 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
@@ -20,6 +20,7 @@ package org.apache.archiva.repository.content.maven2;
*/
import org.apache.archiva.common.utils.VersionUtil;
+import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
@@ -27,6 +28,7 @@ import org.apache.archiva.model.ArchivaArtifact;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.VersionedReference;
+import org.apache.archiva.repository.RepositoryContent;
import org.apache.archiva.repository.content.PathParser;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.commons.lang.StringUtils;
@@ -40,8 +42,10 @@ import java.util.List;
/**
* AbstractDefaultRepositoryContent - common methods for working with default (maven 2) layout.
*/
-public abstract class AbstractDefaultRepositoryContent
+public abstract class AbstractDefaultRepositoryContent implements RepositoryContent
{
+
+
protected Logger log = LoggerFactory.getLogger( getClass() );
public static final String MAVEN_METADATA = "maven-metadata.xml";
@@ -56,16 +60,19 @@ public abstract class AbstractDefaultRepositoryContent
private PathParser defaultPathParser = new DefaultPathParser();
+
+
/**
*
*/
- @Inject
protected List<? extends ArtifactMappingProvider> artifactMappingProviders;
- @PostConstruct
- protected void initialize()
- {
- // no op
+ AbstractDefaultRepositoryContent(List<? extends ArtifactMappingProvider> artifactMappingProviders) {
+ this.artifactMappingProviders = artifactMappingProviders;
+ }
+
+ public void setArtifactMappingProviders(List<? extends ArtifactMappingProvider> artifactMappingProviders) {
+ this.artifactMappingProviders = artifactMappingProviders;
}
public ArtifactReference toArtifactReference( String path )
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
index 298aa5d..847dd7a 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
@@ -21,6 +21,7 @@ package org.apache.archiva.repository.content.maven2;
import org.apache.archiva.common.utils.PathUtil;
import org.apache.archiva.configuration.FileTypes;
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
import org.apache.archiva.model.ArchivaArtifact;
import org.apache.archiva.model.ArtifactReference;
@@ -31,11 +32,7 @@ import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.commons.lang.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-import javax.inject.Inject;
-import javax.inject.Named;
import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
@@ -43,6 +40,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -51,22 +49,29 @@ import java.util.stream.Stream;
/**
* ManagedDefaultRepositoryContent
*/
-@Service ("managedRepositoryContent#maven")
-@Scope ("prototype")
public class ManagedDefaultRepositoryContent
extends AbstractDefaultRepositoryContent
implements ManagedRepositoryContent
{
- @Inject
- @Named ( "fileTypes" )
+
private FileTypes filetypes;
+ public void setFileTypes(FileTypes fileTypes) {
+ this.filetypes = fileTypes;
+ }
+
+
+
private org.apache.archiva.repository.ManagedRepository repository;
- public ManagedDefaultRepositoryContent()
+ public ManagedDefaultRepositoryContent(FileTypes fileTypes) {
+ super(Collections.singletonList( new DefaultArtifactMappingProvider() ));
+ setFileTypes( fileTypes );
+ }
+ public ManagedDefaultRepositoryContent( List<? extends ArtifactMappingProvider> artifactMappingProviders, FileTypes fileTypes )
{
- // default to use if there are none supplied as components
- this.artifactMappingProviders = Collections.singletonList( new DefaultArtifactMappingProvider() );
+ super(artifactMappingProviders==null ? Collections.singletonList( new DefaultArtifactMappingProvider() ) : artifactMappingProviders);
+ setFileTypes( fileTypes );
}
@Override
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java
new file mode 100644
index 0000000..423c4b1
--- /dev/null
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java
@@ -0,0 +1,123 @@
+package org.apache.archiva.repository.content.maven2;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.configuration.FileTypes;
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.RemoteRepository;
+import org.apache.archiva.repository.RemoteRepositoryContent;
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryContent;
+import org.apache.archiva.repository.RepositoryContentProvider;
+import org.apache.archiva.repository.RepositoryException;
+import org.apache.archiva.repository.RepositoryType;
+import org.springframework.stereotype.Service;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Maven implementation of the repository content provider. Only default layout and
+ * maven repository types are supported.
+ */
+@Service("repositoryContentProvider#maven")
+public class MavenContentProvider implements RepositoryContentProvider
+{
+
+ @Inject
+ @Named( "fileTypes" )
+ private FileTypes filetypes;
+
+ @Inject
+ protected List<? extends ArtifactMappingProvider> artifactMappingProviders;
+
+
+ private static final Set<RepositoryType> REPOSITORY_TYPES = new HashSet<>( );
+ static {
+ REPOSITORY_TYPES.add(RepositoryType.MAVEN);
+ }
+
+ @Override
+ public boolean supportsLayout( String layout )
+ {
+ return "default".equals( layout );
+ }
+
+ @Override
+ public Set<RepositoryType> getSupportedRepositoryTypes( )
+ {
+ return REPOSITORY_TYPES;
+ }
+
+ @Override
+ public boolean supports( RepositoryType type )
+ {
+ return type.equals( RepositoryType.MAVEN );
+ }
+
+ @Override
+ public RemoteRepositoryContent createRemoteContent( RemoteRepository repository ) throws RepositoryException
+ {
+ if (!supports( repository.getType() )) {
+ throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." );
+ }
+ if (!supportsLayout( repository.getLayout() )) {
+ throw new RepositoryException( "Repository layout "+repository.getLayout()+" is not supported by this implementation." );
+ }
+ RemoteDefaultRepositoryContent content = new RemoteDefaultRepositoryContent(artifactMappingProviders);
+ content.setRepository( repository );
+ return content;
+ }
+
+ @Override
+ public ManagedRepositoryContent createManagedContent( ManagedRepository repository ) throws RepositoryException
+ {
+ if (!supports( repository.getType() )) {
+ throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." );
+ }
+ if (!supportsLayout( repository.getLayout() )) {
+ throw new RepositoryException( "Repository layout "+repository.getLayout()+" is not supported by this implementation." );
+ }
+ ManagedDefaultRepositoryContent content = new ManagedDefaultRepositoryContent(artifactMappingProviders, filetypes);
+ content.setRepository( repository );
+ return content;
+ }
+
+ @Override
+ public <T extends RepositoryContent, V extends Repository> T createContent( Class<T> clazz, V repository ) throws RepositoryException
+ {
+ if (!supports( repository.getType() )) {
+ throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." );
+ }
+ if (repository instanceof ManagedRepository && ManagedRepositoryContent.class.isAssignableFrom( clazz ) ) {
+ return (T) this.createManagedContent( (ManagedRepository) repository );
+ } else if (repository instanceof RemoteRepository && RemoteRepository.class.isAssignableFrom( clazz )) {
+ return (T) this.createRemoteContent( (RemoteRepository) repository );
+ } else {
+ throw new RepositoryException( "Repository flavour is not supported: "+repository.getClass().getName() );
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
index 2942c23..b9c2238 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
@@ -19,6 +19,7 @@ package org.apache.archiva.repository.content.maven2;
* under the License.
*/
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.model.RepositoryURL;
import org.apache.archiva.repository.RemoteRepository;
@@ -27,17 +28,22 @@ import org.apache.archiva.repository.layout.LayoutException;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
* RemoteDefaultRepositoryContent
*/
-@Service( "remoteRepositoryContent#maven" )
-@Scope( "prototype" )
public class RemoteDefaultRepositoryContent
extends AbstractDefaultRepositoryContent
implements RemoteRepositoryContent
{
private RemoteRepository repository;
+
+ public RemoteDefaultRepositoryContent( List<? extends ArtifactMappingProvider> artifactMappingProviders ) {
+ super(artifactMappingProviders);
+ }
+
@Override
public String getId( )
{
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
index 86749a2..41e62fa 100644
--- a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
+++ b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
@@ -28,6 +28,7 @@ import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.VersionedReference;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.archiva.repository.maven2.MavenManagedRepository;
import org.junit.Before;
@@ -52,9 +53,7 @@ import static org.junit.Assert.fail;
public class ManagedDefaultRepositoryContentTest
extends AbstractDefaultRepositoryContentTestCase
{
- @Inject
- @Named ( "managedRepositoryContent#default" )
- private ManagedRepositoryContent repoContent;
+ private ManagedDefaultRepositoryContent repoContent;
@Inject
FileTypes fileTypes;
@@ -63,6 +62,9 @@ public class ManagedDefaultRepositoryContentTest
@Named ( "archivaConfiguration#default" )
ArchivaConfiguration archivaConfiguration;
+ @Inject
+ List<? extends ArtifactMappingProvider> artifactMappingProviders;
+
@Before
public void setUp()
throws Exception
@@ -77,6 +79,7 @@ public class ManagedDefaultRepositoryContentTest
fileTypes.afterConfigurationChange( null, "fileType", null );
+ repoContent = new ManagedDefaultRepositoryContent(artifactMappingProviders, fileTypes);
//repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" );
repoContent.setRepository( repository );
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/97b2c9c9/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
index da3f409..0a1c03a 100644
--- a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
+++ b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
@@ -22,11 +22,13 @@ package org.apache.archiva.metadata.repository.storage.maven2;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.RemoteRepository;
import org.apache.archiva.repository.RemoteRepositoryContent;
+import org.apache.archiva.repository.content.maven2.RemoteDefaultRepositoryContent;
import org.apache.archiva.repository.layout.LayoutException;
import org.junit.Before;
import javax.inject.Inject;
import javax.inject.Named;
+import java.util.List;
/**
* RemoteDefaultRepositoryContentTest
@@ -34,8 +36,10 @@ import javax.inject.Named;
public class RemoteDefaultRepositoryContentTest
extends AbstractDefaultRepositoryContentTestCase
{
+
@Inject
- @Named ( "remoteRepositoryContent#default" )
+ private List<? extends ArtifactMappingProvider> artifactMappingProviders;
+
private RemoteRepositoryContent repoContent;
@Before
@@ -45,6 +49,7 @@ public class RemoteDefaultRepositoryContentTest
RemoteRepository repository =
createRemoteRepository( "testRemoteRepo", "Unit Test Remote Repo", "http://repo1.maven.org/maven2/" );
+ repoContent = new RemoteDefaultRepositoryContent(artifactMappingProviders);
//repoContent = (RemoteRepositoryContent) lookup( RemoteRepositoryContent.class, "default" );
repoContent.setRepository( repository );
}