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()
     {