mirror of https://github.com/apache/archiva.git
[MRM-1327] very rough prototype of a JCR based storage mechanism. Passes tests, but needs to be cleaned up and properly integrated, then tested for performance
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1050283 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f2579ffce2
commit
4423d46b4f
|
@ -20,11 +20,18 @@ package org.apache.archiva.metadata.repository;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||||
|
import org.apache.archiva.metadata.model.CiManagement;
|
||||||
|
import org.apache.archiva.metadata.model.Dependency;
|
||||||
|
import org.apache.archiva.metadata.model.IssueManagement;
|
||||||
|
import org.apache.archiva.metadata.model.License;
|
||||||
import org.apache.archiva.metadata.model.MailingList;
|
import org.apache.archiva.metadata.model.MailingList;
|
||||||
import org.apache.archiva.metadata.model.MetadataFacet;
|
import org.apache.archiva.metadata.model.MetadataFacet;
|
||||||
import org.apache.archiva.metadata.model.MetadataFacetFactory;
|
import org.apache.archiva.metadata.model.MetadataFacetFactory;
|
||||||
|
import org.apache.archiva.metadata.model.Organization;
|
||||||
import org.apache.archiva.metadata.model.ProjectMetadata;
|
import org.apache.archiva.metadata.model.ProjectMetadata;
|
||||||
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
||||||
|
import org.apache.archiva.metadata.model.ProjectVersionReference;
|
||||||
|
import org.apache.archiva.metadata.model.Scm;
|
||||||
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -102,7 +109,87 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
assertEquals( Collections.<String>emptyList(), namespaces );
|
assertEquals( Collections.<String>emptyList(), namespaces );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetNamespaceOnly()
|
||||||
|
{
|
||||||
|
assertEquals( Collections.emptyList(), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
||||||
|
|
||||||
|
assertEquals( Collections.singletonList( TEST_NAMESPACE ), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetProjectOnly()
|
||||||
|
{
|
||||||
|
assertNull( repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ) );
|
||||||
|
assertEquals( Collections.emptyList(), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
ProjectMetadata project = new ProjectMetadata();
|
||||||
|
project.setId( TEST_PROJECT );
|
||||||
|
project.setNamespace( TEST_NAMESPACE );
|
||||||
|
|
||||||
|
repository.updateProject( TEST_REPO_ID, project );
|
||||||
|
|
||||||
|
project = repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT );
|
||||||
|
assertEquals( TEST_PROJECT, project.getId() );
|
||||||
|
assertEquals( TEST_NAMESPACE, project.getNamespace() );
|
||||||
|
|
||||||
|
// test that namespace is also constructed
|
||||||
|
assertEquals( Collections.singletonList( TEST_NAMESPACE ), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetProjectVersionOnly()
|
||||||
|
throws MetadataResolutionException
|
||||||
|
{
|
||||||
|
assertNull( repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) );
|
||||||
|
assertNull( repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ) );
|
||||||
|
assertEquals( Collections.<String>emptyList(), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||||
|
metadata.setId( TEST_PROJECT_VERSION );
|
||||||
|
|
||||||
|
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||||
|
|
||||||
|
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getId() );
|
||||||
|
|
||||||
|
// test that namespace and project is also constructed
|
||||||
|
assertEquals( Collections.singletonList( TEST_NAMESPACE ), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
ProjectMetadata projectMetadata = repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT );
|
||||||
|
assertEquals( TEST_PROJECT, projectMetadata.getId() );
|
||||||
|
assertEquals( TEST_NAMESPACE, projectMetadata.getNamespace() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetArtifactOnly()
|
||||||
|
throws MetadataResolutionException
|
||||||
|
{
|
||||||
|
assertEquals( Collections.<ArtifactMetadata>emptyList(),
|
||||||
|
new ArrayList<ArtifactMetadata>(
|
||||||
|
repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ) );
|
||||||
|
assertNull( repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) );
|
||||||
|
assertNull( repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ) );
|
||||||
|
assertEquals( Collections.<String>emptyList(), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
ArtifactMetadata metadata = createArtifact();
|
||||||
|
|
||||||
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata );
|
||||||
|
|
||||||
|
Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
|
||||||
|
TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( Collections.singletonList( metadata ), new ArrayList<ArtifactMetadata>( artifacts ) );
|
||||||
|
|
||||||
|
// test that namespace, project and project version is also constructed
|
||||||
|
assertEquals( Collections.singletonList( TEST_NAMESPACE ), repository.getRootNamespaces( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
ProjectMetadata projectMetadata = repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT );
|
||||||
|
assertEquals( TEST_PROJECT, projectMetadata.getId() );
|
||||||
|
assertEquals( TEST_NAMESPACE, projectMetadata.getNamespace() );
|
||||||
|
|
||||||
|
ProjectVersionMetadata projectVersionMetadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, projectVersionMetadata.getId() );
|
||||||
|
}
|
||||||
|
|
||||||
public void testUpdateProjectVersionMetadataWithNoOtherArchives()
|
public void testUpdateProjectVersionMetadataWithNoOtherArchives()
|
||||||
|
throws MetadataResolutionException
|
||||||
{
|
{
|
||||||
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||||
metadata.setId( TEST_PROJECT_VERSION );
|
metadata.setId( TEST_PROJECT_VERSION );
|
||||||
|
@ -111,6 +198,134 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
mailingList.setOtherArchives( Collections.<String>emptyList() );
|
mailingList.setOtherArchives( Collections.<String>emptyList() );
|
||||||
metadata.setMailingLists( Collections.singletonList( mailingList ) );
|
metadata.setMailingLists( Collections.singletonList( mailingList ) );
|
||||||
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||||
|
|
||||||
|
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getId() );
|
||||||
|
assertEquals( 1, metadata.getMailingLists().size() );
|
||||||
|
mailingList = metadata.getMailingLists().get( 0 );
|
||||||
|
assertEquals( "Foo List", mailingList.getName() );
|
||||||
|
assertEquals( Collections.<String>emptyList(), mailingList.getOtherArchives() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testUpdateProjectVersionMetadataWithAllElements()
|
||||||
|
throws MetadataResolutionException
|
||||||
|
{
|
||||||
|
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||||
|
metadata.setId( TEST_PROJECT_VERSION );
|
||||||
|
|
||||||
|
metadata.setName( "project name" );
|
||||||
|
metadata.setDescription( "project description" );
|
||||||
|
|
||||||
|
MailingList mailingList = new MailingList();
|
||||||
|
mailingList.setName( "Foo List" );
|
||||||
|
mailingList.setOtherArchives( Collections.singletonList( "other archive" ) );
|
||||||
|
metadata.setMailingLists( Collections.singletonList( mailingList ) );
|
||||||
|
|
||||||
|
Scm scm = new Scm();
|
||||||
|
scm.setConnection( "connection" );
|
||||||
|
scm.setDeveloperConnection( "dev conn" );
|
||||||
|
scm.setUrl( "url" );
|
||||||
|
metadata.setScm( scm );
|
||||||
|
|
||||||
|
CiManagement ci = new CiManagement();
|
||||||
|
ci.setSystem( "system" );
|
||||||
|
ci.setUrl( "ci url" );
|
||||||
|
metadata.setCiManagement( ci );
|
||||||
|
|
||||||
|
IssueManagement tracker = new IssueManagement();
|
||||||
|
tracker.setSystem( "system" );
|
||||||
|
tracker.setUrl( "issue tracker url" );
|
||||||
|
metadata.setIssueManagement( tracker );
|
||||||
|
|
||||||
|
Organization org = new Organization();
|
||||||
|
org.setName( "org name" );
|
||||||
|
org.setUrl( "url" );
|
||||||
|
metadata.setOrganization( org );
|
||||||
|
|
||||||
|
License l = new License();
|
||||||
|
l.setName( "license name" );
|
||||||
|
l.setUrl( "license url" );
|
||||||
|
metadata.addLicense( l );
|
||||||
|
|
||||||
|
Dependency d = new Dependency();
|
||||||
|
d.setArtifactId( "artifactId" );
|
||||||
|
d.setClassifier( "classifier" );
|
||||||
|
d.setGroupId( "groupId" );
|
||||||
|
d.setScope( "scope" );
|
||||||
|
d.setSystemPath( "system path" );
|
||||||
|
d.setType( "type" );
|
||||||
|
d.setVersion( "version" );
|
||||||
|
metadata.addDependency( d );
|
||||||
|
|
||||||
|
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||||
|
|
||||||
|
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getId() );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getVersion() );
|
||||||
|
assertEquals( "project name", metadata.getName() );
|
||||||
|
assertEquals( "project description", metadata.getDescription() );
|
||||||
|
|
||||||
|
assertEquals( 1, metadata.getMailingLists().size() );
|
||||||
|
mailingList = metadata.getMailingLists().get( 0 );
|
||||||
|
assertEquals( "Foo List", mailingList.getName() );
|
||||||
|
assertEquals( Collections.singletonList( "other archive" ), mailingList.getOtherArchives() );
|
||||||
|
|
||||||
|
assertEquals( "connection", metadata.getScm().getConnection() );
|
||||||
|
assertEquals( "dev conn", metadata.getScm().getDeveloperConnection() );
|
||||||
|
assertEquals( "url", metadata.getScm().getUrl() );
|
||||||
|
|
||||||
|
assertEquals( "system", metadata.getCiManagement().getSystem() );
|
||||||
|
assertEquals( "ci url", metadata.getCiManagement().getUrl() );
|
||||||
|
|
||||||
|
assertEquals( "system", metadata.getIssueManagement().getSystem() );
|
||||||
|
assertEquals( "issue tracker url", metadata.getIssueManagement().getUrl() );
|
||||||
|
|
||||||
|
assertEquals( "org name", metadata.getOrganization().getName() );
|
||||||
|
assertEquals( "url", metadata.getOrganization().getUrl() );
|
||||||
|
|
||||||
|
assertEquals( 1, metadata.getLicenses().size() );
|
||||||
|
l = metadata.getLicenses().get( 0 );
|
||||||
|
assertEquals( "license name", l.getName() );
|
||||||
|
assertEquals( "license url", l.getUrl() );
|
||||||
|
|
||||||
|
assertEquals( 1, metadata.getDependencies().size() );
|
||||||
|
d = metadata.getDependencies().get( 0 );
|
||||||
|
assertEquals( "artifactId", d.getArtifactId() );
|
||||||
|
assertEquals( "classifier", d.getClassifier() );
|
||||||
|
assertEquals( "groupId", d.getGroupId() );
|
||||||
|
assertEquals( "scope", d.getScope() );
|
||||||
|
assertEquals( "system path", d.getSystemPath() );
|
||||||
|
assertEquals( "type", d.getType() );
|
||||||
|
assertEquals( "version", d.getVersion() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testUpdateProjectReference()
|
||||||
|
{
|
||||||
|
ProjectVersionReference reference = new ProjectVersionReference();
|
||||||
|
reference.setNamespace( "another.namespace" );
|
||||||
|
reference.setProjectId( "another-project-id" );
|
||||||
|
reference.setProjectVersion( "1.1" );
|
||||||
|
reference.setReferenceType( ProjectVersionReference.ReferenceType.DEPENDENCY );
|
||||||
|
|
||||||
|
repository.updateProjectReference( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, reference );
|
||||||
|
|
||||||
|
Collection<ProjectVersionReference> references = repository.getProjectReferences( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
|
assertEquals( 1, references.size() );
|
||||||
|
reference = references.iterator().next();
|
||||||
|
assertEquals( "another.namespace", reference.getNamespace() );
|
||||||
|
assertEquals( "another-project-id", reference.getProjectId() );
|
||||||
|
assertEquals( "1.1", reference.getProjectVersion() );
|
||||||
|
assertEquals( ProjectVersionReference.ReferenceType.DEPENDENCY, reference.getReferenceType() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetRepositories()
|
||||||
|
{
|
||||||
|
// currently set up this way so the behaviour of both the test and the mock config return the same repository
|
||||||
|
// set as the File implementation just uses the config rather than the content
|
||||||
|
repository.updateNamespace( TEST_REPO_ID, "namespace" );
|
||||||
|
repository.updateNamespace( "other-repo", "namespace" );
|
||||||
|
|
||||||
|
assertEquals( Arrays.asList( TEST_REPO_ID, "other-repo" ), new ArrayList<String>( repository.getRepositories() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testUpdateProjectVersionMetadataIncomplete()
|
public void testUpdateProjectVersionMetadataIncomplete()
|
||||||
|
@ -123,6 +338,17 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||||
assertEquals( true, metadata.isIncomplete() );
|
assertEquals( true, metadata.isIncomplete() );
|
||||||
|
assertNull( metadata.getCiManagement() );
|
||||||
|
assertNull( metadata.getScm() );
|
||||||
|
assertNull( metadata.getIssueManagement() );
|
||||||
|
assertNull( metadata.getOrganization() );
|
||||||
|
assertNull( metadata.getDescription() );
|
||||||
|
assertNull( metadata.getName() );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getId() );
|
||||||
|
assertEquals( TEST_PROJECT_VERSION, metadata.getVersion() );
|
||||||
|
assertTrue( metadata.getMailingLists().isEmpty() );
|
||||||
|
assertTrue( metadata.getLicenses().isEmpty() );
|
||||||
|
assertTrue( metadata.getDependencies().isEmpty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testUpdateProjectVersionMetadataWithExistingFacets()
|
public void testUpdateProjectVersionMetadataWithExistingFacets()
|
||||||
|
@ -311,9 +537,16 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testRemoveFacetsWhenUnknown()
|
public void testRemoveFacetsWhenUnknown()
|
||||||
{
|
{
|
||||||
|
// testing no exception
|
||||||
repository.removeMetadataFacets( TEST_REPO_ID, UNKNOWN );
|
repository.removeMetadataFacets( TEST_REPO_ID, UNKNOWN );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRemoveFacetWhenUnknown()
|
||||||
|
{
|
||||||
|
// testing no exception
|
||||||
|
repository.removeMetadataFacet( TEST_REPO_ID, UNKNOWN, TEST_NAME );
|
||||||
|
}
|
||||||
|
|
||||||
public void testRemoveFacet()
|
public void testRemoveFacet()
|
||||||
{
|
{
|
||||||
TestMetadataFacet metadataFacet = new TestMetadataFacet( TEST_VALUE );
|
TestMetadataFacet metadataFacet = new TestMetadataFacet( TEST_VALUE );
|
||||||
|
@ -343,11 +576,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
|
assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRemoveFacetWhenUnknown()
|
|
||||||
{
|
|
||||||
repository.removeMetadataFacet( TEST_REPO_ID, UNKNOWN, TEST_NAME );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetArtifacts()
|
public void testGetArtifacts()
|
||||||
{
|
{
|
||||||
ArtifactMetadata artifact1 = createArtifact();
|
ArtifactMetadata artifact1 = createArtifact();
|
||||||
|
@ -405,8 +633,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeOpen()
|
public void testGetArtifactsByDateRangeOpen()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -417,8 +643,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
public void testGetArtifactsByDateRangeSparseNamespace()
|
public void testGetArtifactsByDateRangeSparseNamespace()
|
||||||
{
|
{
|
||||||
String namespace = "org.apache.archiva";
|
String namespace = "org.apache.archiva";
|
||||||
repository.updateNamespace( TEST_REPO_ID, namespace );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject( namespace ) );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
artifact.setNamespace( namespace );
|
artifact.setNamespace( namespace );
|
||||||
repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
@ -429,8 +653,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeLowerBound()
|
public void testGetArtifactsByDateRangeLowerBound()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -441,8 +663,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeLowerBoundOutOfRange()
|
public void testGetArtifactsByDateRangeLowerBoundOutOfRange()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -452,8 +672,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeLowerAndUpperBound()
|
public void testGetArtifactsByDateRangeLowerAndUpperBound()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -465,8 +683,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeUpperBound()
|
public void testGetArtifactsByDateRangeUpperBound()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -477,8 +693,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByDateRangeUpperBoundOutOfRange()
|
public void testGetArtifactsByDateRangeUpperBoundOutOfRange()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -488,13 +702,9 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByRepoId()
|
public void testGetArtifactsByRepoId()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
assertFalse( repository.getArtifacts(TEST_REPO_ID).isEmpty());
|
assertEquals( Collections.singletonList( artifact ), repository.getArtifacts( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetNamespacesWithSparseDepth()
|
public void testGetNamespacesWithSparseDepth()
|
||||||
|
@ -509,8 +719,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByChecksumSingleResultMd5()
|
public void testGetArtifactsByChecksumSingleResultMd5()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -520,8 +728,6 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByChecksumSingleResultSha1()
|
public void testGetArtifactsByChecksumSingleResultSha1()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
@ -529,19 +735,23 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
TEST_SHA1 ) );
|
TEST_SHA1 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetArtifactsByChecksumDeepNamespace()
|
||||||
|
{
|
||||||
|
ArtifactMetadata artifact = createArtifact();
|
||||||
|
String namespace = "multi.level.ns";
|
||||||
|
artifact.setNamespace( namespace );
|
||||||
|
repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
|
assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID,
|
||||||
|
TEST_SHA1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
public void testGetArtifactsByChecksumMultipleResult()
|
public void testGetArtifactsByChecksumMultipleResult()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
|
|
||||||
ProjectMetadata projectMetadata = createProject();
|
|
||||||
repository.updateProject( TEST_REPO_ID, projectMetadata );
|
|
||||||
ArtifactMetadata artifact1 = createArtifact();
|
ArtifactMetadata artifact1 = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
|
||||||
|
|
||||||
projectMetadata = createProject();
|
|
||||||
String newProjectId = "another-project";
|
String newProjectId = "another-project";
|
||||||
projectMetadata.setId( newProjectId );
|
|
||||||
repository.updateProject( TEST_REPO_ID, projectMetadata );
|
|
||||||
ArtifactMetadata artifact2 = createArtifact();
|
ArtifactMetadata artifact2 = createArtifact();
|
||||||
artifact2.setProject( newProjectId );
|
artifact2.setProject( newProjectId );
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, newProjectId, TEST_PROJECT_VERSION, artifact2 );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, newProjectId, TEST_PROJECT_VERSION, artifact2 );
|
||||||
|
@ -554,18 +764,17 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
public void testGetArtifactsByChecksumNoResult()
|
public void testGetArtifactsByChecksumNoResult()
|
||||||
{
|
{
|
||||||
repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
|
|
||||||
repository.updateProject( TEST_REPO_ID, createProject() );
|
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
assertEquals( Collections.<ArtifactMetadata>emptyList(), repository.getArtifactsByChecksum( TEST_REPO_ID,
|
assertEquals( Collections.<ArtifactMetadata>emptyList(), repository.getArtifactsByChecksum( TEST_REPO_ID, "not a checksum" ) );
|
||||||
"not a checksum" ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeleteArtifact()
|
public void testDeleteArtifact()
|
||||||
{
|
{
|
||||||
ArtifactMetadata artifact = createArtifact();
|
ArtifactMetadata artifact = createArtifact();
|
||||||
|
artifact.addFacet( new TestMetadataFacet( "value" ) );
|
||||||
|
|
||||||
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||||
|
|
||||||
assertEquals( Collections.singletonList( artifact ), new ArrayList<ArtifactMetadata>( repository.getArtifacts(
|
assertEquals( Collections.singletonList( artifact ), new ArrayList<ArtifactMetadata>( repository.getArtifacts(
|
||||||
|
@ -608,15 +817,16 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
|
|
||||||
repository.deleteRepository( TEST_REPO_ID );
|
repository.deleteRepository( TEST_REPO_ID );
|
||||||
|
|
||||||
assertTrue( repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ).isEmpty() );
|
assertTrue( repository.getArtifacts( TEST_REPO_ID ).isEmpty() );
|
||||||
|
assertTrue( repository.getRootNamespaces( TEST_REPO_ID ).isEmpty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProjectMetadata createProject()
|
private static ProjectMetadata createProject()
|
||||||
{
|
{
|
||||||
return createProject( TEST_NAMESPACE );
|
return createProject( TEST_NAMESPACE );
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProjectMetadata createProject( String ns )
|
private static ProjectMetadata createProject( String ns )
|
||||||
{
|
{
|
||||||
ProjectMetadata project = new ProjectMetadata();
|
ProjectMetadata project = new ProjectMetadata();
|
||||||
project.setId( TEST_PROJECT );
|
project.setId( TEST_PROJECT );
|
||||||
|
@ -624,12 +834,12 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArtifactMetadata createArtifact()
|
private static ArtifactMetadata createArtifact()
|
||||||
{
|
{
|
||||||
return createArtifact( "jar" );
|
return createArtifact( "jar" );
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArtifactMetadata createArtifact( String type )
|
private static ArtifactMetadata createArtifact( String type )
|
||||||
{
|
{
|
||||||
ArtifactMetadata artifact = new ArtifactMetadata();
|
ArtifactMetadata artifact = new ArtifactMetadata();
|
||||||
artifact.setId( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "." + type );
|
artifact.setId( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "." + type );
|
||||||
|
@ -645,7 +855,7 @@ public abstract class AbstractMetadataRepositoryTest
|
||||||
return artifact;
|
return artifact;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ArtifactMetadataComparator
|
private static class ArtifactMetadataComparator
|
||||||
implements Comparator<ArtifactMetadata>
|
implements Comparator<ArtifactMetadata>
|
||||||
{
|
{
|
||||||
public final int compare( ArtifactMetadata a, ArtifactMetadata b )
|
public final int compare( ArtifactMetadata a, ArtifactMetadata b )
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class FileMetadataRepository
|
||||||
|
|
||||||
Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
|
Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
|
||||||
// remove properties that are not references or artifacts
|
// remove properties that are not references or artifacts
|
||||||
for ( Object key : new ArrayList( properties.keySet() ) )
|
for ( Object key : new ArrayList<Object>( properties.keySet() ) )
|
||||||
{
|
{
|
||||||
String name = (String) key;
|
String name = (String) key;
|
||||||
if ( !name.contains( ":" ) && !name.equals( "facetIds" ) )
|
if ( !name.contains( ":" ) && !name.equals( "facetIds" ) )
|
||||||
|
@ -579,7 +579,7 @@ public class FileMetadataRepository
|
||||||
properties.remove( "artifact:facetIds:" + id );
|
properties.remove( "artifact:facetIds:" + id );
|
||||||
|
|
||||||
String prefix = "artifact:facet:" + id + ":";
|
String prefix = "artifact:facet:" + id + ":";
|
||||||
for ( Object key : new ArrayList( properties.keySet() ) )
|
for ( Object key : new ArrayList<Object>( properties.keySet() ) )
|
||||||
{
|
{
|
||||||
String property = (String) key;
|
String property = (String) key;
|
||||||
if ( property.startsWith( prefix ) )
|
if ( property.startsWith( prefix ) )
|
||||||
|
@ -666,6 +666,10 @@ public class FileMetadataRepository
|
||||||
public void updateArtifact( String repoId, String namespace, String projectId, String projectVersion,
|
public void updateArtifact( String repoId, String namespace, String projectId, String projectVersion,
|
||||||
ArtifactMetadata artifact )
|
ArtifactMetadata artifact )
|
||||||
{
|
{
|
||||||
|
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||||
|
metadata.setId( projectVersion );
|
||||||
|
updateProjectVersion( repoId, namespace, projectId, metadata );
|
||||||
|
|
||||||
File directory = new File( getDirectory( repoId ), namespace + "/" + projectId + "/" + projectVersion );
|
File directory = new File( getDirectory( repoId ), namespace + "/" + projectId + "/" + projectVersion );
|
||||||
|
|
||||||
Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
|
Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
|
||||||
|
@ -741,11 +745,18 @@ public class FileMetadataRepository
|
||||||
{
|
{
|
||||||
File directory = new File( getDirectory( repoId ), namespace + "/" + projectId );
|
File directory = new File( getDirectory( repoId ), namespace + "/" + projectId );
|
||||||
|
|
||||||
Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
|
Properties properties = readOrCreateProperties( directory, PROJECT_METADATA_KEY );
|
||||||
|
|
||||||
|
ProjectMetadata project = null;
|
||||||
|
|
||||||
|
String id = properties.getProperty( "id" );
|
||||||
|
if ( id != null )
|
||||||
|
{
|
||||||
|
project = new ProjectMetadata();
|
||||||
|
project.setNamespace( properties.getProperty( "namespace" ) );
|
||||||
|
project.setId( id );
|
||||||
|
}
|
||||||
|
|
||||||
ProjectMetadata project = new ProjectMetadata();
|
|
||||||
project.setNamespace( properties.getProperty( "namespace" ) );
|
|
||||||
project.setId( properties.getProperty( "id" ) );
|
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -838,8 +849,15 @@ public class FileMetadataRepository
|
||||||
MailingList mailingList = new MailingList();
|
MailingList mailingList = new MailingList();
|
||||||
mailingList.setName( mailingListName );
|
mailingList.setName( mailingListName );
|
||||||
mailingList.setMainArchiveUrl( properties.getProperty( "mailingList." + i + ".archive" ) );
|
mailingList.setMainArchiveUrl( properties.getProperty( "mailingList." + i + ".archive" ) );
|
||||||
mailingList.setOtherArchives( Arrays.asList( properties.getProperty(
|
String p = properties.getProperty( "mailingList." + i + ".otherArchives" );
|
||||||
"mailingList." + i + ".otherArchives" ).split( "," ) ) );
|
if ( p != null && p.length() > 0 )
|
||||||
|
{
|
||||||
|
mailingList.setOtherArchives( Arrays.asList( p.split( "," ) ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mailingList.setOtherArchives( Collections.<String>emptyList() );
|
||||||
|
}
|
||||||
mailingList.setPostAddress( properties.getProperty( "mailingList." + i + ".post" ) );
|
mailingList.setPostAddress( properties.getProperty( "mailingList." + i + ".post" ) );
|
||||||
mailingList.setSubscribeAddress( properties.getProperty( "mailingList." + i + ".subscribe" ) );
|
mailingList.setSubscribeAddress( properties.getProperty( "mailingList." + i + ".subscribe" ) );
|
||||||
mailingList.setUnsubscribeAddress( properties.getProperty( "mailingList." + i + ".unsubscribe" ) );
|
mailingList.setUnsubscribeAddress( properties.getProperty( "mailingList." + i + ".unsubscribe" ) );
|
||||||
|
@ -1078,7 +1096,6 @@ public class FileMetadataRepository
|
||||||
|
|
||||||
public List<ArtifactMetadata> getArtifacts( String repoId )
|
public List<ArtifactMetadata> getArtifacts( String repoId )
|
||||||
{
|
{
|
||||||
|
|
||||||
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>();
|
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>();
|
||||||
for ( String ns : getRootNamespaces( repoId ) )
|
for ( String ns : getRootNamespaces( repoId ) )
|
||||||
{
|
{
|
||||||
|
@ -1100,9 +1117,7 @@ public class FileMetadataRepository
|
||||||
{
|
{
|
||||||
for ( ArtifactMetadata artifact : getArtifacts( repoId, ns, project, version ) )
|
for ( ArtifactMetadata artifact : getArtifacts( repoId, ns, project, version ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
artifacts.add( artifact );
|
artifacts.add( artifact );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<artifactId>plugins</artifactId>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<version>1.4-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>metadata-store-jcr</artifactId>
|
||||||
|
<name>JCR Storage for Metadata</name>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>metadata-repository-api</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>metadata-repository-api</artifactId>
|
||||||
|
<classifier>tests</classifier>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-simple</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-spring</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- TODO: dependency management -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.jcr</groupId>
|
||||||
|
<artifactId>jcr</artifactId>
|
||||||
|
<version>2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.jackrabbit</groupId>
|
||||||
|
<artifactId>jackrabbit-core</artifactId>
|
||||||
|
<version>${jackrabbit.version}</version>
|
||||||
|
<!-- TODO: trim more, or look for a lighter container? -->
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.derby</groupId>
|
||||||
|
<artifactId>derby</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.jackrabbit</groupId>
|
||||||
|
<artifactId>jackrabbit-text-extractors</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,58 @@
|
||||||
|
package org.apache.archiva.metadata.repository.jcr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.metadata.model.MetadataFacetFactory;
|
||||||
|
import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class JcrMetadataRepositoryTest
|
||||||
|
extends AbstractMetadataRepositoryTest
|
||||||
|
{
|
||||||
|
private JcrMetadataRepository jcrMetadataRepository;
|
||||||
|
|
||||||
|
public void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
File directory = getTestFile( "target/test-repositories" );
|
||||||
|
FileUtils.deleteDirectory( directory );
|
||||||
|
|
||||||
|
Map<String, MetadataFacetFactory> factories = createTestMetadataFacetFactories();
|
||||||
|
|
||||||
|
jcrMetadataRepository = new JcrMetadataRepository();
|
||||||
|
jcrMetadataRepository.setMetadataFacetFactories( factories );
|
||||||
|
|
||||||
|
this.repository = jcrMetadataRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tearDown()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.tearDown();
|
||||||
|
|
||||||
|
jcrMetadataRepository.close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
|
||||||
|
"http://jackrabbit.apache.org/dtd/repository-1.6.dtd">
|
||||||
|
|
||||||
|
<Repository>
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/>
|
||||||
|
<!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${rep.home}/repository"/>
|
||||||
|
</FileSystem> -->
|
||||||
|
<Security appName="Jackrabbit">
|
||||||
|
<SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security"/>
|
||||||
|
<AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager"/>
|
||||||
|
<LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule"/>
|
||||||
|
</Security>
|
||||||
|
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
|
||||||
|
<Workspace name="${wsp.name}">
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/>
|
||||||
|
<PersistenceManager class="org.apache.jackrabbit.core.persistence.mem.InMemPersistenceManager"/>
|
||||||
|
<!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${wsp.home}"/>
|
||||||
|
</FileSystem> <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/> -->
|
||||||
|
</Workspace>
|
||||||
|
<Versioning rootPath="${rep.home}/version">
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/>
|
||||||
|
<PersistenceManager class="org.apache.jackrabbit.core.persistence.mem.InMemPersistenceManager"/>
|
||||||
|
<!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${rep.home}/version"/>
|
||||||
|
</FileSystem>
|
||||||
|
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/>-->
|
||||||
|
</Versioning>
|
||||||
|
</Repository>
|
|
@ -37,5 +37,6 @@
|
||||||
<module>maven1-repository</module>
|
<module>maven1-repository</module>
|
||||||
<module>stage-repository-merge</module>
|
<module>stage-repository-merge</module>
|
||||||
<module>generic-metadata-support</module>
|
<module>generic-metadata-support</module>
|
||||||
|
<module>metadata-store-jcr</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
||||||
|
|
8
pom.xml
8
pom.xml
|
@ -241,7 +241,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.jackrabbit</groupId>
|
<groupId>org.apache.jackrabbit</groupId>
|
||||||
<artifactId>jackrabbit-webdav</artifactId>
|
<artifactId>jackrabbit-webdav</artifactId>
|
||||||
<version>1.5.0</version>
|
<version>${jackrabbit.version}</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>commons-logging</groupId>
|
<groupId>commons-logging</groupId>
|
||||||
|
@ -315,6 +315,11 @@
|
||||||
<version>1.4-SNAPSHOT</version>
|
<version>1.4-SNAPSHOT</version>
|
||||||
<classifier>tests</classifier>
|
<classifier>tests</classifier>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>metadata-store-jcr</artifactId>
|
||||||
|
<version>1.4-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.archiva</groupId>
|
<groupId>org.apache.archiva</groupId>
|
||||||
<artifactId>metadata-repository-file</artifactId>
|
<artifactId>metadata-repository-file</artifactId>
|
||||||
|
@ -1167,6 +1172,7 @@
|
||||||
<slf4j.version>1.5.8</slf4j.version>
|
<slf4j.version>1.5.8</slf4j.version>
|
||||||
<binder.version>0.9</binder.version>
|
<binder.version>0.9</binder.version>
|
||||||
<spring.version>2.5.6</spring.version>
|
<spring.version>2.5.6</spring.version>
|
||||||
|
<jackrabbit.version>2.2.0</jackrabbit.version>
|
||||||
</properties>
|
</properties>
|
||||||
<profiles>
|
<profiles>
|
||||||
<profile>
|
<profile>
|
||||||
|
|
Loading…
Reference in New Issue