You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@archiva.apache.org by Olivier Lamy <ol...@apache.org> on 2016/10/01 00:31:01 UTC

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

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