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/19 14:24:50 UTC

svn commit: r1484278 - /archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java

Author: olamy
Date: Sun May 19 12:24:50 2013
New Revision: 1484278

URL: http://svn.apache.org/r1484278
Log:
test if table already exist before creation

Modified:
    archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.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=1484278&r1=1484277&r2=1484278&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 Sun May 19 12:24:50 2013
@@ -22,6 +22,7 @@ package org.apache.archiva.metadata.repo
 import com.google.common.base.Function;
 import com.netflix.astyanax.Keyspace;
 import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
+import com.netflix.astyanax.connectionpool.exceptions.NotFoundException;
 import com.netflix.astyanax.entitystore.DefaultEntityManager;
 import com.netflix.astyanax.entitystore.EntityManager;
 import org.apache.archiva.configuration.ArchivaConfiguration;
@@ -94,21 +95,49 @@ public class CassandraMetadataRepository
             repositoryEntityManager =
                 new DefaultEntityManager.Builder<Repository, String>().withEntityType( Repository.class ).withKeyspace(
                     keyspace ).build();
-
-            repositoryEntityManager.createStorage( null );
+            boolean exists = columnFamilyExists( "repository" );
+            // TODO very basic test we must test model change too
+            if ( !exists )
+            {
+                repositoryEntityManager.createStorage( null );
+            }
 
             namespaceEntityManager =
                 new DefaultEntityManager.Builder<Namespace, String>().withEntityType( Namespace.class ).withKeyspace(
                     keyspace ).build();
 
-            namespaceEntityManager.createStorage( null );
+            exists = columnFamilyExists( "namespace" );
+            if ( !exists )
+            {
+                namespaceEntityManager.createStorage( null );
+            }
         }
         catch ( PersistenceException e )
         {
+            // FIXME report exception
+            logger.error( e.getMessage(), e );
+        }
+        catch ( ConnectionException e )
+        {
+            // FIXME report exception
             logger.error( e.getMessage(), e );
         }
     }
 
+    private boolean columnFamilyExists( String columnFamilyName )
+        throws ConnectionException
+    {
+        try
+        {
+            Properties properties = keyspace.getColumnFamilyProperties( "repository" );
+            return true;
+        }
+        catch ( NotFoundException e )
+        {
+            return false;
+        }
+    }
+
     public EntityManager<Repository, String> getRepositoryEntityManager()
     {
         return repositoryEntityManager;