Browse Source

[MRM-1359] remove maven1 code

tags/archiva-2.2.0
Olivier Lamy 9 years ago
parent
commit
642ceb3f9e
11 changed files with 123 additions and 935 deletions
  1. 0
    8
      archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
  2. 0
    38
      archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
  3. 1
    2
      archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
  4. 3
    4
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
  5. 3
    12
      archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RepositoryRequest.java
  6. 1
    6
      archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml
  7. 0
    455
      archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractLegacyRepositoryContentTestCase.java
  8. 0
    196
      archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedLegacyRepositoryContentTest.java
  9. 0
    68
      archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteLegacyRepositoryContentTest.java
  10. 99
    0
      archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
  11. 16
    146
      archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java

+ 0
- 8
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java View File

@@ -51,14 +51,6 @@ public interface ArchivaAdministrationService
List<LegacyArtifactPath> getLegacyArtifactPaths()
throws ArchivaRestServiceException;

@Path( "addLegacyArtifactPath" )
@POST
@Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )
throws ArchivaRestServiceException;

@Path( "deleteLegacyArtifactPath" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )

+ 0
- 38
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java View File

@@ -25,8 +25,6 @@ import org.apache.archiva.admin.model.beans.LegacyArtifactPath;
import org.apache.archiva.admin.model.beans.NetworkConfiguration;
import org.apache.archiva.admin.model.beans.OrganisationInformation;
import org.apache.archiva.admin.model.beans.UiConfiguration;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.archiva.rest.api.model.AdminRepositoryConsumer;
import org.apache.archiva.rest.api.services.ArchivaAdministrationService;
@@ -38,8 +36,6 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -56,9 +52,6 @@ public class DefaultArchivaAdministrationService
@Inject
private ArchivaAdministration archivaAdministration;

@Inject
@Named ( value = "managedRepositoryContent#legacy" )
private ManagedRepositoryContent repositoryContent;

@Inject
private RepositoryContentConsumers repoConsumerUtil;
@@ -77,37 +70,6 @@ public class DefaultArchivaAdministrationService
}
}

@Override
public void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )
throws ArchivaRestServiceException
{

// Check the proposed Artifact matches the path
ArtifactReference artifact = new ArtifactReference();

artifact.setGroupId( legacyArtifactPath.getGroupId() );
artifact.setArtifactId( legacyArtifactPath.getArtifactId() );
artifact.setClassifier( legacyArtifactPath.getClassifier() );
artifact.setVersion( legacyArtifactPath.getVersion() );
artifact.setType( legacyArtifactPath.getType() );
String path = repositoryContent.toPath( artifact );
if ( !StringUtils.equals( path, legacyArtifactPath.getPath() ) )
{
throw new ArchivaRestServiceException(
"artifact path reference '" + legacyArtifactPath.getPath() + "' does not match the initial path: '"
+ path + "'", Response.Status.BAD_REQUEST.getStatusCode(), null );
}

try
{

archivaAdministration.addLegacyArtifactPath( legacyArtifactPath, getAuditInformation() );
}
catch ( RepositoryAdminException e )
{
throw new ArchivaRestServiceException( e.getMessage(), e );
}
}

@Override
public Boolean deleteLegacyArtifactPath( String path )

+ 1
- 2
archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java View File

@@ -62,7 +62,6 @@ import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryContentFactory;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryNotFoundException;
import org.apache.archiva.repository.content.legacy.LegacyPathParser;
import org.apache.archiva.repository.content.maven2.RepositoryRequest;
import org.apache.archiva.repository.events.AuditListener;
import org.apache.archiva.repository.layout.LayoutException;
@@ -201,7 +200,7 @@ public class ArchivaDavResourceFactory
this.digestSha1 = plexusSisuBridge.lookup( Digester.class, "sha1" );

// TODO remove this hard dependency on maven !!
repositoryRequest = new RepositoryRequest( new LegacyPathParser( archivaConfiguration ) );
repositoryRequest = new RepositoryRequest( );
}

@PostConstruct

+ 3
- 4
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java View File

@@ -36,7 +36,6 @@ import org.apache.archiva.proxy.DefaultRepositoryProxyConnectors;
import org.apache.archiva.proxy.model.ProxyFetchResult;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryContentFactory;
import org.apache.archiva.repository.content.legacy.LegacyPathParser;
import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
import org.apache.archiva.repository.content.maven2.RepositoryRequest;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
@@ -460,7 +459,7 @@ public class ArchivaDavResourceFactoryTest
ManagedRepositoryContent internalRepo = createManagedRepositoryContent( INTERNAL_REPO );

// use actual object (this performs the isMetadata, isDefault and isSupportFile check!)
RepositoryRequest repoRequest = new RepositoryRequest( new LegacyPathParser( this.archivaConfiguration ) );
RepositoryRequest repoRequest = new RepositoryRequest( );
resourceFactory.setRepositoryRequest( repoRequest );

try
@@ -521,7 +520,7 @@ public class ArchivaDavResourceFactoryTest
ManagedRepositoryContent internalRepo = createManagedRepositoryContent( INTERNAL_REPO );

// use actual object (this performs the isMetadata, isDefault and isSupportFile check!)
RepositoryRequest repoRequest = new RepositoryRequest( new LegacyPathParser( this.archivaConfiguration ) );
RepositoryRequest repoRequest = new RepositoryRequest( );
resourceFactory.setRepositoryRequest( repoRequest );

try
@@ -572,7 +571,7 @@ public class ArchivaDavResourceFactoryTest
ManagedRepositoryContent legacyRepo = createManagedRepositoryContent( LEGACY_REPO );

// use actual object (this performs the isMetadata, isDefault and isSupportFile check!)
RepositoryRequest repoRequest = new RepositoryRequest( new LegacyPathParser( this.archivaConfiguration ) );
RepositoryRequest repoRequest = new RepositoryRequest( );
resourceFactory.setRepositoryRequest( repoRequest );

try

+ 3
- 12
archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/content/maven2/RepositoryRequest.java View File

@@ -22,8 +22,6 @@ package org.apache.archiva.repository.content.maven2;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.content.PathParser;
import org.apache.archiva.repository.content.legacy.LegacyPathParser;
import org.apache.archiva.repository.content.legacy.ManagedLegacyRepositoryContent;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.archiva.repository.metadata.MetadataTools;
import org.apache.commons.lang.StringUtils;
@@ -36,11 +34,9 @@ public class RepositoryRequest
{
private PathParser defaultPathParser = new DefaultPathParser();

private PathParser legacyPathParser;

public RepositoryRequest( LegacyPathParser legacyPathParser )
public RepositoryRequest()
{
this.legacyPathParser = legacyPathParser;
// no op
}

/**
@@ -77,7 +73,7 @@ public class RepositoryRequest
}
else if ( isLegacy( path ) )
{
return legacyPathParser.toArtifactReference( path );
throw new LayoutException( "Legacy Maven1 repository not supported anymore." );
}
else
{
@@ -264,11 +260,6 @@ public class RepositoryRequest

if ( isMetadata( referencedResource ) )
{
if ( repository instanceof ManagedLegacyRepositoryContent )
{
throw new LayoutException( "Cannot translate metadata request to legacy layout." );
}

/* Nothing to translate.
* Default layout is the only layout that can contain maven-metadata.xml files, and
* if the managedRepository is layout legacy, this request would never occur.

+ 1
- 6
archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml View File

@@ -29,14 +29,9 @@

<context:annotation-config/>
<context:component-scan base-package="org.apache.archiva.dependency.tree.maven2,org.apache.archiva.metadata.repository.storage.maven2,
org.apache.archiva.repository.content.maven2,org.apache.archiva.repository.content.legacy"/>
org.apache.archiva.repository.content.maven2"/>


<bean name="pathParser#legacy" class="org.apache.archiva.repository.content.legacy.LegacyPathParser">
<constructor-arg>
<ref bean="archivaConfiguration#default"/>
</constructor-arg>
</bean>

<alias name="repositoryStorage#maven2" alias="repositoryStorage#default"/>
<alias name="repositoryStorage#maven2" alias="repositoryStorage#legacy"/>

+ 0
- 455
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractLegacyRepositoryContentTestCase.java View File

@@ -1,455 +0,0 @@
package org.apache.archiva.metadata.repository.storage.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.model.ArtifactReference;
import org.apache.archiva.repository.AbstractRepositoryLayerTestCase;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;

import static org.junit.Assert.*;

/**
* AbstractLegacyRepositoryContentTestCase
*/
@RunWith ( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-no-mock-conf.xml" } )
public abstract class AbstractLegacyRepositoryContentTestCase
extends AbstractRepositoryLayerTestCase
{

@Test
public void testBadPathArtifactIdMissingA()
{
assertBadPath( "groupId/jars/-1.0.jar", "artifactId is missing" );
}

@Test
public void testBadPathArtifactIdMissingB()
{
assertBadPath( "groupId/jars/1.0.jar", "artifactId is missing" );
}


@Test
public void testBadPathMissingType()
{
assertBadPath( "invalid/invalid/1/invalid-1", "missing type" );
}

@Test
public void testBadPathTooShort()
{
// NEW
assertBadPath( "invalid/invalid-1.0.jar", "path is too short" );
}


@Test
public void testBadPathWrongPackageExtension()
{
assertBadPath( "org.apache.maven.test/jars/artifactId-1.0.war", "wrong package extension" );
}

/**
* [MRM-432] Oddball version spec.
* Example of an oddball / unusual version spec.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodButOddVersionSpecGanymedSsh2()
throws LayoutException
{
String groupId = "ch.ethz.ganymed";
String artifactId = "ganymed-ssh2";
String version = "build210";
String type = "jar";
String path = "ch.ethz.ganymed/jars/ganymed-ssh2-build210.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-432] Oddball version spec.
* Example of an oddball / unusual version spec.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodButOddVersionSpecJavaxComm()
throws LayoutException
{
String groupId = "javax";
String artifactId = "comm";
String version = "3.0-u1";
String type = "jar";
String path = "javax/jars/comm-3.0-u1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-432] Oddball version spec.
* Example of an oddball / unusual version spec.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodButOddVersionSpecJavaxPersistence()
throws LayoutException
{
String groupId = "javax.persistence";
String artifactId = "ejb";
String version = "3.0-public_review";
String type = "jar";
String path = "javax.persistence/jars/ejb-3.0-public_review.jar";

/*
* The version id of "public_review" can cause problems. is it part of
* the version spec? or the classifier?
*/

assertLayout( path, groupId, artifactId, version, null, type );
}

@Test
public void testGoodCommonsLang()
throws LayoutException
{
String groupId = "commons-lang";
String artifactId = "commons-lang";
String version = "2.1";
String type = "jar";
String path = "commons-lang/jars/commons-lang-2.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

@Test
public void testGoodDerby()
throws LayoutException
{
String groupId = "org.apache.derby";
String artifactId = "derby";
String version = "10.2.2.0";
String type = "jar";
String path = "org.apache.derby/jars/derby-10.2.2.0.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* Test the ejb-client type spec.
* Type specs are not a 1 to 1 map to the extension.
* This tests that effect.
* @throws org.apache.archiva.repository.layout.LayoutException
*/
/* TODO: Re-enabled in the future.
public void testGoodFooEjbClient()
throws LayoutException
{
String groupId = "com.foo";
String artifactId = "foo-client";
String version = "1.0";
String type = "ejb"; // oddball type-spec (should result in jar extension)
String path = "com.foo/ejbs/foo-client-1.0.jar";

assertLayout( path, groupId, artifactId, version, classifier, type );
}
*/

/**
* Test the classifier.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodFooLibJavadoc()
throws LayoutException
{
String groupId = "com.foo.lib";
String artifactId = "foo-lib";
String version = "2.1-alpha-1";
String type = "javadoc";
String classifier = "javadoc";
String path = "com.foo.lib/javadoc.jars/foo-lib-2.1-alpha-1-javadoc.jar";

assertLayout( path, groupId, artifactId, version, classifier, type );
}

/**
* Test the classifier, and java-source type spec.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodFooLibSources()
throws LayoutException
{
String groupId = "com.foo.lib";
String artifactId = "foo-lib";
String version = "2.1-alpha-1";
String type = "java-source"; // oddball type-spec (should result in jar extension)
String classifier = "sources";
String path = "com.foo.lib/java-sources/foo-lib-2.1-alpha-1-sources.jar";

assertLayout( path, groupId, artifactId, version, classifier, type );
}

@Test
public void testGoodFooTool()
throws LayoutException
{
String groupId = "com.foo";
String artifactId = "foo-tool";
String version = "1.0";
String type = "jar";
String path = "com.foo/jars/foo-tool-1.0.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

@Test
public void testGoodGeronimoEjbSpec()
throws LayoutException
{
String groupId = "org.apache.geronimo.specs";
String artifactId = "geronimo-ejb_2.1_spec";
String version = "1.0.1";
String type = "jar";
String path = "org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

@Test
public void testGoodLdapClientsPom()
throws LayoutException
{
String groupId = "directory-clients";
String artifactId = "ldap-clients";
String version = "0.9.1-SNAPSHOT";
String type = "pom";
String path = "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* A timestamped versioned artifact, should reside in a SNAPSHOT baseversion directory.
*
* @throws org.apache.archiva.repository.layout.LayoutException
*
*/
@Test
public void testGoodSnapshotMavenTest()
throws LayoutException
{
String groupId = "org.apache.archiva.test";
String artifactId = "redonkulous";
String version = "3.1-beta-1-20050831.101112-42";
String type = "jar";
String path = "org.apache.archiva.test/jars/redonkulous-3.1-beta-1-20050831.101112-42.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-519] version identifiers within filename cause misidentification of version.
* Example uses "test" in artifact Id, which is also part of the versionKeyword list.
*/
@Test
public void testGoodVersionKeywordInArtifactId()
throws LayoutException
{
String groupId = "maven";
String artifactId = "maven-test-plugin";
String version = "1.8.2";
String type = "pom";

String path = "maven/poms/maven-test-plugin-1.8.2.pom";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods.
* Example uses "test" in artifact Id, which is also part of the versionKeyword list.
*/
@Test
public void testGoodDetectPluginMavenTest()
throws LayoutException
{
String groupId = "maven";
String artifactId = "maven-test-plugin";
String version = "1.8.2";
String type = "maven-one-plugin";
String path = "maven/plugins/maven-test-plugin-1.8.2.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods.
*/
@Test
public void testGoodDetectPluginAvalonMeta()
throws LayoutException
{
String groupId = "avalon-meta";
String artifactId = "avalon-meta-plugin";
String version = "1.1";
String type = "maven-one-plugin";
String path = "avalon-meta/plugins/avalon-meta-plugin-1.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods.
*/
@Test
public void testGoodDetectPluginCactusMaven()
throws LayoutException
{
String groupId = "cactus";
String artifactId = "cactus-maven";
String version = "1.7dev-20040815";
String type = "maven-one-plugin";
String path = "cactus/plugins/cactus-maven-1.7dev-20040815.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods.
*/
@Test
public void testGoodDetectPluginGeronimoPackaging()
throws LayoutException
{
String groupId = "geronimo";
String artifactId = "geronimo-packaging-plugin";
String version = "1.0.1";
String type = "maven-one-plugin";
String path = "geronimo/plugins/geronimo-packaging-plugin-1.0.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-768] Artifact type "maven-plugin" does not distinguish maven1 and maven2 plugins.
* This produces conflicts when m2 plugins are stored in legacy-layout repository
*/
@Test
public void testMaven1Maven2PluginTypeDistinc()
throws Exception
{
String groupId = "com.sun.tools.xjc.maven2";
String artifactId = "maven-jaxb-plugin";
String version = "1.1";
String type = "maven-plugin";
String path = "com.sun.tools.xjc.maven2/maven-plugins/maven-jaxb-plugin-1.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* Perform a roundtrip through the layout routines to determine success.
*
* @param classifier TODO
*/
private void assertLayout( String path, String groupId, String artifactId, String version, String classifier,
String type )
throws LayoutException
{
ArtifactReference expectedArtifact = createArtifact( groupId, artifactId, version, classifier, type );

// --- Artifact Tests.
// Artifact to Path
assertEquals( "Artifact <" + expectedArtifact + "> to path:", path, toPath( expectedArtifact ) );

// --- Artifact Reference Tests

// Path to Artifact Reference.
ArtifactReference testReference = toArtifactReference( path );
assertArtifactReference( testReference, groupId, artifactId, version, classifier, type );

// And back again, using test Reference from previous step.
assertEquals( "Artifact <" + expectedArtifact + "> to path:", path, toPath( testReference ) );
}

private void assertArtifactReference( ArtifactReference actualReference, String groupId, String artifactId,
String version, String classifier, String type )
{
String expectedId = "ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + type;

assertNotNull( expectedId + " - Should not be null.", actualReference );

assertEquals( expectedId + " - Group ID", groupId, actualReference.getGroupId() );
assertEquals( expectedId + " - Artifact ID", artifactId, actualReference.getArtifactId() );
assertEquals( expectedId + " - Version ID", version, actualReference.getVersion() );
assertEquals( expectedId + " - classifier", classifier, actualReference.getClassifier() );
assertEquals( expectedId + " - Type", type, actualReference.getType() );
}

protected ArtifactReference createArtifact( String groupId, String artifactId, String version, String classifier,
String type )
{
ArtifactReference artifact = new ArtifactReference();
artifact.setGroupId( groupId );
artifact.setArtifactId( artifactId );
artifact.setVersion( version );
artifact.setClassifier( classifier );
artifact.setType( type );
assertNotNull( artifact );
return artifact;
}

private void assertBadPath( String path, String reason )
{
try
{
toArtifactReference( path );
fail(
"Should have thrown a LayoutException on the invalid path [" + path + "] because of [" + reason + "]" );
}
catch ( LayoutException e )
{
/* expected path */
}
}


protected abstract ArtifactReference toArtifactReference( String path )
throws LayoutException;

protected abstract String toPath( ArtifactReference reference );

}

+ 0
- 196
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedLegacyRepositoryContentTest.java View File

@@ -1,196 +0,0 @@
package org.apache.archiva.metadata.repository.storage.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.admin.model.beans.ManagedRepository;
import org.apache.archiva.common.utils.VersionComparator;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.VersionedReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.layout.LayoutException;
import org.junit.Before;
import org.junit.Test;

import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import static org.junit.Assert.*;

/**
* ManagedLegacyRepositoryContentTest
*
*
*/
public class ManagedLegacyRepositoryContentTest
extends AbstractLegacyRepositoryContentTestCase
{
@Inject
@Named( "managedRepositoryContent#legacy" )
private ManagedRepositoryContent repoContent;

@Before
public void setUp()
throws Exception
{
File repoDir = new File( "src/test/repositories/legacy-repository" );

ManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir );
repository.setLayout( "legacy" );

//repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "legacy" );
repoContent.setRepository( repository );
}

@Test
public void testGetVersionsFromProjectReference()
throws Exception
{
assertVersions( "org.apache.maven", "testing", new String[]{ "UNKNOWN",
// "1.0-javadoc",
// "1.0-sources",
"1.0", "1.0-20050611.112233-1" } );
}

@Test
public void testGetVersionsFromVersionedReference()
throws Exception
{
assertVersions( "org.apache.maven", "testing", "1.0", new String[]{
// "1.0-javadoc",
// "1.0-sources",
"1.0", "1.0-20050611.112233-1" } );
}

private void assertVersions( String groupId, String artifactId, String[] expectedVersions )
throws Exception
{
ProjectReference reference = new ProjectReference();
reference.setGroupId( groupId );
reference.setArtifactId( artifactId );

// Request the versions.
Set<String> testedVersionSet = repoContent.getVersions( reference );

// Sort the list (for asserts later)
List<String> testedVersions = new ArrayList<>();
testedVersions.addAll( testedVersionSet );
Collections.sort( testedVersions, new VersionComparator() );

// Test the expected array of versions, to the actual tested versions
assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );

for ( int i = 0; i < expectedVersions.length; i++ )
{
String actualVersion = testedVersions.get( i );
assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
}
}

private void assertVersions( String groupId, String artifactId, String version, String[] expectedVersions )
throws Exception
{
VersionedReference reference = new VersionedReference();
reference.setGroupId( groupId );
reference.setArtifactId( artifactId );
reference.setVersion( version );

// Request the versions.
Set<String> testedVersionSet = repoContent.getVersions( reference );

// Sort the list (for asserts later)
List<String> testedVersions = new ArrayList<>();
testedVersions.addAll( testedVersionSet );
Collections.sort( testedVersions, new VersionComparator() );

// Test the expected array of versions, to the actual tested versions
assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );

for ( int i = 0; i < expectedVersions.length; i++ )
{
String actualVersion = testedVersions.get( i );
assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
}
}

@Test
public void testGetRelatedArtifacts()
throws Exception
{
ArtifactReference reference = createArtifact( "org.apache.maven", "testing", "1.0", null, "jar" );

Set<ArtifactReference> related = repoContent.getRelatedArtifacts( reference );
assertNotNull( related );

String expected[] = new String[]{ "org.apache.maven/jars/testing-1.0.jar",
"org.apache.maven/java-sources/testing-1.0-sources.jar",
"org.apache.maven/jars/testing-1.0-20050611.112233-1.jar", "org.apache.maven/poms/testing-1.0.pom",
"org.apache.maven/distributions/testing-1.0.tar.gz", "org.apache.maven/distributions/testing-1.0.zip",
"org.apache.maven/javadoc.jars/testing-1.0-javadoc.jar" };

StringBuilder relatedDebugString = new StringBuilder();
relatedDebugString.append( "[" );
for ( ArtifactReference ref : related )
{
String actualPath = repoContent.toPath( ref );
relatedDebugString.append( actualPath ).append( ":" );
}
relatedDebugString.append( "]" );

for ( String expectedPath : expected )
{
boolean found = false;
for ( ArtifactReference actualRef : related )
{
String actualPath = repoContent.toPath( actualRef );
if ( actualPath.endsWith( expectedPath ) )
{
found = true;
break;
}
}
if ( !found )
{
fail( "Unable to find expected artifact [" + expectedPath + "] in list of related artifacts. "
+ "Related <" + relatedDebugString + ">" );
}
}
assertEquals( "Related <" + relatedDebugString + ">:", expected.length, related.size() );
}


@Override
protected ArtifactReference toArtifactReference( String path )
throws LayoutException
{
return repoContent.toArtifactReference( path );
}

@Override
protected String toPath( ArtifactReference reference )
{
return repoContent.toPath( reference );
}
}

+ 0
- 68
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteLegacyRepositoryContentTest.java View File

@@ -1,68 +0,0 @@
package org.apache.archiva.metadata.repository.storage.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.admin.model.beans.RemoteRepository;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.RemoteRepositoryContent;
import org.apache.archiva.repository.layout.LayoutException;
import org.junit.Before;

import javax.inject.Inject;
import javax.inject.Named;

/**
* RemoteLegacyRepositoryContentTest
*
*
*/
public class RemoteLegacyRepositoryContentTest
extends AbstractLegacyRepositoryContentTestCase
{
@Inject
@Named( "remoteRepositoryContent#legacy" )
private RemoteRepositoryContent repoContent;

@Before
public void setUp()
throws Exception
{
RemoteRepository repository =
createRemoteRepository( "testRemoteLegacyRepo", "Unit Test Remote Legacy Repo",
"http://repo1.maven.org/maven/" );
repository.setLayout( "legacy" );

//repoContent = (RemoteRepositoryContent) lookup( RemoteRepositoryContent.class, "legacy" );
repoContent.setRepository( repository );
}

@Override
protected ArtifactReference toArtifactReference( String path )
throws LayoutException
{
return repoContent.toArtifactReference( path );
}

@Override
protected String toPath( ArtifactReference reference )
{
return repoContent.toPath( reference );
}
}

+ 99
- 0
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java View File

@@ -0,0 +1,99 @@
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.admin.model.beans.ManagedRepository;
import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.junit.Rule;
import org.junit.rules.TestName;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;

import java.io.File;
import javax.inject.Inject;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

/**
* AbstractRepositoryLayerTestCase
*
*
*/
@RunWith( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-no-mock-conf.xml" } )
public abstract class AbstractRepositoryLayerTestCase
{
@Rule
public TestName name = new TestName();

@Inject
protected ApplicationContext applicationContext;

protected ManagedRepository createRepository( String id, String name, File location )
{
ManagedRepository repo = new ManagedRepository();
repo.setId( id );
repo.setName( name );
repo.setLocation( location.getAbsolutePath() );
return repo;
}

protected RemoteRepository createRemoteRepository( String id, String name, String url )
{
RemoteRepository repo = new RemoteRepository();
repo.setId( id );
repo.setName( name );
repo.setUrl( url );
return repo;
}

protected ManagedRepositoryContent createManagedRepositoryContent( String id, String name, File location,
String layout )
throws Exception
{
ManagedRepository repo = new ManagedRepository();
repo.setId( id );
repo.setName( name );
repo.setLocation( location.getAbsolutePath() );
repo.setLayout( layout );

ManagedRepositoryContent repoContent =
applicationContext.getBean( "managedRepositoryContent#" + layout, ManagedRepositoryContent.class );
repoContent.setRepository( repo );

return repoContent;
}

protected RemoteRepositoryContent createRemoteRepositoryContent( String id, String name, String url, String layout )
throws Exception
{
RemoteRepository repo = new RemoteRepository();
repo.setId( id );
repo.setName( name );
repo.setUrl( url );
repo.setLayout( layout );

RemoteRepositoryContent repoContent =
applicationContext.getBean( "remoteRepositoryContent#" + layout, RemoteRepositoryContent.class );
repoContent.setRepository( repo );

return repoContent;
}
}

+ 16
- 146
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java View File

@@ -24,7 +24,6 @@ import org.apache.archiva.common.utils.FileUtil;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.content.legacy.LegacyPathParser;
import org.apache.archiva.repository.layout.LayoutException;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.commons.lang.StringUtils;
@@ -43,9 +42,9 @@ import static org.junit.Assert.*;
/**
* RepositoryRequestTest
*/
@RunWith ( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration (
{ "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-repo-request-test.xml" } )
@RunWith( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml",
"classpath:/spring-context-repo-request-test.xml" } )
public class RepositoryRequestTest
{

@@ -53,7 +52,7 @@ public class RepositoryRequestTest
protected ApplicationContext applicationContext;

@Inject
@Named ( "archivaConfiguration#repo-request-test" )
@Named( "archivaConfiguration#repo-request-test" )
private ArchivaConfiguration archivaConfiguration;

private RepositoryRequest repoRequest;
@@ -62,8 +61,7 @@ public class RepositoryRequestTest
public void setUp()
throws Exception
{
LegacyPathParser legacyPathParser = new LegacyPathParser( archivaConfiguration );
repoRequest = new RepositoryRequest( legacyPathParser );
repoRequest = new RepositoryRequest();
}

@Test
@@ -84,11 +82,6 @@ public class RepositoryRequestTest
assertInvalidRequest( "groupId/jars/-1.0.jar" );
}

@Test
public void testInvalidLegacyRequestBadLocation()
{
assertInvalidRequest( "org.apache.maven.test/jars/artifactId-1.0.war" );
}

@Test
public void testInvalidRequestTooShort()
@@ -102,7 +95,7 @@ public class RepositoryRequestTest
assertInvalidRequest( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyGanymed()
throws Exception
{
@@ -118,7 +111,7 @@ public class RepositoryRequestTest
"ganymed-ssh2", "build210", null, "jar" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyJavaxComm()
throws Exception
{
@@ -132,7 +125,7 @@ public class RepositoryRequestTest
assertValid( "javax/comm/3.0-u1/comm-3.0-u1.jar", "javax", "comm", "3.0-u1", null, "jar" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyJavaxPersistence()
throws Exception
{
@@ -148,7 +141,7 @@ public class RepositoryRequestTest
"3.0-public_review", null, "jar" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyMavenTestPlugin()
throws Exception
{
@@ -163,7 +156,7 @@ public class RepositoryRequestTest
null, "pom" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyCommonsLangJavadoc()
throws Exception
{
@@ -179,7 +172,7 @@ public class RepositoryRequestTest
"2.1", "javadoc", "javadoc" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyDerbyPom()
throws Exception
{
@@ -197,7 +190,7 @@ public class RepositoryRequestTest
null, "pom" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyGeronimoEjbSpec()
throws Exception
{
@@ -213,7 +206,7 @@ public class RepositoryRequestTest
"org.apache.geronimo.specs", "geronimo-ejb_2.1_spec", "1.0.1", null, "jar" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyLdapSnapshot()
throws Exception
{
@@ -229,7 +222,7 @@ public class RepositoryRequestTest
"directory-clients", "ldap-clients", "0.9.1-SNAPSHOT", null, "pom" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyTestArchSnapshot()
throws Exception
{
@@ -245,7 +238,7 @@ public class RepositoryRequestTest
"test-arch", "2.0.3-SNAPSHOT", null, "pom" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyOddDottedArtifactId()
throws Exception
{
@@ -261,7 +254,7 @@ public class RepositoryRequestTest
"com.company.department", "com.company.department.project", "0.2", null, "pom" );
}

@Test
@Test( expected = LayoutException.class )
public void testValidLegacyTimestampedSnapshot()
throws Exception
{
@@ -394,22 +387,6 @@ public class RepositoryRequestTest
repository ) );
}

/**
* [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
*/
@Test
public void testToNativePathArtifactLegacyToDefaultDualExtension()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "default" );

// TODO: this is a good test case for maven 1 -> maven 2 link, since m2 doesn't support the distribution-zip type

// Test (artifact) legacy to default - dual extension
// NOTE: The detection of a dual extension is flawed.
assertEquals( "org/project/example-presentation/3.2.xml/example-presentation-3.2.xml.zip",
repoRequest.toNativePath( "org.project/zips/example-presentation-3.2.xml.zip", repository ) );
}

@Test
public void testToNativePathMetadataDefaultToDefault()
@@ -423,71 +400,6 @@ public class RepositoryRequestTest
repository ) );
}

@Test
public void testNativePathPomLegacyToDefault()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "default" );

// Test (pom) legacy to default
assertEquals( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0.pom",
repoRequest.toNativePath( "org.apache.derby/poms/derby-10.2.2.0.pom", repository ) );
}

@Test
public void testNativePathPomLegacyToLegacy()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (pom) legacy to default
assertEquals( "org.apache.derby/poms/derby-10.2.2.0.pom",
repoRequest.toNativePath( "org.apache.derby/poms/derby-10.2.2.0.pom", repository ) );
}

@Test
public void testNativePathPomLegacyToDefaultEjb()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "default" );

// Test (pom) legacy to default
String result = repoRequest.toNativePath( "mygroup/ejbs/myejb-1.0.jar", repository );
assertEquals( "mygroup/myejb/1.0/myejb-1.0.jar", result );
}

@Test
public void testNativePathPomLegacyToLegacyEjb()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (pom) legacy to default
assertEquals( "mygroup/ejbs/myejb-1.0.jar",
repoRequest.toNativePath( "mygroup/ejbs/myejb-1.0.jar", repository ) );
}

@Test
public void testNativePathPomLegacyToLegacyStrutsModule()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (pom) legacy to default
assertEquals( "WebPortal/struts-modules/eventsDB-1.2.3.struts-module",
repoRequest.toNativePath( "WebPortal/struts-modules/eventsDB-1.2.3.struts-module", repository ) );
}

@Test
public void testNativePathSupportFileLegacyToDefault()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "default" );

// Test (supportfile) legacy to default
assertEquals( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0.jar.sha1",
repoRequest.toNativePath( "org.apache.derby/jars/derby-10.2.2.0.jar.sha1", repository ) );
}

@Test
public void testNativePathBadRequestTooShort()
@@ -561,48 +473,6 @@ public class RepositoryRequestTest
}
}

@Test
public void testToNativePathLegacyMetadataDefaultToLegacy()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (metadata) default to legacy

// Special Case: This direction is not supported, should throw a LayoutException.
try
{
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml", repository );
fail( "Should have thrown a LayoutException, can't translate a maven-metadata.xml to a legacy layout." );
}
catch ( LayoutException e )
{
// expected path.
}
}

@Test
public void testNativePathPomDefaultToLegacy()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (pom) default to legacy
assertEquals( "org.apache.derby/poms/derby-10.2.2.0.pom",
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0.pom", repository ) );
}

@Test
public void testNativePathSupportFileDefaultToLegacy()
throws Exception
{
ManagedRepositoryContent repository = createManagedRepo( "legacy" );

// Test (supportfile) default to legacy
assertEquals( "org.apache.derby/jars/derby-10.2.2.0.jar.sha1",
repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0.jar.sha1",
repository ) );
}

private void assertValid( String path, String groupId, String artifactId, String version, String classifier,
String type )

Loading…
Cancel
Save