@@ -47,4 +47,11 @@ public interface ManagedRepository extends Repository { | |||
*/ | |||
Set<ReleaseScheme> getActiveReleaseSchemes(); | |||
/** | |||
* Returns the request info object, which you can use for gathering information from the web request path. | |||
* @return Instance of a request info object that corresponds to this repository | |||
*/ | |||
RepositoryRequestInfo getRequestInfo(); | |||
} |
@@ -180,4 +180,5 @@ public interface Repository extends RepositoryEventHandler { | |||
*/ | |||
void close(); | |||
} |
@@ -118,7 +118,7 @@ public interface RepositoryRequestInfo | |||
* @return the adjusted (to native) path. | |||
* @throws LayoutException if the path cannot be parsed. | |||
*/ | |||
void toNativePath( String requestPath); | |||
String toNativePath( String requestPath) throws LayoutException; | |||
/** | |||
* Extension method that allows to provide different features that are not supported by all |
@@ -80,4 +80,9 @@ public class BasicManagedRepository extends AbstractManagedRepository | |||
return CAPABILITIES; | |||
} | |||
@Override | |||
public RepositoryRequestInfo getRequestInfo() { | |||
return null; | |||
} | |||
} |
@@ -20,9 +20,9 @@ package org.apache.archiva.repository.content.maven2; | |||
*/ | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.repository.LayoutException; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.*; | |||
import org.apache.archiva.repository.content.PathParser; | |||
import org.apache.archiva.repository.features.RepositoryFeature; | |||
import org.apache.archiva.repository.metadata.MetadataTools; | |||
import org.apache.commons.lang.StringUtils; | |||
@@ -30,13 +30,15 @@ import org.apache.commons.lang.StringUtils; | |||
* RepositoryRequest is used to determine the type of request that is incoming, and convert it to an appropriate | |||
* ArtifactReference. | |||
*/ | |||
public class RepositoryRequest | |||
public class MavenRepositoryRequestInfo implements RepositoryRequestInfo | |||
{ | |||
private PathParser defaultPathParser = new DefaultPathParser(); | |||
public RepositoryRequest() | |||
ManagedRepository repository; | |||
public MavenRepositoryRequestInfo(ManagedRepository repository) | |||
{ | |||
// no op | |||
this.repository = repository; | |||
} | |||
/** | |||
@@ -150,6 +152,17 @@ public class RepositoryRequest | |||
return false; | |||
} | |||
@Override | |||
public String getLayout(String requestPath) { | |||
if (isDefault(requestPath)) { | |||
return "default"; | |||
} else if (isLegacy(requestPath)) { | |||
return "legacy"; | |||
} else { | |||
return "unknown"; | |||
} | |||
} | |||
/** | |||
* <p> | |||
* Tests the path to see if it conforms to the expectations of a default layout request. | |||
@@ -164,7 +177,7 @@ public class RepositoryRequest | |||
* @param requestedPath the path to test. | |||
* @return true if the requestedPath is likely that of a default layout request. | |||
*/ | |||
public boolean isDefault( String requestedPath ) | |||
private boolean isDefault( String requestedPath ) | |||
{ | |||
if ( StringUtils.isBlank( requestedPath ) ) | |||
{ | |||
@@ -219,7 +232,7 @@ public class RepositoryRequest | |||
* @param requestedPath the path to test. | |||
* @return true if the requestedPath is likely that of a legacy layout request. | |||
*/ | |||
public boolean isLegacy( String requestedPath ) | |||
private boolean isLegacy( String requestedPath ) | |||
{ | |||
if ( StringUtils.isBlank( requestedPath ) ) | |||
{ | |||
@@ -234,11 +247,10 @@ public class RepositoryRequest | |||
* Adjust the requestedPath to conform to the native layout of the provided {@link org.apache.archiva.repository.ManagedRepositoryContent}. | |||
* | |||
* @param requestedPath the incoming requested path. | |||
* @param repository the repository to adjust to. | |||
* @return the adjusted (to native) path. | |||
* @throws LayoutException if the path cannot be parsed. | |||
*/ | |||
public String toNativePath( String requestedPath, ManagedRepositoryContent repository ) | |||
public String toNativePath( String requestedPath) | |||
throws LayoutException | |||
{ | |||
if ( StringUtils.isBlank( requestedPath ) ) | |||
@@ -269,7 +281,17 @@ public class RepositoryRequest | |||
// Treat as an artifact reference. | |||
ArtifactReference ref = toArtifactReference( referencedResource ); | |||
String adjustedPath = repository.toPath( ref ); | |||
String adjustedPath = repository.getContent().toPath( ref ); | |||
return adjustedPath + supportfile; | |||
} | |||
@Override | |||
public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature(Class<T> clazz) throws UnsupportedFeatureException { | |||
return null; | |||
} | |||
@Override | |||
public <T extends RepositoryFeature<T>> boolean supportsFeature(Class<T> clazz) { | |||
return false; | |||
} | |||
} |
@@ -20,12 +20,8 @@ package org.apache.archiva.repository.maven2; | |||
*/ | |||
import org.apache.archiva.common.utils.PathUtil; | |||
import org.apache.archiva.repository.AbstractManagedRepository; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
import org.apache.archiva.repository.RepositoryCapabilities; | |||
import org.apache.archiva.repository.RepositoryType; | |||
import org.apache.archiva.repository.StandardCapabilities; | |||
import org.apache.archiva.repository.UnsupportedFeatureException; | |||
import org.apache.archiva.repository.*; | |||
import org.apache.archiva.repository.content.maven2.MavenRepositoryRequestInfo; | |||
import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.RepositoryFeature; | |||
@@ -137,4 +133,8 @@ public class MavenManagedRepository extends AbstractManagedRepository | |||
} | |||
} | |||
@Override | |||
public RepositoryRequestInfo getRequestInfo() { | |||
return new MavenRepositoryRequestInfo(this); | |||
} | |||
} |
@@ -21,6 +21,9 @@ package org.apache.archiva.repository.content.maven2; | |||
import org.apache.archiva.common.utils.FileUtils; | |||
import org.apache.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.archiva.configuration.FileType; | |||
import org.apache.archiva.configuration.FileTypes; | |||
import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.repository.LayoutException; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
@@ -38,6 +41,7 @@ import javax.inject.Inject; | |||
import javax.inject.Named; | |||
import java.nio.file.Path; | |||
import java.nio.file.Paths; | |||
import java.util.List; | |||
import static org.junit.Assert.*; | |||
@@ -47,23 +51,52 @@ import static org.junit.Assert.*; | |||
@RunWith( ArchivaSpringJUnit4ClassRunner.class ) | |||
@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", | |||
"classpath:/spring-context-repo-request-test.xml" } ) | |||
public class RepositoryRequestTest | |||
public class MavenRepositoryRequestInfoTest | |||
{ | |||
@Inject | |||
protected ApplicationContext applicationContext; | |||
@Inject | |||
FileTypes fileTypes; | |||
@Inject | |||
@Named( "archivaConfiguration#repo-request-test" ) | |||
private ArchivaConfiguration archivaConfiguration; | |||
private RepositoryRequest repoRequest; | |||
@Inject | |||
List<? extends ArtifactMappingProvider> artifactMappingProviders; | |||
private MavenRepositoryRequestInfo repoRequest; | |||
protected MavenManagedRepository createRepository( String id, String name, Path location ) | |||
{ | |||
MavenManagedRepository repo = new MavenManagedRepository( id, name, location.getParent().toAbsolutePath()); | |||
repo.setLocation( location.toAbsolutePath().toUri() ); | |||
return repo; | |||
} | |||
@Before | |||
public void setUp() | |||
throws Exception | |||
{ | |||
repoRequest = new RepositoryRequest(); | |||
Path repoDir = Paths.get( "src/test/repositories/default-repository" ); | |||
MavenManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir ); | |||
FileType fileType = archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 ); | |||
fileType.addPattern( "**/*.xml" ); | |||
assertEquals( FileTypes.ARTIFACTS, fileType.getId() ); | |||
fileTypes.afterConfigurationChange( null, "fileType", null ); | |||
ManagedDefaultRepositoryContent repoContent = new ManagedDefaultRepositoryContent(artifactMappingProviders, fileTypes); | |||
//repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" ); | |||
repoContent.setRepository( repository ); | |||
repository.setContent(repoContent); | |||
repoRequest = new MavenRepositoryRequestInfo(repository); | |||
} | |||
@Test | |||
@@ -330,41 +363,41 @@ public class RepositoryRequestTest | |||
@Test | |||
public void testIsDefault() | |||
{ | |||
assertFalse( repoRequest.isDefault( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); | |||
assertFalse( repoRequest.isDefault( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); | |||
assertFalse( repoRequest.isDefault( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); | |||
assertNotEquals( "default", repoRequest.getLayout( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); | |||
assertNotEquals("default", repoRequest.getLayout( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); | |||
assertNotEquals("default", repoRequest.getLayout( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); | |||
assertTrue( repoRequest.isDefault( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); | |||
assertTrue( repoRequest.isDefault( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); | |||
assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); | |||
assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); | |||
assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); | |||
assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml" ) ); | |||
assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml.sha1" ) ); | |||
assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml.md5" ) ); | |||
assertEquals("default", repoRequest.getLayout( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); | |||
assertEquals("default", repoRequest.getLayout( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); | |||
assertEquals("default", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); | |||
assertEquals("default", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); | |||
assertEquals("default", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); | |||
assertEquals("default", repoRequest.getLayout( "eclipse/jdtcore/maven-metadata.xml" ) ); | |||
assertEquals("default", repoRequest.getLayout( "eclipse/jdtcore/maven-metadata.xml.sha1" ) ); | |||
assertEquals("default", repoRequest.getLayout( "eclipse/jdtcore/maven-metadata.xml.md5" ) ); | |||
assertFalse( repoRequest.isDefault( null ) ); | |||
assertFalse( repoRequest.isDefault( "" ) ); | |||
assertFalse( repoRequest.isDefault( "foo" ) ); | |||
assertFalse( repoRequest.isDefault( "some.short/path" ) ); | |||
assertNotEquals("default", repoRequest.getLayout( null ) ); | |||
assertNotEquals("default", repoRequest.getLayout( "" ) ); | |||
assertNotEquals("default", repoRequest.getLayout( "foo" ) ); | |||
assertNotEquals("default", repoRequest.getLayout( "some.short/path" ) ); | |||
} | |||
@Test | |||
public void testIsLegacy() | |||
{ | |||
assertTrue( repoRequest.isLegacy( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); | |||
assertTrue( repoRequest.isLegacy( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); | |||
assertTrue( repoRequest.isLegacy( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); | |||
assertEquals("legacy", repoRequest.getLayout( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); | |||
assertEquals("legacy", repoRequest.getLayout( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); | |||
assertEquals("legacy", repoRequest.getLayout( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); | |||
assertFalse( repoRequest.isLegacy( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); | |||
assertFalse( repoRequest.isLegacy( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); | |||
assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); | |||
assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); | |||
assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); | |||
assertFalse( repoRequest.isLegacy( null ) ); | |||
assertFalse( repoRequest.isLegacy( "" ) ); | |||
assertFalse( repoRequest.isLegacy( "some.short/path" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( null ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "" ) ); | |||
assertNotEquals("legacy", repoRequest.getLayout( "some.short/path" ) ); | |||
} | |||
private ManagedRepositoryContent createManagedRepo( String layout ) | |||
@@ -385,8 +418,7 @@ public class RepositoryRequestTest | |||
// Test (artifact) default to default - dual extension | |||
assertEquals( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", | |||
repoRequest.toNativePath( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", | |||
repository ) ); | |||
repoRequest.toNativePath( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip") ); | |||
} | |||
@@ -398,8 +430,7 @@ public class RepositoryRequestTest | |||
// Test (metadata) default to default | |||
assertEquals( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1", | |||
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1", | |||
repository ) ); | |||
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1") ); | |||
} | |||
@@ -412,7 +443,7 @@ public class RepositoryRequestTest | |||
// Test bad request path (too short) | |||
try | |||
{ | |||
repoRequest.toNativePath( "org.apache.derby/license.txt", repository ); | |||
repoRequest.toNativePath( "org.apache.derby/license.txt"); | |||
fail( "Should have thrown an exception about a too short path." ); | |||
} | |||
catch ( LayoutException e ) | |||
@@ -430,7 +461,7 @@ public class RepositoryRequestTest | |||
// Test bad request path (too short) | |||
try | |||
{ | |||
repoRequest.toNativePath( "", repository ); | |||
repoRequest.toNativePath( ""); | |||
fail( "Should have thrown an exception about an blank request." ); | |||
} | |||
catch ( LayoutException e ) | |||
@@ -448,7 +479,7 @@ public class RepositoryRequestTest | |||
// Test bad request path (too short) | |||
try | |||
{ | |||
repoRequest.toNativePath( null, repository ); | |||
repoRequest.toNativePath( null); | |||
fail( "Should have thrown an exception about an null request." ); | |||
} | |||
catch ( LayoutException e ) | |||
@@ -466,7 +497,7 @@ public class RepositoryRequestTest | |||
// Test bad request path (too short) | |||
try | |||
{ | |||
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/license.txt", repository ); | |||
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/license.txt"); | |||
fail( "Should have thrown an exception about an invalid type." ); | |||
} | |||
catch ( LayoutException e ) |
@@ -58,13 +58,8 @@ import org.apache.archiva.redback.policy.MustChangePasswordException; | |||
import org.apache.archiva.redback.system.SecuritySession; | |||
import org.apache.archiva.redback.users.User; | |||
import org.apache.archiva.redback.users.UserManager; | |||
import org.apache.archiva.repository.LayoutException; | |||
import org.apache.archiva.repository.ManagedRepository; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
import org.apache.archiva.repository.RepositoryContentFactory; | |||
import org.apache.archiva.repository.RepositoryRegistry; | |||
import org.apache.archiva.repository.content.maven2.RepositoryRequest; | |||
import org.apache.archiva.repository.*; | |||
import org.apache.archiva.repository.content.maven2.MavenRepositoryRequestInfo; | |||
import org.apache.archiva.repository.events.AuditListener; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.metadata.MetadataTools; | |||
@@ -132,11 +127,6 @@ public class ArchivaDavResourceFactory | |||
@Inject | |||
private List<AuditListener> auditListeners = new ArrayList<>(); | |||
@Inject | |||
private RepositoryContentFactory repositoryFactory; | |||
private RepositoryRequest repositoryRequest; | |||
@Inject | |||
private ProxyRegistry proxyRegistry; | |||
@@ -203,8 +193,6 @@ public class ArchivaDavResourceFactory | |||
this.digestMd5 = plexusSisuBridge.lookup( Digester.class, "md5" ); | |||
this.digestSha1 = plexusSisuBridge.lookup( Digester.class, "sha1" ); | |||
// TODO remove this hard dependency on maven !! | |||
repositoryRequest = new RepositoryRequest( ); | |||
} | |||
@PostConstruct | |||
@@ -228,6 +216,7 @@ public class ArchivaDavResourceFactory | |||
List<String> resourcesInAbsolutePath = new ArrayList<>(); | |||
boolean readMethod = WebdavMethodUtil.isReadMethod( request.getMethod() ); | |||
RepositoryRequestInfo repositoryRequestInfo = null; | |||
DavResource resource; | |||
if ( repoGroupConfig != null ) | |||
{ | |||
@@ -259,6 +248,13 @@ public class ArchivaDavResourceFactory | |||
List<String> repositories = new ArrayList<>( repoGroupConfig.getRepositories() ); | |||
resource = processRepositoryGroup( request, archivaLocator, repositories, activePrincipal, | |||
resourcesInAbsolutePath, repoGroupConfig ); | |||
for (String repoId: repositories ) { | |||
ManagedRepository repo = repositoryRegistry.getManagedRepository(repoId); | |||
if (repo!=null) { | |||
repositoryRequestInfo = repo.getRequestInfo(); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
else | |||
@@ -315,7 +311,7 @@ public class ArchivaDavResourceFactory | |||
resource = processRepository( request, archivaLocator, activePrincipal, managedRepositoryContent, | |||
repo); | |||
repositoryRequestInfo = repo.getRequestInfo(); | |||
String logicalResource = getLogicalResource( archivaLocator, null, false ); | |||
resourcesInAbsolutePath.add( | |||
Paths.get( managedRepositoryContent.getRepoRoot(), logicalResource ).toAbsolutePath().toString() ); | |||
@@ -326,7 +322,7 @@ public class ArchivaDavResourceFactory | |||
// MRM-872 : merge all available metadata | |||
// merge metadata only when requested via the repo group | |||
if ( ( repositoryRequest.isMetadata( requestedResource ) || repositoryRequest.isMetadataSupportFile( | |||
if ( ( repositoryRequestInfo.isMetadata( requestedResource ) || repositoryRequestInfo.isMetadataSupportFile( | |||
requestedResource ) ) && repoGroupConfig != null ) | |||
{ | |||
// this should only be at the project level not version level! | |||
@@ -340,7 +336,7 @@ public class ArchivaDavResourceFactory | |||
filePath = filePath + "/maven-metadata-" + repoGroupConfig.getId() + ".xml"; | |||
// for MRM-872 handle checksums of the merged metadata files | |||
if ( repositoryRequest.isSupportFile( requestedResource ) ) | |||
if ( repositoryRequestInfo.isSupportFile( requestedResource ) ) | |||
{ | |||
Path metadataChecksum = | |||
Paths.get( filePath + "." + StringUtils.substringAfterLast( requestedResource, "." ) ); | |||
@@ -609,8 +605,7 @@ public class ArchivaDavResourceFactory | |||
{ | |||
// Perform an adjustment of the resource to the managed | |||
// repository expected path. | |||
String localResourcePath = | |||
repositoryRequest.toNativePath( logicalResource.getPath(), managedRepositoryContent ); | |||
String localResourcePath = managedRepository.getRequestInfo().toNativePath( logicalResource.getPath() ); | |||
resourceFile = Paths.get( managedRepositoryContent.getRepoRoot(), localResourcePath ); | |||
resource = | |||
new ArchivaDavResource( resourceFile.toAbsolutePath().toString(), logicalResource.getPath(), | |||
@@ -650,11 +645,11 @@ public class ArchivaDavResourceFactory | |||
if ( request.getMethod().equals( HTTP_PUT_METHOD ) ) | |||
{ | |||
String resourcePath = logicalResource.getPath(); | |||
RepositoryRequestInfo repositoryRequestInfo = managedRepository.getRequestInfo(); | |||
// check if target repo is enabled for releases | |||
// we suppose that release-artifacts can be deployed only to repos enabled for releases | |||
if ( managedRepositoryContent.getRepository().getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE ) && !repositoryRequest.isMetadata( | |||
resourcePath ) && !repositoryRequest.isSupportFile( resourcePath ) ) | |||
if ( managedRepositoryContent.getRepository().getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE ) && !repositoryRequestInfo.isMetadata( | |||
resourcePath ) && !repositoryRequestInfo.isSupportFile( resourcePath ) ) | |||
{ | |||
ArtifactReference artifact = null; | |||
try | |||
@@ -756,8 +751,9 @@ public class ArchivaDavResourceFactory | |||
if (!proxyRegistry.hasHandler(managedRepository.getRepository().getType())) { | |||
throw new DavException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "No proxy handler found for repository type "+managedRepository.getRepository().getType()); | |||
} | |||
RepositoryRequestInfo repositoryRequestInfo = managedRepository.getRepository().getRequestInfo(); | |||
RepositoryProxyHandler proxyHandler = proxyRegistry.getHandler(managedRepository.getRepository().getType()).get(0); | |||
if ( repositoryRequest.isSupportFile( path ) ) | |||
if ( repositoryRequestInfo.isSupportFile( path ) ) | |||
{ | |||
Path proxiedFile = proxyHandler.fetchFromProxies( managedRepository, path ); | |||
@@ -765,13 +761,13 @@ public class ArchivaDavResourceFactory | |||
} | |||
// Is it a Metadata resource? | |||
if ( repositoryRequest.isDefault( path ) && repositoryRequest.isMetadata( path ) ) | |||
if ( "default".equals(repositoryRequestInfo.getLayout( path )) && repositoryRequestInfo.isMetadata( path ) ) | |||
{ | |||
return proxyHandler.fetchMetadataFromProxies( managedRepository, path ).isModified(); | |||
} | |||
// Is it an Archetype Catalog? | |||
if ( repositoryRequest.isArchetypeCatalog( path ) ) | |||
if ( repositoryRequestInfo.isArchetypeCatalog( path ) ) | |||
{ | |||
// FIXME we must implement a merge of remote archetype catalog from remote servers. | |||
Path proxiedFile = proxyHandler.fetchFromProxies( managedRepository, path ); | |||
@@ -783,7 +779,7 @@ public class ArchivaDavResourceFactory | |||
try | |||
{ | |||
// Get the artifact reference in a layout neutral way. | |||
ArtifactReference artifact = repositoryRequest.toArtifactReference( path ); | |||
ArtifactReference artifact = repositoryRequestInfo.toArtifactReference( path ); | |||
if ( artifact != null ) | |||
{ | |||
@@ -1418,16 +1414,6 @@ public class ArchivaDavResourceFactory | |||
this.archivaConfiguration = archivaConfiguration; | |||
} | |||
public void setRepositoryFactory( RepositoryContentFactory repositoryFactory ) | |||
{ | |||
this.repositoryFactory = repositoryFactory; | |||
} | |||
public void setRepositoryRequest( RepositoryRequest repositoryRequest ) | |||
{ | |||
this.repositoryRequest = repositoryRequest; | |||
} | |||
public RemoteRepositoryAdmin getRemoteRepositoryAdmin() | |||
{ | |||
return remoteRepositoryAdmin; |
@@ -47,7 +47,7 @@ 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.repository.content.maven2.MavenRepositoryRequestInfo; | |||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.apache.jackrabbit.webdav.DavException; | |||
@@ -105,7 +105,7 @@ public class ArchivaDavResourceFactoryTest | |||
private IMocksControl repoRequestControl; | |||
private RepositoryRequest repoRequest; | |||
private MavenRepositoryRequestInfo repoRequest; | |||
private IMocksControl responseControl; | |||
@@ -222,13 +222,11 @@ public class ArchivaDavResourceFactoryTest | |||
repoFactory = repoContentFactoryControl.createMock( RepositoryContentFactory.class ); | |||
repoRequestControl = createControl(); | |||
repoRequest = repoRequestControl.createMock( RepositoryRequest.class ); | |||
repoRequest = repoRequestControl.createMock( MavenRepositoryRequestInfo.class ); | |||
resourceFactory = | |||
new OverridingArchivaDavResourceFactory( applicationContext, plexusSisuBridge, archivaConfiguration ); | |||
resourceFactory.setArchivaConfiguration( archivaConfiguration ); | |||
resourceFactory.setRepositoryFactory( repoFactory ); | |||
resourceFactory.setRepositoryRequest( repoRequest ); | |||
proxyRegistry.getAllHandler().get(RepositoryType.MAVEN).clear(); | |||
proxyRegistry.getAllHandler().get(RepositoryType.MAVEN).add(new OverridingRepositoryProxyHandler(this)); | |||
resourceFactory.setProxyRegistry(proxyRegistry); | |||
@@ -353,14 +351,14 @@ public class ArchivaDavResourceFactoryTest | |||
expect( repoRequest.isSupportFile( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( true ); | |||
expect( | |||
repoRequest.isDefault( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
false ); | |||
repoRequest.getLayout( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
"legacy" ); | |||
expect( repoRequest.toArtifactReference( | |||
"org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( null ); | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar", | |||
internalRepo ) ).andReturn( | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" | |||
) ).andReturn( | |||
Paths.get( config.findManagedRepositoryById( INTERNAL_REPO ).getLocation(), | |||
"target/test-classes/internal/org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ).toString()); | |||
@@ -433,14 +431,14 @@ public class ArchivaDavResourceFactoryTest | |||
expect( repoRequest.isSupportFile( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( false ); | |||
expect( | |||
repoRequest.isDefault( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
false ); | |||
repoRequest.getLayout( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
"legacy" ); | |||
expect( repoRequest.toArtifactReference( | |||
"org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( null ); | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar", | |||
internalRepo ) ).andReturn( | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" | |||
) ).andReturn( | |||
Paths.get( config.findManagedRepositoryById( INTERNAL_REPO ).getLocation(), | |||
"target/test-classes/internal/org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ).toString()); | |||
@@ -515,19 +513,19 @@ public class ArchivaDavResourceFactoryTest | |||
expect( repoRequest.isSupportFile( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( false ).times( 2 ); | |||
expect( | |||
repoRequest.isDefault( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
false ).times( 2 ); | |||
repoRequest.getLayout( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( | |||
"legacy" ).times( 2 ); | |||
expect( repoRequest.toArtifactReference( | |||
"org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ) ).andReturn( null ).times( 2 ); | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar", | |||
internalRepo ) ).andReturn( | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" | |||
) ).andReturn( | |||
Paths.get( config.findManagedRepositoryById( INTERNAL_REPO ).getLocation(), | |||
"target/test-classes/internal/org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ).toString() ); | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar", | |||
localMirrorRepo ) ) | |||
expect( repoRequest.toNativePath( "org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" | |||
) ) | |||
.andReturn( Paths.get( config.findManagedRepositoryById( LOCAL_MIRROR_REPO ).getLocation(), | |||
"target/test-classes/internal/org/apache/archiva/archiva/1.2-SNAPSHOT/archiva-1.2-SNAPSHOT.jar" ).toString()); | |||
@@ -565,8 +563,7 @@ public class ArchivaDavResourceFactoryTest | |||
ManagedRepositoryContent internalRepo = createManagedRepositoryContent( INTERNAL_REPO ); | |||
// use actual object (this performs the isMetadata, isDefault and isSupportFile check!) | |||
RepositoryRequest repoRequest = new RepositoryRequest( ); | |||
resourceFactory.setRepositoryRequest( repoRequest ); | |||
MavenRepositoryRequestInfo repoRequest = new MavenRepositoryRequestInfo(internalRepo.getRepository() ); | |||
try | |||
{ | |||
@@ -624,10 +621,6 @@ public class ArchivaDavResourceFactoryTest | |||
ManagedRepositoryContent internalRepo = createManagedRepositoryContent( INTERNAL_REPO ); | |||
// use actual object (this performs the isMetadata, isDefault and isSupportFile check!) | |||
RepositoryRequest repoRequest = new RepositoryRequest( ); | |||
resourceFactory.setRepositoryRequest( repoRequest ); | |||
try | |||
{ | |||
archivaConfigurationControl.reset(); | |||
@@ -680,10 +673,6 @@ public class ArchivaDavResourceFactoryTest | |||
LEGACY_REPO, new ArchivaDavLocatorFactory() ); | |||
// use actual object (this performs the isMetadata, isDefault and isSupportFile check!) | |||
RepositoryRequest repoRequest = new RepositoryRequest( ); | |||
resourceFactory.setRepositoryRequest( repoRequest ); | |||
try | |||
{ | |||
archivaConfigurationControl.reset(); |