Author: olamy
Date: Thu May  9 12:37:24 2013
New Revision: 1480607

URL: http://svn.apache.org/r1480607
Log:
push some stuff most does not work but it is a sort of backup :-)

Added:
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
   (with props)
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java
      - copied, changed from r1480260, 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepository.java
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
   (with props)
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
   (with props)
    
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java
      - copied, changed from r1480260, 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepositoryTest.java
Removed:
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepository.java
    
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepositoryTest.java
Modified:
    archiva/sandbox/trunk/metadata-store-cassandra/pom.xml
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Namespace.java
    
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Repository.java
    
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/RepositoriesNamespaceTest.java

Modified: archiva/sandbox/trunk/metadata-store-cassandra/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/pom.xml?rev=1480607&r1=1480606&r2=1480607&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/pom.xml (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/pom.xml Thu May  9 12:37:24 
2013
@@ -199,6 +199,16 @@
         <enabled>true</enabled>
       </snapshots>
     </repository>
+    <repository>
+      <id>archiva.snapshots</id>
+      
<url>https://archiva-repository.apache.org/archiva/repository/snapshots/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </repository>
   </repositories>
 
 </project>

Added: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java?rev=1480607&view=auto
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
 (added)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
 Thu May  9 12:37:24 2013
@@ -0,0 +1,11 @@
+package org.apache.archiva.metadata.repository.jpa;
+
+import javax.persistence.EntityManager;
+
+/**
+ * @author Olivier Lamy
+ */
+public interface ArchivaEntityManagerFactory
+{
+    EntityManager getEntityManager();
+}

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/ArchivaEntityManagerFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java
 (from r1480260, 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepository.java)
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java?p2=archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java&p1=archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepository.java&r1=1480260&r2=1480607&rev=1480607&view=diff
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepository.java
 (original)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepository.java
 Thu May  9 12:37:24 2013
@@ -19,38 +19,101 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.MetadataFacet;
+import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.model.ProjectMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.metadata.repository.MetadataResolutionException;
-
+import org.apache.archiva.metadata.repository.jpa.model.Namespace;
+import org.apache.archiva.metadata.repository.jpa.model.Repository;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.persistence.EntityManager;
+import javax.persistence.Persistence;
+import javax.persistence.TypedQuery;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 
 /**
  * @author Olivier Lamy
  */
-public class JpaMetadataRepository
+public class CassandraMetadataRepository
     implements MetadataRepository
 {
 
+    private EntityManager entityManager;
+
+    private ArchivaConfiguration configuration;
+
+    private final Map<String, MetadataFacetFactory> metadataFacetFactories;
+
+    public CassandraMetadataRepository( Map<String, MetadataFacetFactory> 
metadataFacetFactories,
+                                        ArchivaConfiguration configuration, 
EntityManager entityManager )
+    {
+        this.metadataFacetFactories = metadataFacetFactories;
+        this.configuration = configuration;
+        this.entityManager = entityManager;
+    }
+
     @Override
     public void updateNamespace( String repositoryId, String namespace )
         throws MetadataRepositoryException
     {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        Repository repository = this.entityManager.find( Repository.class, 
repositoryId );
+
+        if ( repository == null )
+        {
+            repository = new Repository( repositoryId );
+            this.entityManager.persist( repository );
+            Namespace n = new Namespace( namespace );
+            n.setRepository( repository );
+            this.entityManager.persist( n );
+            repository.getNamespaces().add( n );
+            this.entityManager.persist( repository );
+        }
+        else
+        {
+
+            Namespace n = new Namespace( namespace );
+            // contains the namespace ?
+            if ( !repository.getNamespaces().contains( n ) )
+            {
+                entityManager.persist( n );
+                repository.getNamespaces().add( n );
+                entityManager.merge( repository );
+
+            }
+        }
+
+
     }
 
     @Override
     public void removeNamespace( String repositoryId, String namespace )
         throws MetadataRepositoryException
     {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        TypedQuery<Namespace> typedQuery =
+            this.entityManager.createQuery( "select n from namespace n where 
n.id=:id and n.repository.id=:repoid",
+                                            Namespace.class );
+
+        typedQuery = typedQuery.setParameter( "id", namespace ).setParameter( 
"repoid", repositoryId );
+
+        Namespace n = typedQuery.getSingleResult();
+
+        if ( n != null )
+        {
+
+        }
+        this.entityManager.remove( n );
     }
 
     @Override
@@ -184,7 +247,6 @@ public class JpaMetadataRepository
     }
 
 
-
     @Override
     public List<ArtifactMetadata> getArtifacts( String repositoryId )
         throws MetadataRepositoryException

Added: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java?rev=1480607&view=auto
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
 (added)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
 Thu May  9 12:37:24 2013
@@ -0,0 +1,73 @@
+package org.apache.archiva.metadata.repository.jpa;
+
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.metadata.model.MetadataFacetFactory;
+import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.RepositorySession;
+import org.apache.archiva.metadata.repository.RepositorySessionFactory;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.persistence.EntityManager;
+import javax.persistence.Persistence;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * @author Olivier Lamy
+ */
+@Service("repositorySessionFactory#cassandra")
+public class CassandraRepositorySessionFactory
+    implements RepositorySessionFactory
+{
+
+    private Map<String, MetadataFacetFactory> metadataFacetFactories;
+
+    @Inject
+    @Named(value = "archivaConfiguration#default")
+    private ArchivaConfiguration configuration;
+
+    @Inject
+    private MetadataResolver metadataResolver;
+
+    @Inject
+    private ApplicationContext applicationContext;
+
+    @Inject
+    private ArchivaEntityManagerFactory archivaEntityManagerFactory;
+
+    private EntityManager entityManager;
+
+    @PostConstruct
+    public void initialize()
+    {
+        entityManager = archivaEntityManagerFactory.getEntityManager();
+
+        Map<String, MetadataFacetFactory> tmpMetadataFacetFactories =
+            applicationContext.getBeansOfType( MetadataFacetFactory.class );
+        // olamy with spring the "id" is now "metadataFacetFactory#hint"
+        // whereas was only hint with plexus so let remove  
metadataFacetFactory#
+        metadataFacetFactories = new HashMap<String, MetadataFacetFactory>( 
tmpMetadataFacetFactories.size() );
+
+        for ( Map.Entry<String, MetadataFacetFactory> entry : 
tmpMetadataFacetFactories.entrySet() )
+        {
+            metadataFacetFactories.put( StringUtils.substringAfterLast( 
entry.getKey(), "#" ), entry.getValue() );
+        }
+    }
+
+
+    @Override
+    public RepositorySession createSession()
+    {
+        MetadataRepository metadataRepository =
+            new CassandraMetadataRepository( metadataFacetFactories, 
configuration, entityManager );
+
+        return new RepositorySession( metadataRepository, metadataResolver );
+    }
+}

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/CassandraRepositorySessionFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java?rev=1480607&view=auto
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
 (added)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
 Thu May  9 12:37:24 2013
@@ -0,0 +1,36 @@
+package org.apache.archiva.metadata.repository.jpa;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.Persistence;
+import java.util.Properties;
+
+/**
+ * @author Olivier Lamy
+ */
+@Service( "archivaEntityManagerFactory#jpa-archiva" )
+public class DefaultArchivaEntityManagerFactory
+    implements ArchivaEntityManagerFactory
+{
+
+    @Inject
+    private ApplicationContext applicationContext;
+
+    private EntityManager entityManager;
+
+    @PostConstruct
+    public void initialize()
+    {
+        entityManager = Persistence.createEntityManagerFactory( "archiva", new 
Properties() ).createEntityManager();
+    }
+
+    @Override
+    public EntityManager getEntityManager()
+    {
+        return entityManager;
+    }
+}

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/DefaultArchivaEntityManagerFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Namespace.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Namespace.java?rev=1480607&r1=1480606&r2=1480607&view=diff
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Namespace.java
 (original)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Namespace.java
 Thu May  9 12:37:24 2013
@@ -19,9 +19,17 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import javax.persistence.Basic;
 import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import java.io.Serializable;
 
@@ -38,11 +46,16 @@ public class Namespace
     private static final long serialVersionUID = 1L;
 
     @Id
+    //@GeneratedValue(strategy = GenerationType.IDENTITY)
     private String id;
 
-    @Column(name = "name")
+    @Column(name = "NAME")
     private String name;
 
+    @OneToOne(targetEntity = Repository.class, fetch = FetchType.EAGER)
+    private Repository repository;
+
+
     public Namespace()
     {
         // no op
@@ -73,4 +86,43 @@ public class Namespace
     {
         this.name = name;
     }
+
+
+    public Repository getRepository()
+    {
+        return repository;
+    }
+
+    public void setRepository( Repository repository )
+    {
+        this.repository = repository;
+    }
+
+    @Override
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        Namespace namespace = (Namespace) o;
+
+        if ( !id.equals( namespace.id ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return id.hashCode();
+    }
 }

Modified: 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Repository.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Repository.java?rev=1480607&r1=1480606&r2=1480607&view=diff
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Repository.java
 (original)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/jpa/model/Repository.java
 Thu May  9 12:37:24 2013
@@ -19,10 +19,16 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import java.io.Serializable;
@@ -42,12 +48,13 @@ public class Repository
     private static final long serialVersionUID = 1L;
 
     @Id
+    //@GeneratedValue(strategy = GenerationType.IDENTITY)
     private String id;
 
-    @Column(name = "name")
+    @Column( name = "NAME" )
     private String name;
 
-    @OneToMany( fetch = FetchType.EAGER )
+    @OneToMany(targetEntity = Namespace.class, fetch = FetchType.EAGER)
     private List<Namespace> namespaces = new ArrayList<Namespace>();
 
     public Repository()
@@ -83,6 +90,10 @@ public class Repository
 
     public List<Namespace> getNamespaces()
     {
+        if ( this.namespaces == null )
+        {
+            this.namespaces = new ArrayList<Namespace>();
+        }
         return namespaces;
     }
 
@@ -91,5 +102,31 @@ public class Repository
         this.namespaces = namespaces;
     }
 
+    @Override
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        Repository that = (Repository) o;
 
+        if ( !id.equals( that.id ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return id.hashCode();
+    }
 }

Copied: 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java
 (from r1480260, 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepositoryTest.java)
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java?p2=archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java&p1=archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepositoryTest.java&r1=1480260&r2=1480607&rev=1480607&view=diff
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/JpaMetadataRepositoryTest.java
 (original)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/CassandraMetadataRepositoryTest.java
 Thu May  9 12:37:24 2013
@@ -26,7 +26,7 @@ import org.junit.Test;
 /**
  * @author Olivier Lamy
  */
-public class JpaMetadataRepositoryTest
+public class CassandraMetadataRepositoryTest
     extends AbstractMetadataRepositoryTest
 {
 

Modified: 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/RepositoriesNamespaceTest.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/RepositoriesNamespaceTest.java?rev=1480607&r1=1480606&r2=1480607&view=diff
==============================================================================
--- 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/RepositoriesNamespaceTest.java
 (original)
+++ 
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/jpa/RepositoriesNamespaceTest.java
 Thu May  9 12:37:24 2013
@@ -19,6 +19,7 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.jpa.model.Namespace;
 import org.apache.archiva.metadata.repository.jpa.model.Repository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.fest.assertions.api.Assertions;
@@ -30,40 +31,38 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.test.context.ContextConfiguration;
 
+import javax.inject.Inject;
+import javax.inject.Named;
 import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
 import javax.persistence.Query;
+import javax.persistence.TypedQuery;
 import java.util.List;
-import java.util.Properties;
 
 /**
  * @author Olivier Lamy
  */
-@RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( locations = { 
"classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
+@RunWith(ArchivaSpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { "classpath*:/META-INF/spring-context.xml", 
"classpath*:/spring-context.xml" })
 public class RepositoriesNamespaceTest
 {
 
-    private static Logger LOGGER = LoggerFactory.getLogger( 
RepositoriesNamespaceTest.class );
+    private Logger logger = LoggerFactory.getLogger( getClass() );
 
     //@Inject
     //private ThriftEntityManager em;
     //EntityManagerImpl em;
+
+    @Inject
+    @Named( value = "archivaEntityManagerFactory#jpa-archiva" )
+    ArchivaEntityManagerFactory archivaEntityManagerFactory;
+
     EntityManager em;
 
     @Before
     public void setup()
         throws Exception
     {
-        LOGGER.info( "setup" );
-        //CassandraHostConfigurator hostConfigurator = new 
CassandraHostConfigurator( "localhost:9160" );
-        //Cluster cluster = HFactory.getOrCreateCluster( "ArchivaCluster", 
hostConfigurator );
-        //Keyspace keyspace = HFactory.createKeyspace( "ArchivaKeySpace", 
cluster );
-        //em = new EntityManagerImpl( keyspace, 
"org.apache.archiva.metadata.repository.jpa.model" );
-        em = Persistence.createEntityManagerFactory("archiva", new Properties( 
)).createEntityManager();
-
-        LOGGER.info( "end setup" );
-
+        em = archivaEntityManagerFactory.getEntityManager();
     }
 
     @After
@@ -75,36 +74,105 @@ public class RepositoriesNamespaceTest
     }
 
     @Test
-    public void addRepositories()
+    public void quicktest()
         throws Exception
     {
-        Repository repo1 = new Repository( "releases" );
+        try
+        {
+            em.clear();
+
+            Repository repoReleases = new Repository( "releases" );
+
+            em.persist( repoReleases );
+
+            Repository repoSnapshots = new Repository( "snapshots" );
+
+            em.persist( repoSnapshots );
+
+            Repository repositoryFromData = em.find( Repository.class, 
"releases" );
+
+            Assertions.assertThat( repositoryFromData ).isNotNull();
+            Assertions.assertThat( repositoryFromData.getName() ).isEqualTo( 
"releases" );
+
+            repositoryFromData = em.find( Repository.class, "snapshots" );
 
-        em.persist( repo1 );
+            Assertions.assertThat( repositoryFromData ).isNotNull();
+            Assertions.assertThat( repositoryFromData.getId() ).isEqualTo( 
"snapshots" );
 
-        Repository repo2 = new Repository( "snapshots" );
+            //em.clear();
 
-        em.persist( repo2 );
+            TypedQuery<Repository> query = em.createQuery( "SELECT r FROM 
Repository r", Repository.class );
 
-        //em.flush();
+            List<Repository> repositories = query.getResultList();
 
-        Repository repositoryFromData = em.find( Repository.class, "releases" 
);
+            Assertions.assertThat( repositories 
).isNotNull().isNotEmpty().hasSize( 2 );
 
-        Assertions.assertThat( repositoryFromData ).isNotNull();
-        Assertions.assertThat( repositoryFromData.getName() ).isEqualTo( 
"releases" );
+            Namespace namespace = new Namespace( "org" );
+            namespace.setRepository( repoReleases );
 
-        repositoryFromData = em.find( Repository.class, "snapshots" );
+            repoReleases.getNamespaces().add( namespace );
 
-        Assertions.assertThat( repositoryFromData ).isNotNull();
-        Assertions.assertThat( repositoryFromData.getId() ).isEqualTo( 
"snapshots" );
+            em.persist( namespace );
 
-        //em.clear();
+            em.merge( repoReleases );
 
-        Query query = em.createQuery( "SELECT r FROM Repository r" );
+            repositoryFromData = em.find( Repository.class, "releases" );
 
-        List<Repository> repositories = query.getResultList();
+            Assertions.assertThat( repositoryFromData ).isNotNull();
+            Assertions.assertThat( repositoryFromData.getName() ).isEqualTo( 
"releases" );
+            Assertions.assertThat( repositoryFromData.getNamespaces() 
).isNotNull().isNotEmpty().hasSize( 1 );
 
-        Assertions.assertThat( repositories 
).isNotNull().isNotEmpty().hasSize( 2 );
+            namespace = em.find( Namespace.class, "org" );
+            Assertions.assertThat( namespace ).isNotNull();
+            Assertions.assertThat( namespace.getRepository() ).isNotNull();
 
+        }
+        finally
+        {
+            clearReposAndNamespace();
+        }
+
+    }
+
+    @Test
+    public void testMetadataRepo()
+        throws Exception
+    {
+        try
+        {
+            CassandraMetadataRepository cmr = new CassandraMetadataRepository( 
null, null, em );
+
+            cmr.updateNamespace( "release", "org" );
+
+            Repository r = em.find( Repository.class, "release" );
+
+            Assertions.assertThat( r ).isNotNull();
+            Assertions.assertThat( r.getNamespaces() ).isNotEmpty().hasSize( 1 
);
+
+            Namespace n = em.find( Namespace.class, "org" );
+
+            Assertions.assertThat( n ).isNotNull();
+            Assertions.assertThat( n.getRepository() ).isNotNull();
+        }
+        finally
+        {
+            clearReposAndNamespace();
+        }
+    }
+
+    protected void clearReposAndNamespace()
+        throws Exception
+    {
+        TypedQuery<Namespace> query = em.createQuery( "SELECT n FROM Namespace 
n", Namespace.class );
+        for ( Namespace n : query.getResultList() )
+        {
+            em.remove( n );
+        }
+
+        TypedQuery<Repository> queryR = em.createQuery( "SELECT r FROM 
Repository r", Repository.class );
+        for ( Repository r : queryR.getResultList() )
+        {
+            em.remove( r );
+        }
     }
 }


Reply via email to