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 <marti...@apache.org>
Authored: Fri Sep 30 22:37:22 2016 +0200
Committer: Martin Stockhammer <marti...@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);

Reply via email to