Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 9A455200BA4 for ; Sat, 1 Oct 2016 02:31:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 98EE3160AE5; Sat, 1 Oct 2016 00:31:24 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8F093160AD9 for ; Sat, 1 Oct 2016 02:31:23 +0200 (CEST) Received: (qmail 72622 invoked by uid 500); 1 Oct 2016 00:31:22 -0000 Mailing-List: contact dev-help@archiva.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@archiva.apache.org Delivered-To: mailing list dev@archiva.apache.org Received: (qmail 72611 invoked by uid 99); 1 Oct 2016 00:31:22 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 01 Oct 2016 00:31:22 +0000 Received: from mail-it0-f50.google.com (mail-it0-f50.google.com [209.85.214.50]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 765C61A0118 for ; Sat, 1 Oct 2016 00:31:22 +0000 (UTC) Received: by mail-it0-f50.google.com with SMTP id r192so70404634ita.0 for ; Fri, 30 Sep 2016 17:31:22 -0700 (PDT) X-Gm-Message-State: AA6/9RkaPvQggPJQOJ5lqsEhPIcxTTGeu8ijdEwW8XWH47p5gHfCz6AwCy9NCb/+3skNYuJRbDnC9Ak8sEaW/g== X-Received: by 10.36.116.133 with SMTP id o127mr7943688itc.106.1475281881636; Fri, 30 Sep 2016 17:31:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.145.9 with HTTP; Fri, 30 Sep 2016 17:31:01 -0700 (PDT) In-Reply-To: <5e5310c2751440f5a12357f0f54b33c4@git.apache.org> References: <5e5310c2751440f5a12357f0f54b33c4@git.apache.org> From: Olivier Lamy Date: Sat, 1 Oct 2016 10:31:01 +1000 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [2/3] archiva-redback-core git commit: Setting database schema names from JDO To: dev@archiva.apache.org Content-Type: multipart/alternative; boundary=001a114ab0667fa921053dc2d476 archived-at: Sat, 01 Oct 2016 00:31:24 -0000 --001a114ab0667fa921053dc2d476 Content-Type: text/plain; charset=UTF-8 On 1 October 2016 at 06:38, 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 > Authored: Fri Sep 30 22:37:22 2016 +0200 > Committer: Martin Stockhammer > 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 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 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 previousEncodedPasswords = new > ArrayList(); > + @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 @@ > + > + > + > + + 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"> > + > + /> > + > + > \ 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 --001a114ab0667fa921053dc2d476--