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 2016/09/30 20:38:52 UTC

[1/3] archiva-redback-core git commit: Removing datasource from test persistence config

Repository: archiva-redback-core
Updated Branches:
  refs/heads/jpa 62efc70bd -> 30c3441cd


Removing datasource from test persistence config


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/9e09e8f0
Tree: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/tree/9e09e8f0
Diff: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/diff/9e09e8f0

Branch: refs/heads/jpa
Commit: 9e09e8f0cffcfbe419780e943304e3d2dbd4947a
Parents: 62efc70
Author: Martin Stockhammer <ma...@apache.org>
Authored: Fri Sep 30 22:36:39 2016 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Fri Sep 30 22:36:39 2016 +0200

----------------------------------------------------------------------
 .../src/main/resources/META-INF/persistence-hsqldb.xml              | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/9e09e8f0/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 a78444e..6f37758 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
@@ -20,7 +20,6 @@
 <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
   <persistence-unit name="redback-jpa">
     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-    <jta-data-source>java:comp/env/jdbc/redbackjpa</jta-data-source>
     <class>org.apache.archiva.redback.users.jpa.model.JpaUser</class>
     <class>org.apache.archiva.redback.rbac.jpa.model.JpaOperation</class>
     <class>org.apache.archiva.redback.rbac.jpa.model.JpaResource</class>


[3/3] archiva-redback-core git commit: Adding order columns to persistence schema

Posted by ma...@apache.org.
Adding order columns to persistence schema


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/30c3441c
Tree: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/tree/30c3441c
Diff: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/diff/30c3441c

Branch: refs/heads/jpa
Commit: 30c3441cd4ed3083d9469a81fed47ced2ad9bdfb
Parents: f3bcedf
Author: Martin Stockhammer <ma...@apache.org>
Authored: Fri Sep 30 22:38:08 2016 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Fri Sep 30 22:38:08 2016 +0200

----------------------------------------------------------------------
 .../apache/archiva/redback/rbac/jpa/JpaRbacManager.java |  1 +
 .../apache/archiva/redback/rbac/jpa/model/JpaRole.java  |  3 +++
 .../redback/rbac/jpa/model/JpaUserAssignment.java       | 12 ++++++++++--
 3 files changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/30c3441c/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/JpaRbacManager.java
----------------------------------------------------------------------
diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/JpaRbacManager.java b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/JpaRbacManager.java
index ced9104..80580e4 100644
--- a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/JpaRbacManager.java
+++ b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/JpaRbacManager.java
@@ -425,6 +425,7 @@ public class JpaRbacManager extends AbstractRBACManager  {
             em.remove(ua);
         }
         em.getTransaction().commit();
+        em.clear();
 
 
     }

http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/30c3441c/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaRole.java
----------------------------------------------------------------------
diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaRole.java b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaRole.java
index 1f8a62c..98c4bf2 100644
--- a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaRole.java
+++ b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaRole.java
@@ -21,6 +21,7 @@ package org.apache.archiva.redback.rbac.jpa.model;
 
 import org.apache.archiva.redback.rbac.AbstractRole;
 import org.apache.archiva.redback.rbac.Permission;
+import org.springframework.core.annotation.Order;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -46,6 +47,7 @@ public class JpaRole extends AbstractRole implements Serializable {
     @Column(name="PERMANENT")
     private boolean permanent;
     @ManyToMany(cascade = CascadeType.PERSIST)
+    @OrderColumn(name="INTEGER_IDX")
     @JoinTable(
             name="SECURITY_ROLE_PERMISSION_MAP",
             joinColumns={ @JoinColumn(name="NAME_OID", referencedColumnName="NAME") },
@@ -56,6 +58,7 @@ public class JpaRole extends AbstractRole implements Serializable {
     List<JpaPermission> permissions = new ArrayList<JpaPermission>();
 
     @ElementCollection
+    @OrderColumn(name="INTEGER_IDX")
     @CollectionTable(
             name="SECURITY_ROLE_CHILDROLE_MAP",
             joinColumns = {

http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/30c3441c/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaUserAssignment.java
----------------------------------------------------------------------
diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaUserAssignment.java b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaUserAssignment.java
index 39e0b2d..65ed8af 100644
--- a/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaUserAssignment.java
+++ b/redback-rbac/redback-rbac-providers/redback-rbac-jpa/src/main/java/org/apache/archiva/redback/rbac/jpa/model/JpaUserAssignment.java
@@ -21,7 +21,14 @@ package org.apache.archiva.redback.rbac.jpa.model;
 
 import org.apache.archiva.redback.rbac.AbstractUserAssignment;
 
-import javax.persistence.*;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OrderColumn;
+import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -39,8 +46,9 @@ public class JpaUserAssignment extends AbstractUserAssignment implements Seriali
     private String principal;
     @ElementCollection
     @Column(name="STRING_ELE")
+    @OrderColumn(name="INTEGER_IDX")
     @CollectionTable(
-            name="SECURITY_USERASSIGNMENT_MAP",
+            name="SECURITY_USERASSIGNMENT_ROLENAMES",
             joinColumns = {
                     @JoinColumn(name = "PRINCIPAL_OID", referencedColumnName = "PRINCIPAL")
             }


Re: [2/3] archiva-redback-core git commit: Setting database schema names from JDO

Posted by Olivier Lamy <ol...@apache.org>.
On 1 October 2016 at 06:38, <ma...@apache.org> wrote:

> Setting database schema names from JDO
>
>
> 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/f3bcedfd
> Tree: http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/tree/f3bcedfd
> Diff: http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/diff/f3bcedfd
>
> Branch: refs/heads/jpa
> Commit: f3bcedfdf824fc3d90dc35b51b7a863ebd421f49
> Parents: 9e09e8f
> Author: Martin Stockhammer <ma...@apache.org>
> Authored: Fri Sep 30 22:37:22 2016 +0200
> Committer: Martin Stockhammer <ma...@apache.org>
> Committed: Fri Sep 30 22:37:22 2016 +0200
>
> ----------------------------------------------------------------------
>  .../redback/users/jpa/JpaUserManager.java       | 35 +++++++++++++++++---
>  .../redback/users/jpa/model/JpaUser.java        | 23 ++++++++++++-
>  .../src/main/resources/spring-context.xml       | 31 +++++++++++++++++
>  .../redback/users/jpa/JpaUserManagerTest.java   |  1 -
>  4 files changed, 84 insertions(+), 6 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/blob/f3bcedfd/redback-users/redback-users-providers/
> redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/
> JpaUserManager.java
> ----------------------------------------------------------------------
> diff --git a/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
> b/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
> index c4c83f6..448552d 100644
> --- a/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
> +++ b/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
> @@ -75,7 +75,6 @@ public class JpaUserManager extends AbstractUserManager {
>
>      @Override
>      public User createUser(String username, String fullName, String
> emailAddress) throws UserManagerException {
> -
>          JpaUser user = new JpaUser();
>          user.setUsername(username);
>          user.setFullName(fullName);
> @@ -270,6 +269,27 @@ public class JpaUserManager extends
> AbstractUserManager {
>
>      @Override
>      public void addUserUnchecked(User user) throws UserManagerException {
> +        log.info("addUserUnchecked "+user.getUsername());
> +        if ( !( user instanceof JpaUser ) )
> +        {
> +            throw new UserManagerException( "Unable to Add User. User
> object " + user.getClass().getName() +
> +                    " is not an instance of " + JpaUser.class.getName() );
> +        }
> +
> +        if ( org.codehaus.plexus.util.StringUtils.isEmpty(
> user.getUsername() ) )
>

Do not hesitate to use StringUtils from commons-lang! (this one is pure
legacy :-) )


> +        {
> +            throw new IllegalStateException(
> +                    Messages.getString( "user.manager.cannot.add.user.without.username"
> ) ); //$NON-NLS-1$
> +        }
> +
> +        em.getTransaction().begin();
> +        TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u",
> JpaUser.class);
> +        for (JpaUser u : q.getResultList()) {
> +            log.info("USER FOUND: "+u.getUsername());
> +        }
> +        log.info("NEW USER "+user.getUsername());
> +        em.persist((JpaUser)user);
> +        em.getTransaction().commit();
>
>      }
>
> @@ -277,9 +297,16 @@ public class JpaUserManager extends
> AbstractUserManager {
>      public void eraseDatabase() {
>          EntityManager em = getEm();
>          em.getTransaction().begin();
> -        Query q = em.createQuery("DELETE FROM JpaUser u");
> -        q.executeUpdate();
> +        TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u",
> JpaUser.class);
> +        for (JpaUser u : q.getResultList()) {
> +            u.getPreviousEncodedPasswords().clear();
> +        }
> +        em.flush();
> +        Query qd = em.createQuery("DELETE FROM JpaUser u");
> +        qd.executeUpdate();
>          em.getTransaction().commit();
> +        em.clear();
> +
>      }
>
>      @Override
> @@ -298,7 +325,7 @@ public class JpaUserManager extends
> AbstractUserManager {
>
>      @Override
>      public String getDescriptionKey() {
> -        return null;
> +        return "archiva.redback.usermanager.jpa";
>      }
>
>
>
> http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/blob/f3bcedfd/redback-users/redback-users-providers/
> redback-users-jpa/src/main/java/org/apache/archiva/
> redback/users/jpa/model/JpaUser.java
> ----------------------------------------------------------------------
> diff --git a/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
> b/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
> index 04f441e..cfdaa4e 100644
> --- a/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
> +++ b/redback-users/redback-users-providers/redback-users-jpa/
> src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
> @@ -19,9 +19,13 @@ package org.apache.archiva.redback.users.jpa.model;
>   * under the License.
>   */
>
> +import javax.persistence.CollectionTable;
> +import javax.persistence.Column;
>  import javax.persistence.ElementCollection;
>  import javax.persistence.Entity;
>  import javax.persistence.Id;
> +import javax.persistence.JoinColumn;
> +import javax.persistence.OrderColumn;
>  import javax.persistence.Table;
>  import java.util.ArrayList;
>  import java.util.Date;
> @@ -35,21 +39,38 @@ import java.util.List;
>  public class JpaUser implements org.apache.archiva.redback.users.User {
>
>      @Id
> +    @Column(name="USERNAME")
>      private String username;
> -
> +    @Column(name="FULL_NAME")
>      private String fullName;
> +    @Column(name="EMAIL")
>      private String email;
> +    @Column(name="ENCODED_PASSWORD")
>      private String encodedPassword;
> +    @Column(name="LAST_PASSWORD_CHANGE")
>      private Date lastPasswordChange;
>      @ElementCollection
> +    @OrderColumn(name="INTEGER_IDX")
> +    @Column(name="STRING_ELE")
> +    @CollectionTable(name="JDOUSER_PREVIOUSENCODEDPASSWORDS",
> +            joinColumns = @JoinColumn(name = "USERNAME_OID",
> referencedColumnName = "USERNAME")
> +    )
>      private List<String> previousEncodedPasswords = new
> ArrayList<String>();
> +    @Column(name="PERMANENT")
>      private boolean permanent;
> +    @Column(name="LOCKED")
>      private boolean locked;
> +    @Column(name="PASSWORD_CHANGE_REQUIRED")
>      private boolean passwordChangeRequired;
> +    @Column(name="VALIDATED")
>      private boolean validated;
> +    @Column(name="COUNT_FAILED_LOGIN_ATTEMPTS")
>      private int countFailedLoginAttempts;
> +    @Column(name="ACCOUNT_CREATION_DATE")
>      private Date accountCreationDate;
> +    @Column(name="LAST_LOGIN_DATE")
>      private Date lastLoginDate;
> +    @Column(name="USER_PASSSWORD")
>      private String rawPassword;
>
>
>
> http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/blob/f3bcedfd/redback-users/redback-users-providers/
> redback-users-jpa/src/main/resources/spring-context.xml
> ----------------------------------------------------------------------
> diff --git a/redback-users/redback-users-providers/redback-users-jpa/
> src/main/resources/spring-context.xml b/redback-users/redback-users-
> providers/redback-users-jpa/src/main/resources/spring-context.xml
> new file mode 100644
> index 0000000..a56a218
> --- /dev/null
> +++ b/redback-users/redback-users-providers/redback-users-jpa/
> src/main/resources/spring-context.xml
> @@ -0,0 +1,31 @@
> +<?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"
> +       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">
> +
> +  <context:component-scan base-package="org.apache.archiva.redback.users.jpa"
> />
> +
> +</beans>
> \ No newline at end of file
>
> http://git-wip-us.apache.org/repos/asf/archiva-redback-
> core/blob/f3bcedfd/redback-users/redback-users-providers/
> redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/
> JpaUserManagerTest.java
> ----------------------------------------------------------------------
> diff --git a/redback-users/redback-users-providers/redback-users-jpa/
> src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
> b/redback-users/redback-users-providers/redback-users-jpa/
> src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
> index 4556755..75cda6d 100644
> --- a/redback-users/redback-users-providers/redback-users-jpa/
> src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
> +++ b/redback-users/redback-users-providers/redback-users-jpa/
> src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
> @@ -65,7 +65,6 @@ public class JpaUserManagerTest extends
> AbstractUserManagerTestCase {
>          is.close();
>          EntityManagerFactory emf = Persistence.
> createEntityManagerFactory("redback-jpa",props);
>
> -        log.info("test setup");
>          jpaUserManager.setEntityManager(emf.createEntityManager());
>          super.setUserManager(jpaUserManager);
>          assertNotNull(jpaUserManager);
>
>


-- 
Olivier Lamy
http://twitter.com/olamy | http://linkedin.com/in/olamy

[2/3] archiva-redback-core git commit: Setting database schema names from JDO

Posted by ma...@apache.org.
Setting database schema names from JDO


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/f3bcedfd
Tree: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/tree/f3bcedfd
Diff: http://git-wip-us.apache.org/repos/asf/archiva-redback-core/diff/f3bcedfd

Branch: refs/heads/jpa
Commit: f3bcedfdf824fc3d90dc35b51b7a863ebd421f49
Parents: 9e09e8f
Author: Martin Stockhammer <ma...@apache.org>
Authored: Fri Sep 30 22:37:22 2016 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Fri Sep 30 22:37:22 2016 +0200

----------------------------------------------------------------------
 .../redback/users/jpa/JpaUserManager.java       | 35 +++++++++++++++++---
 .../redback/users/jpa/model/JpaUser.java        | 23 ++++++++++++-
 .../src/main/resources/spring-context.xml       | 31 +++++++++++++++++
 .../redback/users/jpa/JpaUserManagerTest.java   |  1 -
 4 files changed, 84 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/f3bcedfd/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
----------------------------------------------------------------------
diff --git a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
index c4c83f6..448552d 100644
--- a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
+++ b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java
@@ -75,7 +75,6 @@ public class JpaUserManager extends AbstractUserManager {
 
     @Override
     public User createUser(String username, String fullName, String emailAddress) throws UserManagerException {
-
         JpaUser user = new JpaUser();
         user.setUsername(username);
         user.setFullName(fullName);
@@ -270,6 +269,27 @@ public class JpaUserManager extends AbstractUserManager {
 
     @Override
     public void addUserUnchecked(User user) throws UserManagerException {
+        log.info("addUserUnchecked "+user.getUsername());
+        if ( !( user instanceof JpaUser ) )
+        {
+            throw new UserManagerException( "Unable to Add User. User object " + user.getClass().getName() +
+                    " is not an instance of " + JpaUser.class.getName() );
+        }
+
+        if ( org.codehaus.plexus.util.StringUtils.isEmpty( user.getUsername() ) )
+        {
+            throw new IllegalStateException(
+                    Messages.getString( "user.manager.cannot.add.user.without.username" ) ); //$NON-NLS-1$
+        }
+
+        em.getTransaction().begin();
+        TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
+        for (JpaUser u : q.getResultList()) {
+            log.info("USER FOUND: "+u.getUsername());
+        }
+        log.info("NEW USER "+user.getUsername());
+        em.persist((JpaUser)user);
+        em.getTransaction().commit();
 
     }
 
@@ -277,9 +297,16 @@ public class JpaUserManager extends AbstractUserManager {
     public void eraseDatabase() {
         EntityManager em = getEm();
         em.getTransaction().begin();
-        Query q = em.createQuery("DELETE FROM JpaUser u");
-        q.executeUpdate();
+        TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
+        for (JpaUser u : q.getResultList()) {
+            u.getPreviousEncodedPasswords().clear();
+        }
+        em.flush();
+        Query qd = em.createQuery("DELETE FROM JpaUser u");
+        qd.executeUpdate();
         em.getTransaction().commit();
+        em.clear();
+
     }
 
     @Override
@@ -298,7 +325,7 @@ public class JpaUserManager extends AbstractUserManager {
 
     @Override
     public String getDescriptionKey() {
-        return null;
+        return "archiva.redback.usermanager.jpa";
     }
 
 

http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/f3bcedfd/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
----------------------------------------------------------------------
diff --git a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
index 04f441e..cfdaa4e 100644
--- a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
+++ b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/model/JpaUser.java
@@ -19,9 +19,13 @@ package org.apache.archiva.redback.users.jpa.model;
  * under the License.
  */
 
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
 import javax.persistence.ElementCollection;
 import javax.persistence.Entity;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import java.util.ArrayList;
 import java.util.Date;
@@ -35,21 +39,38 @@ import java.util.List;
 public class JpaUser implements org.apache.archiva.redback.users.User {
 
     @Id
+    @Column(name="USERNAME")
     private String username;
-
+    @Column(name="FULL_NAME")
     private String fullName;
+    @Column(name="EMAIL")
     private String email;
+    @Column(name="ENCODED_PASSWORD")
     private String encodedPassword;
+    @Column(name="LAST_PASSWORD_CHANGE")
     private Date lastPasswordChange;
     @ElementCollection
+    @OrderColumn(name="INTEGER_IDX")
+    @Column(name="STRING_ELE")
+    @CollectionTable(name="JDOUSER_PREVIOUSENCODEDPASSWORDS",
+            joinColumns = @JoinColumn(name = "USERNAME_OID", referencedColumnName = "USERNAME")
+    )
     private List<String> previousEncodedPasswords = new ArrayList<String>();
+    @Column(name="PERMANENT")
     private boolean permanent;
+    @Column(name="LOCKED")
     private boolean locked;
+    @Column(name="PASSWORD_CHANGE_REQUIRED")
     private boolean passwordChangeRequired;
+    @Column(name="VALIDATED")
     private boolean validated;
+    @Column(name="COUNT_FAILED_LOGIN_ATTEMPTS")
     private int countFailedLoginAttempts;
+    @Column(name="ACCOUNT_CREATION_DATE")
     private Date accountCreationDate;
+    @Column(name="LAST_LOGIN_DATE")
     private Date lastLoginDate;
+    @Column(name="USER_PASSSWORD")
     private String rawPassword;
 
 

http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/f3bcedfd/redback-users/redback-users-providers/redback-users-jpa/src/main/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/redback-users/redback-users-providers/redback-users-jpa/src/main/resources/spring-context.xml b/redback-users/redback-users-providers/redback-users-jpa/src/main/resources/spring-context.xml
new file mode 100644
index 0000000..a56a218
--- /dev/null
+++ b/redback-users/redback-users-providers/redback-users-jpa/src/main/resources/spring-context.xml
@@ -0,0 +1,31 @@
+<?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"
+       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">
+
+  <context:component-scan base-package="org.apache.archiva.redback.users.jpa" />
+
+</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/archiva-redback-core/blob/f3bcedfd/redback-users/redback-users-providers/redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
----------------------------------------------------------------------
diff --git a/redback-users/redback-users-providers/redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java b/redback-users/redback-users-providers/redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
index 4556755..75cda6d 100644
--- a/redback-users/redback-users-providers/redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
+++ b/redback-users/redback-users-providers/redback-users-jpa/src/test/java/org/apache/archiva/redback/users/jpa/JpaUserManagerTest.java
@@ -65,7 +65,6 @@ public class JpaUserManagerTest extends AbstractUserManagerTestCase {
         is.close();
         EntityManagerFactory emf = Persistence.createEntityManagerFactory("redback-jpa",props);
 
-        log.info("test setup");
         jpaUserManager.setEntityManager(emf.createEntityManager());
         super.setUserManager(jpaUserManager);
         assertNotNull(jpaUserManager);