From 1ddb4028fb9a079409e19f495143fd4bef52385d Mon Sep 17 00:00:00 2001 From: jensp Date: Sat, 27 Jun 2015 17:20:55 +0000 Subject: [PATCH] CCM NG: UserRepositoryTest git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3509 8810af33-2d31-482b-a856-94f89814c4df --- .../core/AbstractEntityRepository.java | 4 - .../libreccm/core/CcmObjectRepository.java | 2 +- .../core/MultipleMatchingUserException.java | 45 +++ .../main/java/org/libreccm/core/Subject.java | 6 +- .../src/main/java/org/libreccm/core/User.java | 2 + .../org/libreccm/core/UserRepository.java | 24 +- ccm-core/src/site/site.xml | 1 + .../org/libreccm/core/UserRepositoryTest.java | 275 ++++++++++-------- .../core/UserRepositoryTest/after-delete.json | 14 +- .../after-save-changed.json | 25 +- .../UserRepositoryTest/after-save-new.json | 26 +- .../data-email-duplicate.json | 77 +++++ 12 files changed, 304 insertions(+), 197 deletions(-) create mode 100644 ccm-core/src/main/java/org/libreccm/core/MultipleMatchingUserException.java create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data-email-duplicate.json diff --git a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java index b61e05236..888474f6b 100644 --- a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java @@ -45,10 +45,6 @@ public abstract class AbstractEntityRepository { */ @Inject private transient EntityManager entityManager; - - @Inject - @HibernateValidator - private Validator validator; /** * Getter method for retrieving the injected {@link EntityManager}. diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java index 52885c1a4..beca673d7 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java @@ -37,7 +37,7 @@ public class CcmObjectRepository extends AbstractEntityRepositoryJens Pelzetter + */ +class MultipleMatchingUserException extends RuntimeException { + private static final long serialVersionUID = 100237510055701060L; + + public MultipleMatchingUserException() { + super(); + } + + public MultipleMatchingUserException(final String msg) { + super(msg); + } + + public MultipleMatchingUserException(final Exception cause) { + super(cause); + } + + public MultipleMatchingUserException(final String msg, + final Exception cause) { + super(msg, cause); + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/core/Subject.java b/ccm-core/src/main/java/org/libreccm/core/Subject.java index 578e5b0c1..d484d3a55 100644 --- a/ccm-core/src/main/java/org/libreccm/core/Subject.java +++ b/ccm-core/src/main/java/org/libreccm/core/Subject.java @@ -31,6 +31,7 @@ import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -62,7 +63,7 @@ public class Subject implements Serializable { @GeneratedValue(strategy = GenerationType.AUTO) private long subjectId; - @ElementCollection + @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "subject_email_addresses", joinColumns = { @JoinColumn(name = "subject_id")}) @@ -81,6 +82,7 @@ public class Subject implements Serializable { public Subject() { super(); + emailAddresses = new ArrayList<>(); grantedPermissions = new ArrayList<>(); } @@ -155,7 +157,7 @@ public class Subject implements Serializable { return false; } - return (subjectId == other.getSubjectId()); + return subjectId == other.getSubjectId(); } public boolean canEqual(final Object obj) { diff --git a/ccm-core/src/main/java/org/libreccm/core/User.java b/ccm-core/src/main/java/org/libreccm/core/User.java index 8c633410d..bcd64b0f8 100644 --- a/ccm-core/src/main/java/org/libreccm/core/User.java +++ b/ccm-core/src/main/java/org/libreccm/core/User.java @@ -141,6 +141,7 @@ public class User extends Subject implements Serializable { * the next login. */ @Column(name = "password_reset_required") + @SuppressWarnings("PMD.LongVariable") //Name is fine... private boolean passwordResetRequired; /** @@ -232,6 +233,7 @@ public class User extends Subject implements Serializable { return passwordResetRequired; } + @SuppressWarnings("PMD.LongVariable") public void setPasswordResetRequired(final boolean passwordResetRequired) { this.passwordResetRequired = passwordResetRequired; } diff --git a/ccm-core/src/main/java/org/libreccm/core/UserRepository.java b/ccm-core/src/main/java/org/libreccm/core/UserRepository.java index 8fefffb5e..c14646039 100644 --- a/ccm-core/src/main/java/org/libreccm/core/UserRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/UserRepository.java @@ -37,6 +37,9 @@ public class UserRepository extends AbstractEntityRepository { @Override public boolean isNew(final User entity) { + if (entity == null) { + throw new IllegalArgumentException("Can't save null."); + } return entity.getSubjectId() == 0; } @@ -47,16 +50,14 @@ public class UserRepository extends AbstractEntityRepository { final List result = query.getResultList(); + //Check if result list is empty and if not return the first element. + //If their ist a result than there can only be one because the + //screen_name column has a unique constraint. if (result.isEmpty()) { return null; - } else if (result.size() == 1) { + } else { return result.get(0); - } else { - throw new MultipleMatchingUserException(String.format( - "Found multipe users identified by screen name '%s'. " - + "Check your database.", - screenname)); - } + } } public User findByEmailAddress(final String emailAddress) { @@ -78,14 +79,5 @@ public class UserRepository extends AbstractEntityRepository { } } - private class MultipleMatchingUserException extends RuntimeException { - - private static final long serialVersionUID = 100237510055701060L; - - public MultipleMatchingUserException(final String message) { - super(message); - } - - } } diff --git a/ccm-core/src/site/site.xml b/ccm-core/src/site/site.xml index 3c6e867a3..8b30116e5 100644 --- a/ccm-core/src/site/site.xml +++ b/ccm-core/src/site/site.xml @@ -8,6 +8,7 @@ +