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/08 14:39:15 UTC

svn commit: r1480253 - in /archiva/sandbox/trunk/metadata-store-cassandra: ./ src/cassandra/ src/cassandra/cli/ src/main/java/org/apache/archiva/metadata/repository/jpa/model/ src/main/resources/META-INF/ src/test/filtered-resources/META-INF/ src/test/...

Author: olamy
Date: Wed May  8 12:39:15 2013
New Revision: 1480253

URL: http://svn.apache.org/r1480253
Log:
start working with Kundera

Added:
    archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/
    archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/
    archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/load.script
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/main/resources/META-INF/persistence.xml
    archiva/sandbox/trunk/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml
    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=1480253&r1=1480252&r2=1480253&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/pom.xml (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/pom.xml Wed May  8 12:39:15 2013
@@ -18,7 +18,8 @@
   ~ under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>plugins</artifactId>
@@ -28,6 +29,11 @@
   <artifactId>metadata-store-jpa</artifactId>
   <packaging>bundle</packaging>
   <name>Archiva Core Plugins :: JPA Storage for Metadata</name>
+
+  <properties>
+    <log4j.version>2.0-beta6-SNAPSHOT</log4j.version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.archiva</groupId>
@@ -56,6 +62,11 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jpa_2.0_spec</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
       <groupId>info.archinnov</groupId>
       <artifactId>achilles</artifactId>
       <version>1.7</version>
@@ -64,11 +75,46 @@
           <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>javax.persistence</groupId>
+          <artifactId>persistence-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.hectorclient</groupId>
+      <artifactId>hector-object-mapper</artifactId>
+      <version>3.1-08</version>
+      <exclusions>
+        <exclusion>
+          <groupId>javax.persistence</groupId>
+          <artifactId>persistence-api</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.hectorclient</groupId>
+      <artifactId>hector-core</artifactId>
+      <version>1.1-3</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.cassandra</groupId>
+          <artifactId>cassandra-thrift</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.google.guava</groupId>
+          <artifactId>guava</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
     <!-- FIXME -->
     <!-- due to some instanceof in kundera it's mandatory -->
-    <!--
+    <!--  -->
     <dependency>
       <groupId>com.impetus.client</groupId>
       <artifactId>kundera-cassandra</artifactId>
@@ -82,19 +128,19 @@
           <groupId>javax.transaction</groupId>
           <artifactId>jta</artifactId>
         </exclusion>
-
+         <!-- must be excluded
         <exclusion>
           <groupId>org.hibernate</groupId>
           <artifactId>hibernate-core</artifactId>
         </exclusion>
-
+        -->
         <exclusion>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
-    -->
+
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-jcl</artifactId>
@@ -116,10 +162,15 @@
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <artifactId>log4j-1.2-api</artifactId>
       <version>${log4j.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.lmax</groupId>
+      <artifactId>disruptor</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <testResources>
@@ -171,5 +222,4 @@
     </plugins>
   </build>
 
-
 </project>

Added: archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/load.script
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/load.script?rev=1480253&view=auto
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/load.script (added)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/cassandra/cli/load.script Wed May  8 12:39:15 2013
@@ -0,0 +1,6 @@
+create keyspace ArchivaKeySpace
+    with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'
+    and strategy_options = {replication_factor:1};
+
+
+

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=1480253&r1=1480252&r2=1480253&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 Wed May  8 12:39:15 2013
@@ -1,5 +1,6 @@
 package org.apache.archiva.metadata.repository.jpa.model;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
@@ -10,13 +11,19 @@ import java.io.Serializable;
  * @author Olivier Lamy
  */
 @Entity
-@Table( name = "namespaces", schema = "metadata@archiva" )
+@Table( name = "namespaces", schema = "ArchivaKeySpace@archiva")
 public class Namespace
     implements Serializable
 {
+
+    private static final long serialVersionUID = 1L;
+
     @Id
     private String id;
 
+    @Column(name = "name")
+    private String name;
+
     public Namespace()
     {
         // no op
@@ -25,6 +32,7 @@ public class Namespace
     public Namespace( String id )
     {
         this.id = id;
+        this.name = id;
     }
 
     public String getId()
@@ -36,4 +44,14 @@ public class Namespace
     {
         this.id = id;
     }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
 }

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=1480253&r1=1480252&r2=1480253&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 Wed May  8 12:39:15 2013
@@ -1,5 +1,6 @@
 package org.apache.archiva.metadata.repository.jpa.model;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.Id;
@@ -14,13 +15,19 @@ import java.util.List;
  * @author Olivier Lamy
  */
 @Entity
-@Table( name = "repositories", schema = "metadata@archiva" )
+@Table( name = "repositories", schema = "ArchivaKeySpace@archiva" )
 public class Repository
     implements Serializable
 {
+
+    private static final long serialVersionUID = 1L;
+
     @Id
     private String id;
 
+    @Column(name = "name")
+    private String name;
+
     @OneToMany( fetch = FetchType.EAGER )
     private List<Namespace> namespaces = new ArrayList<Namespace>();
 
@@ -32,6 +39,7 @@ public class Repository
     public Repository( String id )
     {
         this.id = id;
+        this.name = id;
     }
 
     public String getId()
@@ -44,6 +52,16 @@ public class Repository
         this.id = id;
     }
 
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
     public List<Namespace> getNamespaces()
     {
         return namespaces;
@@ -53,4 +71,6 @@ public class Repository
     {
         this.namespaces = namespaces;
     }
+
+
 }

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/resources/META-INF/persistence.xml?rev=1480253&r1=1480252&r2=1480253&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/resources/META-INF/persistence.xml (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/resources/META-INF/persistence.xml Wed May  8 12:39:15 2013
@@ -7,11 +7,12 @@
     <properties>
       <property name="kundera.nodes" value="localhost"/>
       <property name="kundera.port" value="9160"/>
-      <property name="kundera.keyspace" value="metadata"/>
+      <property name="kundera.keyspace" value="ArchivaKeySpace"/>
       <property name="kundera.dialect" value="cassandra"/>
-      <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.pelops.PelopsClientFactory" />
-
-      <property name="kundera.ddl.auto.prepare" value="update" />
+      <!--property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.pelops.PelopsClientFactory" /-->
+      <property name="kundera.ddl.auto.prepare" value="create" />
+      <property name="kundera.client.lookup.class"
+                value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
 
       <!--
       TODO enable caching

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml?rev=1480253&r1=1480252&r2=1480253&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml Wed May  8 12:39:15 2013
@@ -24,10 +24,10 @@
 
   <bean id="achillesEntityManagerFactory" class="info.archinnov.achilles.integration.spring.ThriftEntityManagerFactoryBean"
         init-method="initialize">
-    <property name="entityPackages" value="my.package1,my.package2"/>
+    <property name="entityPackages" value="org.apache.archiva.metadata.repository.jpa.model"/>
     <property name="cassandraHost" value="localhost:9160"/>
-    <property name="clusterName" value="Test Cluster"/>
-    <property name="keyspaceName" value="Test Keyspace"/>
+    <property name="clusterName" value="ArchivaCluster"/>
+    <property name="keyspaceName" value="ArchivaKeySpace"/>
     <property name="forceColumnFamilyCreation" value="true" />
   </bean>
 

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=1480253&r1=1480252&r2=1480253&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 Wed May  8 12:39:15 2013
@@ -1,6 +1,10 @@
 package org.apache.archiva.metadata.repository.jpa;
 
-import info.archinnov.achilles.entity.manager.ThriftEntityManager;
+import me.prettyprint.cassandra.service.CassandraHostConfigurator;
+import me.prettyprint.hector.api.Cluster;
+import me.prettyprint.hector.api.Keyspace;
+import me.prettyprint.hector.api.factory.HFactory;
+import me.prettyprint.hom.EntityManagerImpl;
 import org.apache.archiva.metadata.repository.jpa.model.Repository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.fest.assertions.api.Assertions;
@@ -8,15 +12,16 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.test.context.ContextConfiguration;
 
-import javax.inject.Inject;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
 import javax.persistence.Query;
-import java.util.Collection;
 import java.util.List;
+import java.util.Properties;
 
 /**
  * @author Olivier Lamy
@@ -25,22 +30,34 @@ import java.util.List;
 @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
 public class RepositoriesNamespaceTest
 {
-    @Inject
-    private ThriftEntityManager em;
+
+    private static Logger LOGGER = LoggerFactory.getLogger( RepositoriesNamespaceTest.class );
+
+    //@Inject
+    //private ThriftEntityManager em;
+    //EntityManagerImpl em;
+    EntityManager em;
 
     @Before
     public void setup()
         throws Exception
     {
-        //emf = Persistence.createEntityManagerFactory( "archiva" );
-        //em = emf.createEntityManager();
+        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" );
+
     }
 
     @After
     public void shutdown()
         throws Exception
     {
-        em.close();
+        //em.close();
         //emf.close();
     }
 
@@ -56,12 +73,12 @@ public class RepositoriesNamespaceTest
 
         em.persist( repo2 );
 
-        em.flush();
+        //em.flush();
 
         Repository repositoryFromData = em.find( Repository.class, "releases" );
 
         Assertions.assertThat( repositoryFromData ).isNotNull();
-        Assertions.assertThat( repositoryFromData.getId() ).isEqualTo( "releases" );
+        Assertions.assertThat( repositoryFromData.getName() ).isEqualTo( "releases" );
 
         repositoryFromData = em.find( Repository.class, "snapshots" );