You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2017/05/21 21:47:07 UTC
[22/40] archiva-redback-core git commit: Add JPA Key Provider
Add JPA Key Provider
Project: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/commit/13aa63a4
Tree: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/tree/13aa63a4
Diff: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/diff/13aa63a4
Branch: refs/heads/master
Commit: 13aa63a4e52d72c3a591cd9b7afe2534bf59eca9
Parents: 5420374
Author: Martin Stockhammer <ma...@apache.org>
Authored: Fri Nov 4 08:02:57 2016 +0100
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Fri Nov 4 08:02:57 2016 +0100
----------------------------------------------------------------------
.../resources/META-INF/persistence-hsqldb.xml | 1 +
.../src/main/resources/META-INF/persistence.xml | 1 +
redback-keys/redback-keys-providers/pom.xml | 1 +
.../redback-keys-jpa/pom.xml | 101 ++++++++++++
.../archiva/redback/keys/jpa/JpaKeyManager.java | 156 +++++++++++++++++++
.../keys/jpa/model/JpaAuthenticationKey.java | 88 +++++++++++
.../src/main/resources/spring-context.xml | 33 ++++
.../redback/keys/jpa/JpaKeyManagerTest.java | 65 ++++++++
.../src/test/resources/spring-context.xml | 61 ++++++++
.../redback/keys/KeyManagerTestCase.java | 10 +-
10 files changed, 512 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence-hsqldb.xml
----------------------------------------------------------------------
diff --git a/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence-hsqldb.xml b/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence-hsqldb.xml
index 6f37758..82da347 100644
--- a/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence-hsqldb.xml
+++ b/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence-hsqldb.xml
@@ -26,6 +26,7 @@
<class>org.apache.archiva.redback.rbac.jpa.model.JpaPermission</class>
<class>org.apache.archiva.redback.rbac.jpa.model.JpaRole</class>
<class>org.apache.archiva.redback.rbac.jpa.model.JpaUserAssignment</class>
+ <class>org.apache.archiva.redback.keys.jpa.model.JpaAuthenticationKey</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database"/>
<property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver"/>
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence.xml b/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence.xml
index 5c1fa80..6d9f1af 100644
--- a/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence.xml
+++ b/redback-common/redback-common-jpa/src/main/resources/META-INF/persistence.xml
@@ -27,6 +27,7 @@
<class>org.apache.archiva.redback.rbac.jpa.model.JpaPermission</class>
<class>org.apache.archiva.redback.rbac.jpa.model.JpaRole</class>
<class>org.apache.archiva.redback.rbac.jpa.model.JpaUserAssignment</class>
+ <class>org.apache.archiva.redback.keys.jpa.model.JpaAuthenticationKey</class>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
<property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)" />
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/pom.xml
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/pom.xml b/redback-keys/redback-keys-providers/pom.xml
index ee07fd9..4cc46ab 100644
--- a/redback-keys/redback-keys-providers/pom.xml
+++ b/redback-keys/redback-keys-providers/pom.xml
@@ -31,5 +31,6 @@
<module>redback-keys-jdo</module>
<module>redback-keys-memory</module>
<module>redback-keys-cached</module>
+ <module>redback-keys-jpa</module>
</modules>
</project>
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/pom.xml b/redback-keys/redback-keys-providers/redback-keys-jpa/pom.xml
new file mode 100644
index 0000000..f61e614
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/pom.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+ <parent>
+ <artifactId>redback-keys-providers</artifactId>
+ <groupId>org.apache.archiva.redback</groupId>
+ <version>2.5-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>redback-keys-jpa</artifactId>
+ <packaging>jar</packaging>
+ <name>Redback :: Key Management Provider :: JPA</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.archiva.redback</groupId>
+ <artifactId>redback-keys-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.archiva.redback</groupId>
+ <artifactId>redback-common-jpa</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.archiva.redback</groupId>
+ <artifactId>redback-keys-tests</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa</artifactId>
+ <version>${openjpa.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa-maven-plugin</artifactId>
+ <version>2.4.1</version>
+ <configuration>
+ <includes>**/model/*.class</includes>
+ <addDefaultConstructor>true</addDefaultConstructor>
+ <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
+ </configuration>
+ <executions>
+ <execution>
+ <id>enhancer</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>enhance</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa</artifactId>
+ <!-- set the version to be the same as the level in your runtime -->
+ <version>${openjpa.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/JpaKeyManager.java
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/JpaKeyManager.java b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/JpaKeyManager.java
new file mode 100644
index 0000000..ab4a001
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/JpaKeyManager.java
@@ -0,0 +1,156 @@
+package org.apache.archiva.redback.keys.jpa;
+
+import org.apache.archiva.redback.keys.AbstractKeyManager;
+import org.apache.archiva.redback.keys.AuthenticationKey;
+import org.apache.archiva.redback.keys.KeyManagerException;
+import org.apache.archiva.redback.keys.KeyNotFoundException;
+import org.apache.archiva.redback.keys.jpa.model.JpaAuthenticationKey;
+import org.codehaus.plexus.util.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.*;
+import java.util.Calendar;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Created by martin on 27.10.16.
+ */
+@Service( "keyManager#jpa" )
+public class JpaKeyManager extends AbstractKeyManager {
+
+ @PersistenceContext(unitName = "redback-jpa")
+ EntityManager em;
+
+ // JpaUserManager is a singleton and initialization should be thread safe
+ private AtomicBoolean initialized = new AtomicBoolean(false);
+
+ public void setEntityManager(EntityManager em) {
+ this.em = em;
+ }
+
+ private EntityManager getEm() {
+ if (initialized.compareAndSet(false,true)) {
+ Query q = em.createQuery("SELECT COUNT(u.key) FROM JpaAuthenticationKey u");
+ boolean dbInit = q.getFirstResult()==0;
+ }
+ return em;
+ }
+
+ public String getId()
+ {
+ return "JPA Key Manager - " + this.getClass().getName();
+ }
+
+
+ @Override
+ @Transactional
+ public AuthenticationKey createKey( String principal, String purpose, int expirationMinutes )
+ throws KeyManagerException
+ {
+ JpaAuthenticationKey authkey = new JpaAuthenticationKey();
+ authkey.setKey( super.generateUUID() );
+ authkey.setForPrincipal( principal );
+ authkey.setPurpose( purpose );
+
+ Calendar now = getNowGMT();
+ authkey.setDateCreated( now.getTime() );
+
+ if ( expirationMinutes >= 0 )
+ {
+ Calendar expiration = getNowGMT();
+ expiration.add( Calendar.MINUTE, expirationMinutes );
+ authkey.setDateExpires( expiration.getTime() );
+ }
+
+ return addKey( authkey );
+ }
+
+ @Transactional
+ @Override
+ public AuthenticationKey addKey(AuthenticationKey key) {
+ final EntityManager em = getEm();
+ AuthenticationKey mergedKey = em.merge((JpaAuthenticationKey)key);
+ return mergedKey;
+ }
+
+ @Transactional
+ @Override
+ public void eraseDatabase()
+ {
+ final EntityManager em = getEm();
+ Query q = em.createQuery("DELETE FROM JpaAuthenticationKey k");
+ q.executeUpdate();
+ }
+
+ @Transactional
+ @Override
+ public AuthenticationKey findKey(final String key) throws KeyNotFoundException, KeyManagerException {
+ final EntityManager em = getEm();
+ if ( StringUtils.isEmpty( key ) )
+ {
+ throw new KeyNotFoundException( "Empty key not found." );
+ }
+
+ try
+ {
+ TypedQuery<JpaAuthenticationKey> q =
+ em.createQuery("SELECT k FROM JpaAuthenticationKey k WHERE k.key = :key",JpaAuthenticationKey.class);
+ q.setParameter("key",key);
+ JpaAuthenticationKey authkey = q.getSingleResult();
+ if ( authkey == null )
+ {
+ throw new KeyNotFoundException( "Key [" + key + "] not found." );
+ }
+ assertNotExpired( authkey );
+
+ return authkey;
+ } catch (NoResultException ex) {
+ throw new KeyNotFoundException("Key [" + key + "] not found.");
+ } catch (KeyNotFoundException ex) {
+ throw ex;
+ } catch (Throwable ex) {
+ log.error("Error while trying to retrieve JpaAuthenticationKey {}", key);
+ throw new KeyManagerException("Error while retrieving key "+key+": "+ex.getMessage(), ex);
+ }
+ }
+
+ @Transactional
+ @Override
+ protected void assertNotExpired(AuthenticationKey authkey) throws KeyManagerException {
+ super.assertNotExpired(authkey);
+ }
+
+ @Transactional
+ @Override
+ public void deleteKey(AuthenticationKey key) throws KeyManagerException {
+ final EntityManager em = getEm();
+ em.remove((JpaAuthenticationKey)key);
+ }
+
+ @Transactional
+ @Override
+ public void deleteKey(String key) throws KeyManagerException {
+ try {
+ JpaAuthenticationKey foundKey = (JpaAuthenticationKey)findKey(key);
+ em.remove(foundKey);
+ } catch (KeyNotFoundException ex) {
+ // Ignore
+ } catch (Exception ex) {
+ log.error("Error occured while trying to find key {}: {}", key, ex.getMessage());
+ throw new KeyManagerException("Error while retrieving key "+key, ex);
+ }
+ }
+
+ @Override
+ public List<AuthenticationKey> getAllKeys() {
+ final EntityManager em = getEm();
+ Query q= em.createQuery("SELECT x from JpaAuthenticationKey x");
+ return q.getResultList();
+ }
+
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/model/JpaAuthenticationKey.java
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/model/JpaAuthenticationKey.java b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/model/JpaAuthenticationKey.java
new file mode 100644
index 0000000..fba9952
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/java/org/apache/archiva/redback/keys/jpa/model/JpaAuthenticationKey.java
@@ -0,0 +1,88 @@
+package org.apache.archiva.redback.keys.jpa.model;
+
+import org.apache.archiva.redback.keys.AuthenticationKey;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * Created by martin on 27.10.16.
+ */
+@javax.persistence.Entity
+@Table(name="JDOAUTHENTICATIONKEY")
+public class JpaAuthenticationKey implements AuthenticationKey {
+
+ @Column(name="AUTHKEY")
+ @Id
+ private String key;
+
+ @Column(name="FOR_PRINCIPAL")
+ private String forPrincipal;
+
+ @Column(name="PURPOSE")
+ private String purpose;
+
+ @Column(name="DATE_CREATED")
+ private Date dateCreated;
+
+ @Column(name="DATE_EXPIRES")
+ private Date dateExpires;
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getForPrincipal() {
+ return forPrincipal;
+ }
+
+ public void setForPrincipal(String forPrincipal) {
+ this.forPrincipal = forPrincipal;
+ }
+
+ public String getPurpose() {
+ return purpose;
+ }
+
+ public void setPurpose(String purpose) {
+ this.purpose = purpose;
+ }
+
+ public Date getDateCreated() {
+ return dateCreated;
+ }
+
+ public void setDateCreated(Date dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+ public Date getDateExpires() {
+ return dateExpires;
+ }
+
+ public void setDateExpires(Date dateExpires) {
+ this.dateExpires = dateExpires;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ JpaAuthenticationKey that = (JpaAuthenticationKey) o;
+
+ return key.equals(that.key);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return key.hashCode();
+ }
+}
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/resources/spring-context.xml b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/resources/spring-context.xml
new file mode 100644
index 0000000..6d066fd
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/src/main/resources/spring-context.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+ <context:annotation-config />
+ <context:component-scan base-package="org.apache.archiva.redback.keys.jpa" />
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/java/org/apache/archiva/redback/keys/jpa/JpaKeyManagerTest.java
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/java/org/apache/archiva/redback/keys/jpa/JpaKeyManagerTest.java b/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/java/org/apache/archiva/redback/keys/jpa/JpaKeyManagerTest.java
new file mode 100644
index 0000000..0c34fbf
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/java/org/apache/archiva/redback/keys/jpa/JpaKeyManagerTest.java
@@ -0,0 +1,65 @@
+package org.apache.archiva.redback.keys.jpa;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.redback.keys.KeyManager;
+import org.apache.archiva.redback.keys.KeyManagerTestCase;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.persistence.EntityManagerFactory;
+
+/**
+ * JdoKeyManagerTest
+ *
+ * @author <a href="mailto:martin_s@apache.org">Martin Stockhammer</a>
+ *
+ */
+@Transactional
+public class JpaKeyManagerTest
+ extends KeyManagerTestCase
+{
+
+ @Inject
+ EntityManagerFactory entityManagerFactory;
+
+ @Inject
+ @Named(value = "keyManager#jpa")
+ KeyManager keyManager;
+
+
+ @Before
+ public void setUp()
+ throws Exception {
+
+ super.setUp();
+ super.setKeyManager(keyManager);
+
+ }
+
+ @Test
+ public void initialize() {
+ assertNotNull(keyManager);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/resources/spring-context.xml b/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/resources/spring-context.xml
new file mode 100644
index 0000000..2dea185
--- /dev/null
+++ b/redback-keys/redback-keys-providers/redback-keys-jpa/src/test/resources/spring-context.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+ <context:component-scan base-package="org.apache.archiva.redback.keys.jpa" />
+
+
+
+ <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="jpaVendorAdapter" >
+ <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
+ </property>
+ <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-hsqldb.xml" />
+ <property name="jpaPropertyMap">
+ <map>
+ <entry key="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database" />
+ <entry key="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" />
+ <entry key="openjpa.ConnectionUserName" value="sa" />
+ <entry key="openjpa.ConnectionPassword" value="" />
+ <entry key="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO, SQL=TRACE" />
+ <entry key="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
+ <entry key="openjpa.jdbc.MappingDefaults"
+ value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
+ </map>
+ </property>
+
+ </bean>
+
+ <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+
+ <tx:annotation-driven />
+
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/13aa63a4/redback-keys/redback-keys-tests/src/main/java/org/apache/archiva/redback/keys/KeyManagerTestCase.java
----------------------------------------------------------------------
diff --git a/redback-keys/redback-keys-tests/src/main/java/org/apache/archiva/redback/keys/KeyManagerTestCase.java b/redback-keys/redback-keys-tests/src/main/java/org/apache/archiva/redback/keys/KeyManagerTestCase.java
index 1cf154f..b3c0f3c 100644
--- a/redback-keys/redback-keys-tests/src/main/java/org/apache/archiva/redback/keys/KeyManagerTestCase.java
+++ b/redback-keys/redback-keys-tests/src/main/java/org/apache/archiva/redback/keys/KeyManagerTestCase.java
@@ -23,10 +23,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.text.SimpleDateFormat;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* KeyManagerTestCase
@@ -115,11 +112,14 @@ public class KeyManagerTestCase
assertEquals( "bar", created2.getForPrincipal() );
assertEquals( "Something", created2.getPurpose() );
- List<AuthenticationKey> keys = getKeyManager().getAllKeys();
+ System.out.println("foo key "+created1.getKey());
+ System.out.println("bar key "+created2.getKey());
+ List<AuthenticationKey> keys = new ArrayList(getKeyManager().getAllKeys());
Collections.sort( keys, new Comparator<AuthenticationKey>()
{
public int compare( AuthenticationKey key1, AuthenticationKey key2 )
{
+ System.out.println("Compare "+key2.getForPrincipal()+key2.getKey()+" - "+key1.getForPrincipal()+key1.getKey());
return key2.getForPrincipal().compareTo( key1.getForPrincipal() );
}
} );