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() );
+ }
}