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