You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2012/06/11 16:39:31 UTC

svn commit: r1348873 [1/3] - in /rave/branches/model_interfaces: rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/ rave-components/rave-core/src/main/j...

Author: mfranklin
Date: Mon Jun 11 14:39:27 2012
New Revision: 1348873

URL: http://svn.apache.org/viewvc?rev=1348873&view=rev
Log:
Refactor User RAVE-669

Added:
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaUser.java
      - copied, changed from r1348807, rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaUserConverter.java
      - copied, changed from r1348807, rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaWidgetConverter.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/UserImpl.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaUserConverterTest.java
      - copied, changed from r1348807, rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaPersonConverterTest.java
Modified:
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Authority.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaAuthority.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaCategory.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPage.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPageUser.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidget.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetComment.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetTag.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageUserImpl.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/WidgetTagImpl.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/UserRepository.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetTagPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/NewAccountService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/UserService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetRatingService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/resources/META-INF/persistence.xml
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/PageTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/UserTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/WidgetTagTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/WidgetTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaCategoryConverterTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaPageConverterTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaWidgetCommentConverterTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaWidgetTagConverterTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaAuthorityRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaWidgetRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaWidgetTagRepositoryTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluatorTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultCategoryServiceTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
    rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rest/WidgetApi.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ChangePasswordController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/NewAccountController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ReminderController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/security/LdapUserDetailsContextMapper.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/validator/NewAccountValidator.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/validator/UserProfileValidator.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/api/rest/PageApiTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/api/rest/WidgetApiTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ChangePasswordControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/NewAccountControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ReminderControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/CategoryControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/security/LdapUserDetailsContextMapperTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/validator/NewAccountValidatorTest.java
    rave/branches/model_interfaces/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/validator/UserProfileValidatorTest.java
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/userProfile.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/mailtemplates/admin_approval.ftl
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/mailtemplates/password_reminder.ftl
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/mailtemplates/username_reminder.ftl
    rave/branches/model_interfaces/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java
    rave/branches/model_interfaces/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Authority.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Authority.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Authority.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Authority.java Mon Jun 11 14:39:27 2012
@@ -4,13 +4,6 @@ import org.springframework.security.core
 
 import java.util.Collection;
 
-/**
- * Created with IntelliJ IDEA.
- * User: mfranklin
- * Date: 6/11/12
- * Time: 5:40 AM
- * To change this template use File | Settings | File Templates.
- */
 public interface Authority extends GrantedAuthority {
     @Override
     String getAuthority();

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaAuthority.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaAuthority.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaAuthority.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaAuthority.java Mon Jun 11 14:39:27 2012
@@ -20,15 +20,17 @@
 package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
+import org.apache.rave.portal.model.conversion.ConvertingListProxyFactory;
 import org.springframework.security.core.GrantedAuthority;
 
 import javax.persistence.*;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
 /**
- * The {@link GrantedAuthority} a {@link User} can have
+ * The {@link GrantedAuthority} a {@link JpaUser} can have
  */
 @Entity
 @Table(name = "granted_authority")
@@ -61,7 +63,7 @@ public class JpaAuthority implements Bas
     private String authority;
 
     @ManyToMany(mappedBy = "authorities", fetch = FetchType.LAZY)
-    private Collection<User> users;
+    private List<JpaUser> users;
     
     @Basic
     @Column(name = "default_for_new_user")
@@ -71,7 +73,7 @@ public class JpaAuthority implements Bas
      * Default constructor, needed for JPA
      */
     public JpaAuthority() {
-        this.users = new ArrayList<User>();
+        this.users = new ArrayList<JpaUser>();
     }
 
     @Override
@@ -106,13 +108,13 @@ public class JpaAuthority implements Bas
 
     @Override
     public Collection<User> getUsers() {
-        return users;
+        return ConvertingListProxyFactory.createProxyList(User.class, users);
     }
 
     @Override
     public void addUser(User user) {
-        if (!users.contains(user)) {
-            users.add(user);
+        if (!this.getUsers().contains(user)) {
+            this.getUsers().add(user);
         }
         if (!user.getAuthorities().contains(this)) {
             user.addAuthority(this);
@@ -121,14 +123,14 @@ public class JpaAuthority implements Bas
 
     @Override
     public void removeUser(User user) {
-        if (users.contains(user)) {
-            users.remove(user);
+        if (this.getUsers().contains(user)) {
+            this.getUsers().remove(user);
         }
     }
 
     @PreRemove
     public void preRemove() {
-        for (User user : users) {
+        for (JpaUser user : users) {
             user.removeAuthority(this);
         }
         this.users = null;

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaCategory.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaCategory.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaCategory.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaCategory.java Mon Jun 11 14:39:27 2012
@@ -17,6 +17,7 @@ package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
 import org.apache.rave.portal.model.conversion.ConvertingListProxyFactory;
+import org.apache.rave.portal.model.conversion.JpaConverter;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
 import javax.persistence.*;
@@ -52,7 +53,7 @@ public class JpaCategory implements Basi
 
     @OneToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="created_user_id")
-    private User createdUser;
+    private JpaUser createdUser;
 
     @Basic
     @Column(name ="created_date")
@@ -62,7 +63,7 @@ public class JpaCategory implements Basi
 
     @OneToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="last_modified_user_id")
-    private User lastModifiedUser;
+    private JpaUser lastModifiedUser;
 
     @Basic
     @Column(name ="last_modified_date")
@@ -84,9 +85,9 @@ public class JpaCategory implements Basi
     public JpaCategory(Long entityId, String text, User createdUser, Date createdDate, User lastModifiedUser, Date lastModifiedDate) {
         this.entityId = entityId;
         this.text = text;
-        this.createdUser = createdUser;
+        this.setCreatedUser(createdUser);
         this.createdDate = createdDate;
-        this.lastModifiedUser = lastModifiedUser;
+        this.setLastModifiedUser(lastModifiedUser);
         this.lastModifiedDate = lastModifiedDate;
     }
 
@@ -127,7 +128,7 @@ public class JpaCategory implements Basi
 
     @Override
     public void setCreatedUser(User createdUser) {
-        this.createdUser = createdUser;
+        this.createdUser = JpaConverter.getInstance().convert(createdUser, User.class);
     }
 
     @Override
@@ -147,7 +148,7 @@ public class JpaCategory implements Basi
 
     @Override
     public void setLastModifiedUser(User lastModifiedUser) {
-        this.lastModifiedUser = lastModifiedUser;
+        this.lastModifiedUser = JpaConverter.getInstance().convert(lastModifiedUser, User.class);
     }
 
     @Override

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPage.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPage.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPage.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPage.java Mon Jun 11 14:39:27 2012
@@ -32,7 +32,7 @@ import java.util.Comparator;
 import java.util.List;
 
 /**
- * A page, which consists of regions, and which may be owned by a {@link User} (note the ownership will likely need to
+ * A page, which consists of regions, and which may be owned by a {@link JpaUser} (note the ownership will likely need to
  * become more flexible to enable things like group ownership in the future).
  *
  * TODO RAVE-231: not all database providers will be able to support deferrable constraints
@@ -69,7 +69,7 @@ public class JpaPage implements BasicEnt
 
     @ManyToOne
     @JoinColumn(name = "owner_id")
-    private User owner;
+    private JpaUser owner;
 
     @OneToOne(cascade=CascadeType.ALL)
     @JoinColumn(name="parent_page_id")
@@ -104,7 +104,7 @@ public class JpaPage implements BasicEnt
         this.entityId = entityId;
     }
 
-    public JpaPage(Long entityId, User owner) {
+    public JpaPage(Long entityId, JpaUser owner) {
         this.entityId = entityId;
         this.owner = owner;
     }
@@ -161,7 +161,7 @@ public class JpaPage implements BasicEnt
 
     @Override
     public void setOwner(User owner) {
-        this.owner = owner;
+        this.owner = JpaConverter.getInstance().convert(owner, User.class);
     }
 
     /**

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPageUser.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPageUser.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPageUser.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPageUser.java Mon Jun 11 14:39:27 2012
@@ -49,7 +49,7 @@ public class JpaPageUser implements Basi
 
     @ManyToOne
     @JoinColumn(name = "user_id")
-    private User user;
+    private JpaUser user;
 
     @ManyToOne(fetch=FetchType.EAGER)
     @JoinColumn(name = "page_id", nullable=false)
@@ -69,11 +69,11 @@ public class JpaPageUser implements Basi
     public JpaPageUser(){}
 
     public JpaPageUser(User user, Page page){
-        this.user = user;
+        this.setUser(user);
         setPage(page);
     }
 
-    public JpaPageUser(User user, Page page, long sequence){
+    public JpaPageUser(JpaUser user, Page page, long sequence){
         this.user = user;
         setPage(page);
         this.renderSequence = sequence;
@@ -117,7 +117,7 @@ public class JpaPageUser implements Basi
     * @return the user
     */
     @Override
-    public User getUser() {
+    public JpaUser getUser() {
         return user;
     }
 
@@ -126,7 +126,7 @@ public class JpaPageUser implements Basi
     */
     @Override
     public void setUser(User user) {
-        this.user = user;
+        this.user = JpaConverter.getInstance().convert(user, User.class);
     }
 
     /**

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java Mon Jun 11 14:39:27 2012
@@ -37,6 +37,7 @@ import java.util.List;
     @NamedQuery(name = JpaPerson.FIND_BY_GROUP_MEMBERSHIP, query = "select m from JpaGroup g join g.members m where exists " +
             "(select 'found' from g.members b where b.username = :username) and m.username <> :username")
 })
+@DiscriminatorValue("Person")
 public class JpaPerson implements BasicEntity, Person {
 
     public static final String FIND_BY_USERNAME = "Person.findByUsername";

Copied: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaUser.java (from r1348807, rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java)
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaUser.java?p2=rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaUser.java&p1=rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java&r1=1348807&r2=1348873&rev=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaUser.java Mon Jun 11 14:39:27 2012
@@ -22,7 +22,6 @@ import org.apache.rave.persistence.Basic
 import org.apache.rave.portal.model.conversion.JpaConverter;
 import org.apache.rave.portal.model.impl.PersonImpl;
 import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -39,18 +38,19 @@ import java.util.Date;
 @Entity
 @Access(AccessType.FIELD)
 @NamedQueries({
-        @NamedQuery(name = User.USER_GET_BY_USERNAME, query = "select u from User u where u.username = :"+User.PARAM_USERNAME),
-        @NamedQuery(name = User.USER_GET_BY_USER_EMAIL, query = "select u from User u where u.email = :"+User.PARAM_EMAIL),
-        @NamedQuery(name = User.USER_GET_ALL, query = "select u from User u order by u.username asc"),
-        @NamedQuery(name = User.USER_GET_BY_FORGOT_PASSWORD_HASH, query = "select u from User u where u.forgotPasswordHash = :" + User.PARAM_FORGOT_PASSWORD_HASH),
-        @NamedQuery(name = User.USER_COUNT_ALL, query = "select count(u) from User u"),
-        @NamedQuery(name = User.USER_FIND_BY_USERNAME_OR_EMAIL, query = "select u from User u " +
-                "where lower(u.username) like :"+User.PARAM_SEARCHTERM+" or lower(u.email) like :"+User.PARAM_SEARCHTERM+" order by u.username asc"),
-        @NamedQuery(name = User.USER_COUNT_FIND_BY_USERNAME_OR_EMAIL, query = "select count(u) from User u " +
-                "where lower(u.username) like :"+User.PARAM_SEARCHTERM+" or lower(u.email) like :"+User.PARAM_SEARCHTERM),
-        @NamedQuery(name = User.USER_GET_ALL_FOR_ADDED_WIDGET, query = "select distinct(rw.region.page.owner) from JpaRegionWidget rw where rw.widget.entityId = :widgetId order by rw.region.page.owner.familyName, rw.region.page.owner.givenName")
+        @NamedQuery(name = JpaUser.USER_GET_BY_USERNAME, query = "select u from JpaUser u where u.username = :"+ JpaUser.PARAM_USERNAME),
+        @NamedQuery(name = JpaUser.USER_GET_BY_USER_EMAIL, query = "select u from JpaUser u where u.email = :"+ JpaUser.PARAM_EMAIL),
+        @NamedQuery(name = JpaUser.USER_GET_ALL, query = "select u from JpaUser u order by u.username asc"),
+        @NamedQuery(name = JpaUser.USER_GET_BY_FORGOT_PASSWORD_HASH, query = "select u from JpaUser u where u.forgotPasswordHash = :" + JpaUser.PARAM_FORGOT_PASSWORD_HASH),
+        @NamedQuery(name = JpaUser.USER_COUNT_ALL, query = "select count(u) from JpaUser u"),
+        @NamedQuery(name = JpaUser.USER_FIND_BY_USERNAME_OR_EMAIL, query = "select u from JpaUser u " +
+                "where lower(u.username) like :"+ JpaUser.PARAM_SEARCHTERM+" or lower(u.email) like :"+ JpaUser.PARAM_SEARCHTERM+" order by u.username asc"),
+        @NamedQuery(name = JpaUser.USER_COUNT_FIND_BY_USERNAME_OR_EMAIL, query = "select count(u) from JpaUser u " +
+                "where lower(u.username) like :"+ JpaUser.PARAM_SEARCHTERM+" or lower(u.email) like :"+ JpaUser.PARAM_SEARCHTERM),
+        @NamedQuery(name = JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, query = "select distinct(rw.region.page.owner) from JpaRegionWidget rw where rw.widget.entityId = :widgetId order by rw.region.page.owner.familyName, rw.region.page.owner.givenName")
 })
-public class User extends JpaPerson implements UserDetails, BasicEntity, Serializable {
+@DiscriminatorValue("User")
+public class JpaUser extends JpaPerson implements BasicEntity, Serializable, User {
     private static final long serialVersionUID = 1L;
 
     public static final String USER_GET_BY_USERNAME = "User.getByUsername";
@@ -117,15 +117,15 @@ public class User extends JpaPerson impl
             @JoinColumn(name = "authority_id", referencedColumnName = "entity_id"))
     private Collection<JpaAuthority> authorities;
 
-    public User() {
+    public JpaUser() {
         this(null, null);
     }
 
-    public User(Long entityId) {
+    public JpaUser(Long entityId) {
         this(entityId, null);
     }
 
-    public User(Long entityId, String username) {
+    public JpaUser(Long entityId, String username) {
         super();
         this.entityId = entityId;
         this.username = username;
@@ -154,6 +154,7 @@ public class User extends JpaPerson impl
         return grantedAuthorities;
     }
 
+    @Override
     public void addAuthority(Authority authority) {
         JpaAuthority converted = JpaConverter.getInstance().convert(authority, Authority.class);
         if (!authorities.contains(converted)) {
@@ -164,6 +165,7 @@ public class User extends JpaPerson impl
         }
     }
 
+    @Override
     public void removeAuthority(Authority authority) {
         JpaAuthority converted = JpaConverter.getInstance().convert(authority, Authority.class);
         if (authorities.contains(converted)) {
@@ -171,6 +173,7 @@ public class User extends JpaPerson impl
         }
     }
 
+    @Override
     public void setAuthorities(Collection<Authority> newAuthorities) {
         this.getAuthorities().clear();
         if(newAuthorities != null) {
@@ -178,16 +181,12 @@ public class User extends JpaPerson impl
         }
     }
 
-    /**
-     * Gets the password stored in the database
-     *
-     * @return password as String
-     */
     @Override
     public String getPassword() {
         return password;
     }
 
+    @Override
     public void setPassword(String password) {
         this.password = password;
     }
@@ -197,6 +196,7 @@ public class User extends JpaPerson impl
         return username;
     }
 
+    @Override
     public void setUsername(String username) {
         this.username = username;
     }
@@ -206,10 +206,12 @@ public class User extends JpaPerson impl
         return !locked;
     }
 
+    @Override
     public boolean isLocked() {
         return locked;
     }
 
+    @Override
     public void setLocked(boolean locked) {
         this.locked = locked;
     }
@@ -219,21 +221,18 @@ public class User extends JpaPerson impl
         return !expired;
     }
 
-    /**
-     * Synchronized with password expiration {@see isCredentialsNonExpired}
-     *
-     * @return <code>true</code> if the user's is not expired valid (ie non-expired), <code>false</code> if no longer valid
-     */
     //REVIEW NOTE: Conflating Account and Credential (non)expiration seems likely to cause confusion at some point.
     @Override
     public boolean isAccountNonExpired() {
         return isCredentialsNonExpired();
     }
 
+    @Override
     public boolean isExpired() {
         return expired;
     }
 
+    @Override
     public void setExpired(boolean expired) {
         this.expired = expired;
     }
@@ -243,62 +242,69 @@ public class User extends JpaPerson impl
         return enabled;
     }
 
+    @Override
     public void setEnabled(boolean enabled) {
         this.enabled = enabled;
     }
 
     //The following properties are specific to the user profile.
+    @Override
     public String getEmail() {
         return email;
     }
 
+    @Override
     public void setEmail(String email) {
         this.email = email;
     }
 
+    @Override
     public String getOpenId() {
         return openId;
     }
 
+    @Override
     public void setOpenId(String openId) {
         this.openId = openId;
     }
 
+    @Override
     public String getForgotPasswordHash() {
         return forgotPasswordHash;
     }
 
+    @Override
     public void setForgotPasswordHash(String forgotPasswordHash) {
         this.forgotPasswordHash = forgotPasswordHash;
     }
 
+    @Override
     public Date getForgotPasswordTime() {
         return forgotPasswordTime;
     }
 
+    @Override
     public void setForgotPasswordTime(Date forgotPasswordTime) {
         this.forgotPasswordTime = forgotPasswordTime;
     }
 
+    @Override
     public PageLayout getDefaultPageLayout() {
         return defaultPageLayout;
     }
 
+    @Override
     public void setDefaultPageLayout(PageLayout defaultPageLayout) {
         this.defaultPageLayout = JpaConverter.getInstance().convert(defaultPageLayout, PageLayout.class);
     }
 
-    /**
-	 * @return the confirmPassword
-	 */
-	public String getConfirmPassword() {
+    @Override
+    public String getConfirmPassword() {
 		return confirmPassword;
 	}
 
-	/**
-	 * @param confirmPassword the confirmPassword to set
-	 */
-	public void setConfirmPassword(String confirmPassword) {
+	@Override
+    public void setConfirmPassword(String confirmPassword) {
 		this.confirmPassword = confirmPassword;
 	}
 
@@ -316,7 +322,7 @@ public class User extends JpaPerson impl
             return false;
         }
 
-        final User other = (User) obj;
+        final JpaUser other = (JpaUser) obj;
         if (this.entityId != other.entityId && (this.entityId == null || !this.entityId.equals(other.entityId))) {
             return false;
         }
@@ -355,33 +361,33 @@ public class User extends JpaPerson impl
         return sb.toString();
     }
 
-    /**
-     * Conversion function to create a new Person object based off of this User class.  This is useful for when you
-     * have a User object and want to pass on the Person data without the User class data (like password, etc)
-     *
-     * @return a Person object representing the data contained in this class
-     */     //TODO:  UNCOMMENT & FIX ONCE USER IS AN INTERFACE RAVE-630
+    @Override
     public Person toPerson() {
         PersonImpl p = new PersonImpl();
         p.setAboutMe(this.getAboutMe());
         p.setAdditionalName(this.getAdditionalName());
-        //p.setAddresses(this.getAddresses());
+        p.setAddresses(this.getAddresses());
         p.setDisplayName(this.getDisplayName());
         p.setEmail(this.getEmail());
         p.setFamilyName(this.getFamilyName());
-        //p.setFriends(this.getFriends());
+        p.setFriends(this.getFriends());
         p.setGivenName(this.getGivenName());
         p.setHonorificPrefix(this.getHonorificPrefix());
         p.setHonorificSuffix(this.getHonorificSuffix());
-        //p.setOrganizations(this.getOrganizations());
+        p.setOrganizations(this.getOrganizations());
         p.setPreferredName(this.getPreferredName());
-        //p.setProperties(this.getProperties());
+        p.setProperties(this.getProperties());
         p.setStatus(this.getStatus());
         p.setUsername(this.getUsername());
         return p;
     }
 
-	public String getDefaultPageLayoutCode() {
+    @Override
+    public Long getId() {
+        return this.getEntityId();
+    }
+
+    public String getDefaultPageLayoutCode() {
 		return defaultPageLayoutCode;
 	}
 

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidget.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidget.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidget.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidget.java Mon Jun 11 14:39:27 2012
@@ -20,6 +20,7 @@ package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
 import org.apache.rave.portal.model.conversion.ConvertingListProxyFactory;
+import org.apache.rave.portal.model.conversion.JpaConverter;
 
 import javax.persistence.*;
 import javax.xml.bind.annotation.XmlAccessType;
@@ -164,7 +165,7 @@ public class JpaWidget implements BasicE
 
     @ManyToOne
     @JoinColumn(name = "owner_id")
-    private User owner;
+    private JpaUser owner;
 
     @XmlElement
     @Basic
@@ -359,7 +360,7 @@ public class JpaWidget implements BasicE
 
     @Override
     public void setOwner(User owner) {
-        this.owner = owner;
+        this.owner = JpaConverter.getInstance().convert(owner, User.class);
     }
 
     @Override

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetComment.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetComment.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetComment.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetComment.java Mon Jun 11 14:39:27 2012
@@ -16,6 +16,7 @@
 package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
+import org.apache.rave.portal.model.conversion.JpaConverter;
 
 import javax.persistence.*;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -49,7 +50,7 @@ public class JpaWidgetComment implements
 
     @OneToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="user_id")
-    private User user;
+    private JpaUser user;
 
     @Basic
     @Column(name = "text") @Lob
@@ -69,7 +70,7 @@ public class JpaWidgetComment implements
 
     }
 
-    public JpaWidgetComment(Long entityId, Long widgetId, User user, String text, Date lastModified, Date created) {
+    public JpaWidgetComment(Long entityId, Long widgetId, JpaUser user, String text, Date lastModified, Date created) {
         this.entityId = entityId;
         this.widgetId = widgetId;
         this.user = user;
@@ -115,7 +116,7 @@ public class JpaWidgetComment implements
 
     @Override
     public void setUser(User user) {
-        this.user = user;
+        this.user = JpaConverter.getInstance().convert(user, User.class);
     }
 
     @Override

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetTag.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetTag.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetTag.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaWidgetTag.java Mon Jun 11 14:39:27 2012
@@ -15,6 +15,8 @@
  */
 package org.apache.rave.portal.model;
 
+import org.apache.rave.portal.model.conversion.JpaConverter;
+
 import javax.persistence.*;
 import javax.xml.bind.annotation.XmlRootElement;
 import java.io.Serializable;
@@ -48,7 +50,7 @@ public class JpaWidgetTag implements Wid
 
     @OneToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "user_id")
-    private User user;
+    private JpaUser user;
 
     @ManyToOne(fetch=FetchType.EAGER,cascade = CascadeType.ALL)
     @JoinColumn(name = "tag_id")
@@ -61,7 +63,7 @@ public class JpaWidgetTag implements Wid
 
     public JpaWidgetTag() {}
 
-    public JpaWidgetTag(long id, long widgetId, User user, Date date, JpaTag tag) {
+    public JpaWidgetTag(long id, long widgetId, JpaUser user, Date date, JpaTag tag) {
         this.entityId = id;
         this.widgetId = widgetId;
         this.user = user;
@@ -94,7 +96,7 @@ public class JpaWidgetTag implements Wid
 
     @Override
     public void setUser(User user) {
-        this.user = user;
+        this.user = JpaConverter.getInstance().convert(user, User.class);
     }
 
     @Override

Added: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java?rev=1348873&view=auto
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java (added)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java Mon Jun 11 14:39:27 2012
@@ -0,0 +1,104 @@
+package org.apache.rave.portal.model;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.Date;
+
+public interface User extends Person, UserDetails {
+    @Override
+    Collection<GrantedAuthority> getAuthorities();
+
+    void addAuthority(Authority authority);
+
+    void removeAuthority(Authority authority);
+
+    void setAuthorities(Collection<Authority> newAuthorities);
+
+    /**
+     * Gets the password stored in the database
+     *
+     * @return password as String
+     */
+    @Override
+    String getPassword();
+
+    void setPassword(String password);
+
+    @Override
+    String getUsername();
+
+    void setUsername(String username);
+
+    @Override
+    boolean isAccountNonLocked();
+
+    boolean isLocked();
+
+    void setLocked(boolean locked);
+
+    @Override
+    boolean isCredentialsNonExpired();
+
+    /**
+     * Synchronized with password expiration {@see isCredentialsNonExpired}
+     *
+     * @return <code>true</code> if the user's is not expired valid (ie non-expired), <code>false</code> if no longer valid
+     */
+    //REVIEW NOTE: Conflating Account and Credential (non)expiration seems likely to cause confusion at some point.
+    @Override
+    boolean isAccountNonExpired();
+
+    boolean isExpired();
+
+    void setExpired(boolean expired);
+
+    @Override
+    boolean isEnabled();
+
+    void setEnabled(boolean enabled);
+
+    //The following properties are specific to the user profile.
+    String getEmail();
+
+    void setEmail(String email);
+
+    String getOpenId();
+
+    void setOpenId(String openId);
+
+    String getForgotPasswordHash();
+
+    void setForgotPasswordHash(String forgotPasswordHash);
+
+    Date getForgotPasswordTime();
+
+    void setForgotPasswordTime(Date forgotPasswordTime);
+
+    PageLayout getDefaultPageLayout();
+
+    void setDefaultPageLayout(PageLayout defaultPageLayout);
+
+    /**
+	 * @return the confirmPassword
+	 */
+    String getConfirmPassword();
+
+    /**
+     * @param confirmPassword the confirmPassword to set
+     */
+    void setConfirmPassword(String confirmPassword);
+
+    /**
+     * Conversion function to create a new Person object based off of this User class.  This is useful for when you
+     * have a User object and want to pass on the Person data without the User class data (like password, etc)
+     *
+     * @return a Person object representing the data contained in this class
+     */
+    Person toPerson();
+
+    Long getId();
+
+    String getDefaultPageLayoutCode();
+}

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java Mon Jun 11 14:39:27 2012
@@ -2,7 +2,6 @@ package org.apache.rave.portal.model;
 
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
 import java.util.List;
 
 @XmlRootElement

Copied: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaUserConverter.java (from r1348807, rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaWidgetConverter.java)
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaUserConverter.java?p2=rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaUserConverter.java&p1=rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaWidgetConverter.java&r1=1348807&r2=1348873&rev=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaWidgetConverter.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaUserConverter.java Mon Jun 11 14:39:27 2012
@@ -1,44 +1,43 @@
 package org.apache.rave.portal.model.conversion;
 
 import org.apache.rave.model.ModelConverter;
-import org.apache.rave.portal.model.JpaWidget;
-import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.model.JpaUser;
+import org.apache.rave.portal.model.User;
 import org.springframework.stereotype.Component;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
 /**
- * Converts from a {@link org.apache.rave.portal.model.Widget} to a {@link org.apache.rave.portal.model.JpaWidget}
+ * Converts from a {@link org.apache.rave.portal.model.User} to a {@link org.apache.rave.portal.model.JpaUser}
  */
 @Component
-public class JpaWidgetConverter implements ModelConverter<Widget, JpaWidget> {
+public class JpaUserConverter implements ModelConverter<User, JpaUser> {
     @PersistenceContext
     private EntityManager manager;
 
     @Override
-    public JpaWidget convert(Widget source) {
-        return source instanceof JpaWidget ? (JpaWidget) source : createEntity(source);
+    public JpaUser convert(User source) {
+        return source instanceof JpaUser ? (JpaUser) source : createEntity(source);
     }
 
     @Override
-    public Class<Widget> getSourceType() {
-        return Widget.class;
+    public Class<User> getSourceType() {
+        return User.class;
     }
 
-    private JpaWidget createEntity(Widget source) {
-        JpaWidget converted = null;
+    private JpaUser createEntity(User source) {
+        JpaUser converted = null;
         if (source != null) {
-            converted = new JpaWidget();
+            converted = new JpaUser();
             updateProperties(source, converted);
         }
         return converted;
     }
 
-    private void updateProperties(Widget source, JpaWidget converted) {
+    private void updateProperties(User source, JpaUser converted) {
         converted.setEntityId(source.getId());
-        converted.setUrl(source.getUrl());
-        converted.setType(source.getType());
+
         //TODO: Finish all properties
     }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageUserImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageUserImpl.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageUserImpl.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageUserImpl.java Mon Jun 11 14:39:27 2012
@@ -18,10 +18,7 @@
  */
 package org.apache.rave.portal.model.impl;
 
-import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.PageInvitationStatus;
-import org.apache.rave.portal.model.PageUser;
-import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.*;
 
 public class PageUserImpl implements PageUser {
     private Long id;

Added: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/UserImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/UserImpl.java?rev=1348873&view=auto
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/UserImpl.java (added)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/UserImpl.java Mon Jun 11 14:39:27 2012
@@ -0,0 +1,235 @@
+package org.apache.rave.portal.model.impl;
+
+import org.apache.rave.portal.model.Authority;
+import org.apache.rave.portal.model.PageLayout;
+import org.apache.rave.portal.model.Person;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.util.CollectionUtils;
+import org.springframework.security.core.GrantedAuthority;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+public class UserImpl extends PersonImpl implements User {
+    private Long id;
+    private String password;
+    private boolean expired;
+    private boolean credsExpired;
+    private boolean locked;
+    private boolean enabled;
+    private String openId;
+    private String forgotPasswordHash;
+    private Date forgotPasswordTime;
+    private PageLayout defaultPageLayout;
+    private String confirmPassword;
+    private String defaultPageLayoutCode;
+    private List<Authority> authorities;
+
+    public UserImpl() {}
+
+    public UserImpl(Long id) {
+        this.id = id;
+    }
+
+    public UserImpl(Long userid, String username) {
+        this.id = userid;
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public boolean isAccountNonLocked() {
+        return !locked;
+    }
+
+    public boolean isExpired() {
+        return expired;
+    }
+
+    public void setExpired(boolean expired) {
+        this.expired = expired;
+    }
+
+    public boolean isLocked() {
+        return locked;
+    }
+
+    public void setLocked(boolean locked) {
+        this.locked = locked;
+    }
+
+    public boolean isCredentialsNonExpired() {
+        return !credsExpired;
+    }
+
+    public void setCredsExpired(boolean credsExpired) {
+        this.credsExpired = credsExpired;
+    }
+    public boolean isAccountNonExpired() {
+        return !expired;
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getForgotPasswordHash() {
+        return forgotPasswordHash;
+    }
+
+    public void setForgotPasswordHash(String forgotPasswordHash) {
+        this.forgotPasswordHash = forgotPasswordHash;
+    }
+
+    public Date getForgotPasswordTime() {
+        return forgotPasswordTime;
+    }
+
+    public void setForgotPasswordTime(Date forgotPasswordTime) {
+        this.forgotPasswordTime = forgotPasswordTime;
+    }
+
+    public PageLayout getDefaultPageLayout() {
+        return defaultPageLayout;
+    }
+
+    public void setDefaultPageLayout(PageLayout defaultPageLayout) {
+        this.defaultPageLayout = defaultPageLayout;
+    }
+
+    public String getConfirmPassword() {
+        return confirmPassword;
+    }
+
+    public void setConfirmPassword(String confirmPassword) {
+        this.confirmPassword = confirmPassword;
+    }
+
+    public Person toPerson() {
+        PersonImpl p = new PersonImpl();
+        p.setAboutMe(this.getAboutMe());
+        p.setAdditionalName(this.getAdditionalName());
+        p.setAddresses(this.getAddresses());
+        p.setDisplayName(this.getDisplayName());
+        p.setEmail(this.getEmail());
+        p.setFamilyName(this.getFamilyName());
+        p.setFriends(this.getFriends());
+        p.setGivenName(this.getGivenName());
+        p.setHonorificPrefix(this.getHonorificPrefix());
+        p.setHonorificSuffix(this.getHonorificSuffix());
+        p.setOrganizations(this.getOrganizations());
+        p.setPreferredName(this.getPreferredName());
+        p.setProperties(this.getProperties());
+        p.setStatus(this.getStatus());
+        p.setUsername(this.getUsername());
+        return p;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+
+    public String getDefaultPageLayoutCode() {
+        return defaultPageLayoutCode;
+    }
+
+    public void setDefaultPageLayoutCode(String defaultPageLayoutCode) {
+        this.defaultPageLayoutCode = defaultPageLayoutCode;
+    }
+
+    public Collection<GrantedAuthority> getAuthorities() {
+        return CollectionUtils.<GrantedAuthority>toBaseTypedList(authorities);
+    }
+
+    public void addAuthority(Authority authority) {
+        this.authorities.add(authority);
+    }
+
+    public void removeAuthority(Authority authority) {
+       this.authorities.remove(authority);
+    }
+
+    public void setAuthorities(Collection<Authority> authorities) {
+        if(this.authorities == null) {
+            this.authorities = new ArrayList<Authority>();
+        }
+        this.authorities.clear();
+        if(authorities != null) {
+            this.authorities.addAll(authorities);
+        }
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof UserImpl)) return false;
+        if (!super.equals(o)) return false;
+
+        UserImpl user = (UserImpl) o;
+
+        if (credsExpired != user.credsExpired) return false;
+        if (enabled != user.enabled) return false;
+        if (expired != user.expired) return false;
+        if (locked != user.locked) return false;
+        if (authorities != null ? !authorities.equals(user.authorities) : user.authorities != null) return false;
+        if (confirmPassword != null ? !confirmPassword.equals(user.confirmPassword) : user.confirmPassword != null)
+            return false;
+        if (defaultPageLayout != null ? !defaultPageLayout.equals(user.defaultPageLayout) : user.defaultPageLayout != null)
+            return false;
+        if (defaultPageLayoutCode != null ? !defaultPageLayoutCode.equals(user.defaultPageLayoutCode) : user.defaultPageLayoutCode != null)
+            return false;
+        if (forgotPasswordHash != null ? !forgotPasswordHash.equals(user.forgotPasswordHash) : user.forgotPasswordHash != null)
+            return false;
+        if (forgotPasswordTime != null ? !forgotPasswordTime.equals(user.forgotPasswordTime) : user.forgotPasswordTime != null)
+            return false;
+        if (id != null ? !id.equals(user.id) : user.id != null) return false;
+        if (openId != null ? !openId.equals(user.openId) : user.openId != null) return false;
+        if (password != null ? !password.equals(user.password) : user.password != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = super.hashCode();
+        result = 31 * result + (id != null ? id.hashCode() : 0);
+        result = 31 * result + (password != null ? password.hashCode() : 0);
+        result = 31 * result + (expired ? 1 : 0);
+        result = 31 * result + (credsExpired ? 1 : 0);
+        result = 31 * result + (locked ? 1 : 0);
+        result = 31 * result + (enabled ? 1 : 0);
+        result = 31 * result + (openId != null ? openId.hashCode() : 0);
+        result = 31 * result + (forgotPasswordHash != null ? forgotPasswordHash.hashCode() : 0);
+        result = 31 * result + (forgotPasswordTime != null ? forgotPasswordTime.hashCode() : 0);
+        result = 31 * result + (defaultPageLayout != null ? defaultPageLayout.hashCode() : 0);
+        result = 31 * result + (confirmPassword != null ? confirmPassword.hashCode() : 0);
+        result = 31 * result + (defaultPageLayoutCode != null ? defaultPageLayoutCode.hashCode() : 0);
+        result = 31 * result + (authorities != null ? authorities.hashCode() : 0);
+        return result;
+    }
+}

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/WidgetTagImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/WidgetTagImpl.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/WidgetTagImpl.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/WidgetTagImpl.java Mon Jun 11 14:39:27 2012
@@ -16,18 +16,12 @@
 
 package org.apache.rave.portal.model.impl;
 
-import org.apache.rave.portal.model.Tag;
 import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.Tag;
 import org.apache.rave.portal.model.WidgetTag;
 
 import java.util.Date;
 
-/**
- * Created by IntelliJ IDEA.
- * User: Aaron Gooch
- * Date: 5/31/12
- * Time: 9:36 AM
- */
 public class WidgetTagImpl implements WidgetTag {
 
     private Long widgetId;

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/UserRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/UserRepository.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/UserRepository.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/UserRepository.java Mon Jun 11 14:39:27 2012
@@ -21,29 +21,28 @@ package org.apache.rave.portal.repositor
 import org.apache.rave.persistence.Repository;
 import org.apache.rave.portal.model.User;
 
-import java.util.Date;
 import java.util.List;
 
 public interface UserRepository extends Repository<User> {
 
     /**
-     * Gets a {@link User} by its username
+     * Gets a {@link org.apache.rave.portal.model.User} by its username
      *
      * @param username the (unique) name of the user
-     * @return {@link User} if one exists, otherwise {@literal null}
+     * @return {@link org.apache.rave.portal.model.User} if one exists, otherwise {@literal null}
      */
     User getByUsername(String username);
 
     /**
-     * Gets a {@link User} by its email address
+     * Gets a {@link org.apache.rave.portal.model.User} by its email address
      *
      * @param userEmail the (unique) email address of the user
-     * @return {@link User} if one exists, otherwise {@literal null}
+     * @return {@link org.apache.rave.portal.model.User} if one exists, otherwise {@literal null}
      */
     User getByUserEmail(String userEmail);
 
     /**
-     * List of {@link User}'s with a limited resultset
+     * List of {@link org.apache.rave.portal.model.User}'s with a limited resultset
      *
      * @param offset   start point within the total resultset
      * @param pageSize maximum number of items to be returned (for paging)
@@ -52,12 +51,12 @@ public interface UserRepository extends 
     List<User> getLimitedList(int offset, int pageSize);
 
     /**
-     * @return the total number of {@link User}'s in the repository. Useful for paging.
+     * @return the total number of {@link org.apache.rave.portal.model.User}'s in the repository. Useful for paging.
      */
     int getCountAll();
 
     /**
-     * List of {@link User}'s that match a searchterm in their username or email address
+     * List of {@link org.apache.rave.portal.model.User}'s that match a searchterm in their username or email address
      *
      * @param searchTerm search term
      * @param offset     start point within the total resultset
@@ -69,7 +68,7 @@ public interface UserRepository extends 
     /**
      *
      * @param searchTerm search term
-     * @return the total number of {@link User}'s that match a searchterm in their username or email address.
+     * @return the total number of {@link org.apache.rave.portal.model.User}'s that match a searchterm in their username or email address.
      *         Useful for paging.
      */
     int getCountByUsernameOrEmail(String searchTerm);
@@ -83,10 +82,10 @@ public interface UserRepository extends 
     List<User> getAllByAddedWidget(long widgetId);
 
     /**
-     * Gets a {@link User} by generated forgot email hash
+     * Gets a {@link org.apache.rave.portal.model.User} by generated forgot email hash
      *
      * @param hash unique generated hash
-     * @return {@link User} if one exists for given hash, otherwise {@literal null}
+     * @return {@link org.apache.rave.portal.model.User} if one exists for given hash, otherwise {@literal null}
      */
     User getByForgotPasswordHash(String hash);
 

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java Mon Jun 11 14:39:27 2012
@@ -20,6 +20,7 @@
 package org.apache.rave.portal.repository.impl;
 
 import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.model.conversion.JpaConverter;
 import org.apache.rave.portal.model.conversion.JpaPageConverter;
 import org.apache.rave.portal.repository.PageRepository;
 import org.apache.rave.util.CollectionUtils;
@@ -106,8 +107,7 @@ public class JpaPageRepository implement
 
     @Override
     public Page createPageForUser(User user, PageTemplate pt) {
-        Page personPageFromTemplate = convert(pt, user);
-        return personPageFromTemplate;
+        return convert(pt, user);
     }
 
     /**
@@ -118,11 +118,12 @@ public class JpaPageRepository implement
      * @return Page
      */
     private Page convert(PageTemplate pt, User user) {
+        JpaUser jpaUser = JpaConverter.getInstance().convert(user, User.class);
         Page p = new JpaPage();
         p.setName(pt.getName());
         p.setPageType(pt.getPageType());
-        p.setOwner(user);
-        PageUser pageUser = new JpaPageUser(p.getOwner(), p, pt.getRenderSequence());
+        p.setOwner(jpaUser);
+        PageUser pageUser = new JpaPageUser(jpaUser, p, pt.getRenderSequence());
         pageUser.setPageStatus(PageInvitationStatus.OWNER);
         pageUser.setEditor(true);
         List<PageUser> members = new ArrayList<PageUser>();
@@ -198,7 +199,7 @@ public class JpaPageRepository implement
             lPage.setRegions(convertRegions(pt.getPageTemplateRegions(), lPage));
 
             // create new pageUser tuple
-            PageUser pageUser = new JpaPageUser(lPage.getOwner(), lPage, pt.getRenderSequence());
+            PageUser pageUser = new JpaPageUser((JpaUser)JpaConverter.getInstance().convert(lPage.getOwner(), User.class), lPage, pt.getRenderSequence());
             pageUser.setPageStatus(PageInvitationStatus.OWNER);
             pageUser.setEditor(true);
             List<PageUser> members = new ArrayList<PageUser>();

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java Mon Jun 11 14:39:27 2012
@@ -19,86 +19,107 @@
 
 package org.apache.rave.portal.repository.impl;
 
-import org.apache.rave.persistence.jpa.AbstractJpaRepository;
-import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.JpaUser;
 import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.model.WidgetComment;
-import org.apache.rave.portal.model.WidgetRating;
+import org.apache.rave.portal.model.conversion.JpaUserConverter;
 import org.apache.rave.portal.repository.UserRepository;
+import org.apache.rave.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
 import javax.persistence.TypedQuery;
-
-import java.util.Date;
 import java.util.List;
 
-import static org.apache.rave.persistence.jpa.util.JpaUtil.getPagedResultList;
-import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
+import static org.apache.rave.persistence.jpa.util.JpaUtil.*;
 
 /**
  */
 @Repository
-public class JpaUserRepository extends AbstractJpaRepository<User> implements UserRepository {
+public class JpaUserRepository implements UserRepository {
 
-    public JpaUserRepository() {
-        super(User.class);
-    }
+    @Autowired
+    private JpaUserConverter converter;
+
+    @PersistenceContext
+    private EntityManager manager;
 
     @Override
     public User getByUsername(String username) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_GET_BY_USERNAME, User.class);
-        query.setParameter(User.PARAM_USERNAME, username);
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_GET_BY_USERNAME, JpaUser.class);
+        query.setParameter(JpaUser.PARAM_USERNAME, username);
         return getSingleResult(query.getResultList());
     }
 
     @Override
     public User getByUserEmail(String userEmail) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_GET_BY_USER_EMAIL, User.class);
-        query.setParameter(User.PARAM_EMAIL, userEmail);
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_GET_BY_USER_EMAIL, JpaUser.class);
+        query.setParameter(JpaUser.PARAM_EMAIL, userEmail);
         return getSingleResult(query.getResultList());
     }
 
     @Override
     public List<User> getLimitedList(int offset, int pageSize) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_GET_ALL, User.class);
-        return getPagedResultList(query, offset, pageSize);
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_GET_ALL, JpaUser.class);
+        return CollectionUtils.<User>toBaseTypedList(getPagedResultList(query, offset, pageSize));
     }
 
     @Override
     public int getCountAll() {
-        Query query = manager.createNamedQuery(User.USER_COUNT_ALL);
+        Query query = manager.createNamedQuery(JpaUser.USER_COUNT_ALL);
         Number countResult = (Number) query.getSingleResult();
         return countResult.intValue();
     }
 
     @Override
     public List<User> findByUsernameOrEmail(String searchTerm, int offset, int pageSize) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_FIND_BY_USERNAME_OR_EMAIL, User.class);
-        query.setParameter(User.PARAM_SEARCHTERM, "%" + searchTerm.toLowerCase() + "%");
-        return getPagedResultList(query, offset, pageSize);
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_FIND_BY_USERNAME_OR_EMAIL, JpaUser.class);
+        query.setParameter(JpaUser.PARAM_SEARCHTERM, "%" + searchTerm.toLowerCase() + "%");
+        return CollectionUtils.<User>toBaseTypedList(getPagedResultList(query, offset, pageSize));
     }
 
     @Override
     public int getCountByUsernameOrEmail(String searchTerm) {
-        Query query = manager.createNamedQuery(User.USER_COUNT_FIND_BY_USERNAME_OR_EMAIL);
-        query.setParameter(User.PARAM_SEARCHTERM, "%" + searchTerm.toLowerCase() + "%");
+        Query query = manager.createNamedQuery(JpaUser.USER_COUNT_FIND_BY_USERNAME_OR_EMAIL);
+        query.setParameter(JpaUser.PARAM_SEARCHTERM, "%" + searchTerm.toLowerCase() + "%");
         Number countResult = (Number) query.getSingleResult();
         return countResult.intValue();
     }
 
     @Override
     public List<User> getAllByAddedWidget(long widgetId) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_GET_ALL_FOR_ADDED_WIDGET, User.class);
-        query.setParameter(User.PARAM_WIDGET_ID, widgetId);
-        return query.getResultList();
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, JpaUser.class);
+        query.setParameter(JpaUser.PARAM_WIDGET_ID, widgetId);
+        return CollectionUtils.<User>toBaseTypedList(query.getResultList());
     }
 
     @Override
     public User getByForgotPasswordHash(String hash) {
-        TypedQuery<User> query = manager.createNamedQuery(User.USER_GET_BY_FORGOT_PASSWORD_HASH, User.class);
-        query.setParameter(User.PARAM_FORGOT_PASSWORD_HASH, hash);
+        TypedQuery<JpaUser> query = manager.createNamedQuery(JpaUser.USER_GET_BY_FORGOT_PASSWORD_HASH, JpaUser.class);
+        query.setParameter(JpaUser.PARAM_FORGOT_PASSWORD_HASH, hash);
         return getSingleResult(query.getResultList());
     }
 
+    @Override
+    public Class<? extends User> getType() {
+        return JpaUser.class;
+    }
+
+    @Override
+    public User get(long id) {
+        return manager.find(JpaUser.class, id);
+    }
+
+    @Override
+    public User save(User item) {
+        JpaUser converted = converter.convert(item);
+        return saveOrUpdate(converted.getEntityId(), manager, converted);
+    }
+
+    @Override
+    public void delete(User item) {
+       manager.remove(converter.convert(item));
+    }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultCategoryPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -157,7 +157,7 @@ public class DefaultCategoryPermissionEv
     }
 
     private boolean isCategoryCreatedUserById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -18,10 +18,7 @@
  */
 package org.apache.rave.portal.security.impl;
 
-import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.PageType;
-import org.apache.rave.portal.model.PageUser;
-import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.repository.PageRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -165,7 +162,7 @@ public class DefaultPagePermissionEvalua
     }
 
     private boolean isPageOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -18,10 +18,7 @@
  */
 package org.apache.rave.portal.security.impl;
 
-import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.PageUser;
-import org.apache.rave.portal.model.Region;
-import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.repository.RegionRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -158,7 +155,7 @@ public class DefaultRegionPermissionEval
     }
 
     private boolean isRegionOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -18,10 +18,7 @@
  */
 package org.apache.rave.portal.security.impl;
 
-import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.PageUser;
-import org.apache.rave.portal.model.RegionWidget;
-import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.repository.RegionWidgetRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -158,7 +155,7 @@ public class DefaultRegionWidgetPermissi
     }
 
     private boolean isRegionWidgetOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetCommentPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -15,6 +15,7 @@
  */
 package org.apache.rave.portal.security.impl;
 
+import org.apache.rave.portal.model.JpaUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.WidgetComment;
 import org.apache.rave.portal.repository.WidgetCommentRepository;
@@ -110,7 +111,7 @@ public class DefaultWidgetCommentPermiss
                 hasPermission =  true;
                 break;
             case CREATE:
-                hasPermission = isWidgetCommentOwnerById(authentication, widgetComment.getUser().getEntityId());
+                hasPermission = isWidgetCommentOwnerById(authentication, widgetComment.getUser().getId());
                 break;
             case DELETE:
             case UPDATE:
@@ -191,6 +192,6 @@ public class DefaultWidgetCommentPermiss
         return ((User)authentication.getPrincipal()).getUsername().equals(username);
     }
     private boolean isWidgetCommentOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((JpaUser)authentication.getPrincipal()).getId().equals(userId);
     }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -161,7 +161,7 @@ public class DefaultWidgetPermissionEval
     }
 
     private boolean isWidgetOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
     
     private boolean isPublishedWidget(Widget widget, List<Widget> trustedWidgetContainer, boolean trustedDomainObject) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetRatingPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -18,8 +18,8 @@
  */
 package org.apache.rave.portal.security.impl;
 
-import org.apache.rave.portal.model.WidgetRating;
 import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.WidgetRating;
 import org.apache.rave.portal.repository.WidgetRatingRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -156,7 +156,7 @@ public class DefaultWidgetRatingPermissi
     }
 
     private boolean isWidgetRatingOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((User)authentication.getPrincipal()).getId().equals(userId);
     }
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetTagPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetTagPermissionEvaluator.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetTagPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetTagPermissionEvaluator.java Mon Jun 11 14:39:27 2012
@@ -15,6 +15,7 @@
  */
 package org.apache.rave.portal.security.impl;
 
+import org.apache.rave.portal.model.JpaUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.WidgetTag;
 import org.apache.rave.portal.repository.WidgetTagRepository;
@@ -110,7 +111,7 @@ public class DefaultWidgetTagPermissionE
                 hasPermission =  true;
                 break;
             case CREATE:
-                hasPermission = isWidgetTagOwnerById(authentication, widgetTag.getUser().getEntityId());
+                hasPermission = isWidgetTagOwnerById(authentication, widgetTag.getUser().getId());
                 break;
             case DELETE:
             case UPDATE:
@@ -193,6 +194,6 @@ public class DefaultWidgetTagPermissionE
         return ((User)authentication.getPrincipal()).getUsername().equals(username);
     }
     private boolean isWidgetTagOwnerById(Authentication authentication, Long userId) {
-        return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
+        return ((JpaUser)authentication.getPrincipal()).getId().equals(userId);
     }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/NewAccountService.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/NewAccountService.java?rev=1348873&r1=1348872&r2=1348873&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/NewAccountService.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/NewAccountService.java Mon Jun 11 14:39:27 2012
@@ -26,7 +26,7 @@ public interface NewAccountService {
     /**
      * Creates a new account using several other Rave services.
      *
-     * @param newUser the {@link User} from which a new {@link org.apache.rave.portal.model.User} can be created
+     * @param newUser the {@link org.apache.rave.portal.model.JpaUser} from which a new {@link org.apache.rave.portal.model.JpaUser} can be created
      * @throws Exception in case something goes wrong
      */
     public void createNewAccount(User newUser) throws Exception;