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/16 14:53:17 UTC

svn commit: r1483327 - in /archiva/sandbox/trunk/metadata-store-cassandra/src: main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java

Author: olamy
Date: Thu May 16 12:53:16 2013
New Revision: 1483327

URL: http://svn.apache.org/r1483327
Log:
configure repository test tck

Modified:
    archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java
    archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java?rev=1483327&r1=1483326&r2=1483327&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java Thu May 16 12:53:16 2013
@@ -21,6 +21,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.entitystore.DefaultEntityManager;
 import com.netflix.astyanax.entitystore.EntityManager;
 import org.apache.archiva.configuration.ArchivaConfiguration;
@@ -47,6 +48,7 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
 /**
@@ -76,17 +78,35 @@ public class CassandraMetadataRepository
 
         this.keyspace = keyspace;
 
-        repositoryEntityManager =
-            new DefaultEntityManager.Builder<Repository, String>().withEntityType( Repository.class ).withKeyspace(
-                keyspace ).build();
+        try
+        {
+            Properties properties = keyspace.getKeyspaceProperties();
+            logger.info( "keyspace properties: {}", properties );
+        }
+        catch ( ConnectionException e )
+        {
+            // FIXME better logging !
+            logger.warn( e.getMessage(), e );
+        }
 
-        repositoryEntityManager.createStorage( null );
+        try
+        {
+            repositoryEntityManager =
+                new DefaultEntityManager.Builder<Repository, String>().withEntityType( Repository.class ).withKeyspace(
+                    keyspace ).build();
+
+            repositoryEntityManager.createStorage( null );
 
-        namespaceEntityManager =
-            new DefaultEntityManager.Builder<Namespace, String>().withEntityType( Namespace.class ).withKeyspace(
-                keyspace ).build();
+            namespaceEntityManager =
+                new DefaultEntityManager.Builder<Namespace, String>().withEntityType( Namespace.class ).withKeyspace(
+                    keyspace ).build();
 
-        namespaceEntityManager.createStorage( null );
+            namespaceEntityManager.createStorage( null );
+        }
+        catch ( PersistenceException e )
+        {
+            logger.error( e.getMessage(), e );
+        }
     }
 
     public EntityManager<Repository, String> getRepositoryEntityManager()
@@ -174,17 +194,62 @@ public class CassandraMetadataRepository
 
 
     @Override
-    public Collection<String> getRootNamespaces( String repoId )
+    public Collection<String> getRootNamespaces( final String repoId )
         throws MetadataResolutionException
     {
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
+        final Set<Namespace> namespaces = new HashSet<Namespace>();
+
+        namespaceEntityManager.visitAll( new Function<Namespace, Boolean>()
+        {
+            // @Nullable add dependency ?
+            @Override
+            public Boolean apply( Namespace namespace )
+            {
+                if ( namespace != null && namespace.getRepository() != null && StringUtils.equalsIgnoreCase( repoId,
+                                                                                                             namespace.getRepository().getId() ) )
+                {
+                    if ( !StringUtils.contains( namespace.getName(), "." ) )
+                    {
+                        namespaces.add( namespace );
+                    }
+                }
+                return Boolean.TRUE;
+            }
+        } );
+
+        List<String> namespaceNames = new ArrayList<String>( namespaces.size() );
+
+        return namespaceNames;
     }
 
     @Override
-    public Collection<String> getNamespaces( String repoId, String namespace )
+    public Collection<String> getNamespaces( final String repoId, final String namespaceId )
         throws MetadataResolutionException
     {
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
+        final Set<Namespace> namespaces = new HashSet<Namespace>();
+
+        namespaceEntityManager.visitAll( new Function<Namespace, Boolean>()
+        {
+            // @Nullable add dependency ?
+            @Override
+            public Boolean apply( Namespace namespace )
+            {
+                if ( namespace != null && namespace.getRepository() != null && StringUtils.equalsIgnoreCase( repoId,
+                                                                                                             namespace.getRepository().getId() ) )
+                {
+                    if ( StringUtils.startsWith( namespace.getName(), namespaceId ) )
+                    {
+                        namespaces.add( namespace );
+                    }
+                }
+                return Boolean.TRUE;
+            }
+        } );
+
+        List<String> namespaceNames = new ArrayList<String>( namespaces.size() );
+
+        return namespaceNames;
+
     }
 
     public List<String> getNamespaces( final String repoId )

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java?rev=1483327&r1=1483326&r2=1483327&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java Thu May 16 12:53:16 2013
@@ -19,9 +19,18 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest;
+import org.apache.commons.io.FileUtils;
 import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.io.File;
+import java.util.Map;
 
 /**
  * @author Olivier Lamy
@@ -29,5 +38,24 @@ import org.junit.Test;
 public class CassandraMetadataRepositoryTest
     extends AbstractMetadataRepositoryTest
 {
+    private Logger logger = LoggerFactory.getLogger( getClass() );
+
+    @Inject
+    @Named( value = "archivaEntityManagerFactory#jpa-archiva" )
+    ArchivaEntityManagerFactory archivaEntityManagerFactory;
+
+    @Before
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        File directory = new File( "target/test-repositories" );
+        if ( directory.exists() )
+        {
+            FileUtils.deleteDirectory( directory );
+        }
 
+        this.repository = new CassandraMetadataRepository( null, null, archivaEntityManagerFactory.getKeyspace() );
+    }
 }