You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/05/29 15:27:44 UTC
svn commit: r1487477 - in
/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra:
CassandraMetadataRepository.java model/ArtifactMetadataModel.java
model/ProjectVersionMetadataModel.java
Author: olamy
Date: Wed May 29 13:27:44 2013
New Revision: 1487477
URL: http://svn.apache.org/r1487477
Log:
fix unit tests
Modified:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java?rev=1487477&r1=1487476&r2=1487477&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java Wed May 29 13:27:44 2013
@@ -522,8 +522,6 @@ public class CassandraMetadataRepository
return;
}
- // FIXME really needed ?
- // test if the namespace exist
String namespaceKey = new Namespace.KeyBuilder().withRepositoryId( repositoryId ).withNamespace(
projectMetadata.getNamespace() ).build();
Namespace namespace = namespaceEntityManager.get( namespaceKey );
@@ -543,11 +541,17 @@ public class CassandraMetadataRepository
ArtifactMetadata artifactMeta )
throws MetadataRepositoryException
{
- updateNamespace( repositoryId, namespaceId );
+ String namespaceKey =
+ new Namespace.KeyBuilder().withRepositoryId( repositoryId ).withNamespace( namespaceId ).build();
+ Namespace namespace = namespaceEntityManager.get( namespaceKey );
+ if ( namespace == null )
+ {
+ updateNamespace( repositoryId, namespaceId );
+ }
- String key =
- new ArtifactMetadataModel.KeyBuilder().withRepositoryId( repositoryId ).withNamespace( namespaceId ).withId(
- projectId ).withProjectVersion( projectVersion ).build();
+ String key = new ArtifactMetadataModel.KeyBuilder().withRepositoryId( repositoryId ).withNamespace(
+ namespaceId ).withProject( projectId ).withId( artifactMeta.getId() ).withProjectVersion(
+ projectVersion ).build();
ArtifactMetadataModel artifactMetadataModel = artifactMetadataModelEntityManager.get( key );
if ( artifactMetadataModel == null )
@@ -559,7 +563,9 @@ public class CassandraMetadataRepository
artifactMeta.getSize(), artifactMeta.getMd5(),
artifactMeta.getSha1(), artifactMeta.getWhenGathered() );
- } else {
+ }
+ else
+ {
artifactMetadataModel.setFileLastModified( artifactMeta.getFileLastModified().getTime() );
artifactMetadataModel.setWhenGathered( artifactMeta.getWhenGathered().getTime() );
artifactMetadataModel.setSize( artifactMeta.getSize() );
@@ -575,6 +581,35 @@ public class CassandraMetadataRepository
}
+ @Override
+ public Collection<String> getArtifactVersions( final String repoId, final String namespace, final String projectId,
+ final String projectVersion )
+ throws MetadataResolutionException
+ {
+ final List<String> versions = new ArrayList<String>();
+ // FIXME use cql query
+ artifactMetadataModelEntityManager.visitAll( new Function<ArtifactMetadataModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( ArtifactMetadataModel artifactMetadataModel )
+ {
+ if ( artifactMetadataModel != null )
+ {
+ if ( StringUtils.equals( repoId, artifactMetadataModel.getRepositoryId() ) && StringUtils.equals(
+ namespace, artifactMetadataModel.getNamespace() ) && StringUtils.equals( projectId,
+ artifactMetadataModel.getProject() )
+ && StringUtils.equals( projectVersion, artifactMetadataModel.getProjectVersion() ) )
+ {
+ versions.add( artifactMetadataModel.getVersion() );
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+
+ return versions;
+ }
+
/**
* iterate over available facets to remove/add from the artifactMetadata
*
@@ -636,20 +671,32 @@ public class CassandraMetadataRepository
}
@Override
- public void updateProjectVersion( String repositoryId, String namespace, String projectId,
+ public void updateProjectVersion( String repositoryId, String namespaceId, String projectId,
ProjectVersionMetadata versionMetadata )
throws MetadataRepositoryException
{
+ String namespaceKey =
+ new Namespace.KeyBuilder().withRepositoryId( repositoryId ).withNamespace( namespaceId ).build();
+ Namespace namespace = namespaceEntityManager.get( namespaceKey );
+ if ( namespace == null )
+ {
+ updateNamespace( repositoryId, namespaceId );
+ }
+
// we don't test of repository and namespace really exist !
String key = new ProjectVersionMetadataModel.KeyBuilder().withRepository( repositoryId ).withNamespace(
- namespace ).withProjectId( projectId ).withId( versionMetadata.getId() ).build();
+ namespaceId ).withProjectId( projectId ).withId( versionMetadata.getId() ).build();
ProjectVersionMetadataModel projectVersionMetadataModel = projectVersionMetadataModelEntityManager.get( key );
- projectVersionMetadataModel =
- new BeanReplicator().replicateBean( versionMetadata, ProjectVersionMetadataModel.class );
- projectVersionMetadataModel.setRowId( key );
-
+ if ( projectVersionMetadataModel == null )
+ {
+ projectVersionMetadataModel =
+ new BeanReplicator().replicateBean( versionMetadata, ProjectVersionMetadataModel.class );
+ projectVersionMetadataModel.setRowId( key );
+ }
+ projectVersionMetadataModel.setProjectId( projectId );
+ projectVersionMetadataModel.setNamespace( new Namespace( namespaceId, new Repository( repositoryId ) ) );
projectVersionMetadataModel.setCiManagement( versionMetadata.getCiManagement() );
projectVersionMetadataModel.setIssueManagement( versionMetadata.getIssueManagement() );
projectVersionMetadataModel.setOrganization( versionMetadata.getOrganization() );
@@ -661,9 +708,10 @@ public class CassandraMetadataRepository
ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
artifactMetadataModel.setArtifactMetadataModelId(
new ArtifactMetadataModel.KeyBuilder().withId( versionMetadata.getId() ).withRepositoryId(
- repositoryId ).withNamespace( namespace ).withProjectVersion( versionMetadata.getVersion() ).build() );
+ repositoryId ).withNamespace( namespaceId ).withProjectVersion(
+ versionMetadata.getVersion() ).build() );
artifactMetadataModel.setRepositoryId( repositoryId );
- artifactMetadataModel.setNamespace( namespace );
+ artifactMetadataModel.setNamespace( namespaceId );
artifactMetadataModel.setProject( projectId );
// facets etc...
updateFacets( versionMetadata, artifactMetadataModel );
@@ -1111,16 +1159,16 @@ public class CassandraMetadataRepository
final BooleanHolder booleanHolder = new BooleanHolder();
- projectEntityManager.visitAll( new Function<Project, Boolean>()
+ projectVersionMetadataModelEntityManager.visitAll( new Function<ProjectVersionMetadataModel, Boolean>()
{
@Override
- public Boolean apply( Project project )
+ public Boolean apply( ProjectVersionMetadataModel project )
{
if ( project != null )
{
if ( StringUtils.equals( repoId, project.getNamespace().getRepository().getName() )
&& StringUtils.equals( namespace, project.getNamespace().getName() ) && StringUtils.equals(
- projectId, project.getId() ) )
+ projectId, project.getProjectId() ) )
{
booleanHolder.value = true;
}
@@ -1129,6 +1177,11 @@ public class CassandraMetadataRepository
}
} );
+ if ( !booleanHolder.value )
+ {
+ return null;
+ }
+
ProjectMetadata projectMetadata = new ProjectMetadata();
projectMetadata.setId( projectId );
projectMetadata.setNamespace( namespace );
@@ -1149,6 +1202,11 @@ public class CassandraMetadataRepository
ProjectVersionMetadataModel projectVersionMetadataModel = projectVersionMetadataModelEntityManager.get( key );
+ if ( projectVersionMetadataModel == null )
+ {
+ return null;
+ }
+
ProjectVersionMetadata projectVersionMetadata =
new BeanReplicator().replicateBean( projectVersionMetadataModel, ProjectVersionMetadata.class );
@@ -1165,34 +1223,6 @@ public class CassandraMetadataRepository
return projectVersionMetadata;
}
- @Override
- public Collection<String> getArtifactVersions( final String repoId, final String namespace, final String projectId,
- final String projectVersion )
- throws MetadataResolutionException
- {
- final List<String> versions = new ArrayList<String>();
- // FIXME use cql query
- artifactMetadataModelEntityManager.visitAll( new Function<ArtifactMetadataModel, Boolean>()
- {
- @Override
- public Boolean apply( ArtifactMetadataModel artifactMetadataModel )
- {
- if ( artifactMetadataModel != null )
- {
- if ( StringUtils.equals( repoId, artifactMetadataModel.getRepositoryId() ) && StringUtils.equals(
- namespace, artifactMetadataModel.getNamespace() ) && StringUtils.equals( projectId,
- artifactMetadataModel.getId() )
- && StringUtils.equals( projectVersion, artifactMetadataModel.getProjectVersion() ) )
- {
- versions.add( artifactMetadataModel.getVersion() );
- }
- }
- return Boolean.TRUE;
- }
- } );
-
- return versions;
- }
@Override
public Collection<ProjectVersionReference> getProjectReferences( String repoId, String namespace, String projectId,
Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java?rev=1487477&r1=1487476&r2=1487477&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java Wed May 29 13:27:44 2013
@@ -35,7 +35,7 @@ public class ArtifactMetadataModel
implements Serializable
{
- // repositoryId + namespaceId + id + projectVersion
+ // repositoryId + namespaceId + project + projectVersion + id
@Id
private String artifactMetadataModelId;
@@ -266,6 +266,8 @@ public class ArtifactMetadataModel
public static class KeyBuilder
{
+ private String project;
+
private String id;
private String namespaceId;
@@ -299,6 +301,12 @@ public class ArtifactMetadataModel
return this;
}
+ public KeyBuilder withProject( String project )
+ {
+ this.project = project;
+ return this;
+ }
+
public KeyBuilder withProjectVersion( String projectVersion )
{
this.projectVersion = projectVersion;
@@ -313,8 +321,10 @@ public class ArtifactMetadataModel
public String build()
{
+ //repositoryId + namespaceId + project + projectVersion + id
// FIXME add some controls
- return this.repositoryId + "-" + this.namespaceId + "-" + this.id + "-" + this.projectVersion;
+ return this.repositoryId + "-" + this.namespaceId + "-" + this.project + "-" + this.projectVersion
+ + this.id;
}
}
Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java?rev=1487477&r1=1487476&r2=1487477&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java Wed May 29 13:27:44 2013
@@ -38,31 +38,37 @@ public class ProjectVersionMetadataModel
@Id
private String rowId;
+ @Column( name = "namespace" )
+ private Namespace namespace;
+
/**
* id is the version
*/
@Column( name = "id" )
private String id;
- @Column( name = "url" )
+ @Column( name = "projectId" )
+ private String projectId;
+
+ @Column(name = "url")
private String url;
- @Column( name = "name" )
+ @Column(name = "name")
private String name;
- @Column( name = "description" )
+ @Column(name = "description")
private String description;
- @Column( name = "organization" )
+ @Column(name = "organization")
private Organization organization;
- @Column( name = "issueManagement" )
+ @Column(name = "issueManagement")
private IssueManagement issueManagement;
- @Column( name = "scm" )
+ @Column(name = "scm")
private Scm scm;
- @Column( name = "issueManagement" )
+ @Column(name = "issueManagement")
private CiManagement ciManagement;
// FIXME store those values in a separate table
@@ -72,9 +78,19 @@ public class ProjectVersionMetadataModel
//private List<Dependency> dependencies = new ArrayList<Dependency>();
- @Column( name = "incomplete" )
+ @Column(name = "incomplete")
private boolean incomplete;
+ public String getProjectId()
+ {
+ return projectId;
+ }
+
+ public void setProjectId( String projectId )
+ {
+ this.projectId = projectId;
+ }
+
public String getRowId()
{
return rowId;
@@ -175,6 +191,36 @@ public class ProjectVersionMetadataModel
this.incomplete = incomplete;
}
+ public Namespace getNamespace()
+ {
+ return namespace;
+ }
+
+ public void setNamespace( Namespace namespace )
+ {
+ this.namespace = namespace;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder( "ProjectVersionMetadataModel{" );
+ sb.append( "rowId='" ).append( rowId ).append( '\'' );
+ sb.append( ", namespace=" ).append( namespace );
+ sb.append( ", id='" ).append( id ).append( '\'' );
+ sb.append( ", projectId='" ).append( projectId ).append( '\'' );
+ sb.append( ", url='" ).append( url ).append( '\'' );
+ sb.append( ", name='" ).append( name ).append( '\'' );
+ sb.append( ", description='" ).append( description ).append( '\'' );
+ sb.append( ", organization=" ).append( organization );
+ sb.append( ", issueManagement=" ).append( issueManagement );
+ sb.append( ", scm=" ).append( scm );
+ sb.append( ", ciManagement=" ).append( ciManagement );
+ sb.append( ", incomplete=" ).append( incomplete );
+ sb.append( '}' );
+ return sb.toString();
+ }
+
@Override
public boolean equals( Object o )
{
@@ -197,6 +243,7 @@ public class ProjectVersionMetadataModel
return true;
}
+
@Override
public int hashCode()
{