You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ca...@apache.org on 2012/06/18 23:12:00 UTC

svn commit: r1351489 - in /rave/trunk: rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/ rave-components/rave-core/src/main/java/org/apache/rave/portal/repos...

Author: carlucci
Date: Mon Jun 18 21:11:59 2012
New Revision: 1351489

URL: http://svn.apache.org/viewvc?rev=1351489&view=rev
Log:
RAVE-680: Rave is not generating Foreign Keys with default JPA implementation

Modified:
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetComment.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetTag.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/CategoryRepository.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaCategoryRepository.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
    rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
    rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java
    rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java
    rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java
    rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
    rave/trunk/rave-components/rave-core/src/test/resources/portal.properties
    rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql
    rave/trunk/rave-portal-resources/src/main/resources/portal.properties
    rave/trunk/rave-portal/src/test/resources/portal.properties
    rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml
    rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave-shindig-test-applicationContext.xml
    rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties
    rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml
    rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java Mon Jun 18 21:11:59 2012
@@ -60,13 +60,7 @@ public class Group implements BasicEntit
     @JoinColumn(name = "owner_id", referencedColumnName = "entity_id")
     private Person owner;
 
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    @JoinTable(name = "group_members",
-            joinColumns =
-            @JoinColumn(name = "group_id", referencedColumnName = "entity_id"),
-            inverseJoinColumns =
-            @JoinColumn(name = "person_id", referencedColumnName = "entity_id"))
+    @ManyToMany(fetch = FetchType.EAGER, mappedBy = "groups")
     private List<Person> members;
 
     public Person getOwner() {

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java Mon Jun 18 21:11:59 2012
@@ -20,27 +20,8 @@ package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
 
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Transient;
-import java.util.ArrayList;
-import java.util.HashMap;
+import javax.persistence.*;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Represents a person in the persistence context
@@ -131,6 +112,12 @@ public class Person implements BasicEnti
             inverseJoinColumns = @JoinColumn(name = "followed_id", referencedColumnName = "entity_id"))
     protected List<Person> friends;
 
+    @ManyToMany(fetch = FetchType.LAZY)
+    @JoinTable(name = "group_members",
+            joinColumns = @JoinColumn(name = "person_id", referencedColumnName = "entity_id"),
+            inverseJoinColumns = @JoinColumn(name = "group_id", referencedColumnName = "entity_id"))
+    private List<Group> groups;
+
     public Long getEntityId() {
         return entityId;
     }
@@ -259,6 +246,14 @@ public class Person implements BasicEnti
         this.organizations = organizations;
     }
 
+    public List<Group> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(List<Group> groups) {
+        this.groups = groups;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/User.java Mon Jun 18 21:11:59 2012
@@ -24,10 +24,7 @@ import org.springframework.security.core
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
+import java.util.*;
 
 /**
  * {@inheritDoc}
@@ -100,6 +97,12 @@ public class User extends Person impleme
     @JoinColumn(name="default_page_layout_id")
     private PageLayout defaultPageLayout;
 
+    @OneToMany(targetEntity=PageUser.class, fetch = FetchType.LAZY, mappedBy="user", orphanRemoval=true)
+    private List<PageUser> pageUsers;
+
+    @OneToMany(targetEntity=WidgetTag.class, fetch = FetchType.LAZY, mappedBy="user", orphanRemoval=true)
+    private List<WidgetTag> widgetTags;
+
     @Transient
     private String confirmPassword;
 
@@ -294,6 +297,30 @@ public class User extends Person impleme
 		this.confirmPassword = confirmPassword;
 	}
 
+    public String getDefaultPageLayoutCode() {
+        return defaultPageLayoutCode;
+    }
+
+    public void setDefaultPageLayoutCode(String defaultPageLayoutCode) {
+        this.defaultPageLayoutCode = defaultPageLayoutCode;
+    }
+
+    public List<PageUser> getPageUsers() {
+        return pageUsers;
+    }
+
+    public void setPageUsers(List<PageUser> pageUsers) {
+        this.pageUsers = pageUsers;
+    }
+
+    public List<WidgetTag> getWidgetTags() {
+        return widgetTags;
+    }
+
+    public void setWidgetTags(List<WidgetTag> widgetTags) {
+        this.widgetTags = widgetTags;
+    }
+
     @PreRemove
     public void preRemove() {
         for (Authority authority : authorities) {
@@ -374,11 +401,4 @@ public class User extends Person impleme
         return p;
     }
 
-	public String getDefaultPageLayoutCode() {
-		return defaultPageLayoutCode;
-	}
-
-	public void setDefaultPageLayoutCode(String defaultPageLayoutCode) {
-		this.defaultPageLayoutCode = defaultPageLayoutCode;
-	}
 }

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetComment.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetComment.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetComment.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetComment.java Mon Jun 18 21:11:59 2012
@@ -46,10 +46,7 @@ public class WidgetComment implements Ba
     @Column(name = "widget_id")
     private Long widgetId;
 
-//    @Basic
-//    @Column(name = "user_id")
-//    private Long userId;
-    @OneToOne(fetch=FetchType.EAGER)
+    @ManyToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="user_id")
     private User user;
 

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetTag.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetTag.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetTag.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/WidgetTag.java Mon Jun 18 21:11:59 2012
@@ -47,7 +47,7 @@ public class WidgetTag implements BasicE
     @Column(name = "widget_id")
     private Long widgetId;
 
-    @OneToOne(fetch = FetchType.EAGER)
+    @ManyToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "user_id")
     private User user;
 

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/CategoryRepository.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/CategoryRepository.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/CategoryRepository.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/CategoryRepository.java Mon Jun 18 21:11:59 2012
@@ -26,4 +26,13 @@ public interface CategoryRepository exte
      * @return a valid List
      */
     List<Category> getAll();
+
+    /**
+     * Removes a user from the createdBy or modifiedBy fields for any Category they are associated with and assigns
+     * the values to null
+     *
+     * @param userId
+     * @return the number of Categories modified
+     */
+    int removeFromCreatedOrModifiedFields(long userId);
 }
\ No newline at end of file

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaCategoryRepository.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaCategoryRepository.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaCategoryRepository.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaCategoryRepository.java Mon Jun 18 21:11:59 2012
@@ -21,6 +21,7 @@ package org.apache.rave.portal.repositor
 
 import org.apache.rave.persistence.jpa.AbstractJpaRepository;
 import org.apache.rave.portal.model.Category;
+import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.repository.CategoryRepository;
 import org.springframework.stereotype.Repository;
 
@@ -40,4 +41,28 @@ public class JpaCategoryRepository exten
     public List<Category> getAll() {
         return manager.createNamedQuery(Category.GET_ALL, Category.class).getResultList();
     }
+
+    @Override
+    public int removeFromCreatedOrModifiedFields(long userId) {
+        List<Category> categories = getAll();
+        int numRecordsChanged = 0;
+        for (Category category : categories) {
+            boolean changed = false;
+            User createdUser = category.getCreatedUser();
+            User lastModifiedUser = category.getLastModifiedUser();
+            if (createdUser != null && userId == createdUser.getEntityId()) {
+                category.setCreatedUser(null);
+                changed = true;
+            }
+            if (lastModifiedUser != null && userId == lastModifiedUser.getEntityId()) {
+                category.setLastModifiedUser(null);
+                changed = true;
+            }
+            if (changed) {
+                numRecordsChanged++;
+                save(category);
+            }
+        }
+        return numRecordsChanged;
+    }
 }

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java Mon Jun 18 21:11:59 2012
@@ -32,12 +32,7 @@ import org.apache.rave.portal.model.Page
 import org.apache.rave.portal.model.Person;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.util.SearchResult;
-import org.apache.rave.portal.repository.PageRepository;
-import org.apache.rave.portal.repository.PageTemplateRepository;
-import org.apache.rave.portal.repository.UserRepository;
-import org.apache.rave.portal.repository.WidgetCommentRepository;
-import org.apache.rave.portal.repository.WidgetRatingRepository;
-import org.apache.rave.portal.repository.WidgetRepository;
+import org.apache.rave.portal.repository.*;
 import org.apache.rave.portal.service.EmailService;
 import org.apache.rave.portal.service.UserService;
 import org.slf4j.Logger;
@@ -70,6 +65,7 @@ public class DefaultUserService implemen
     private final WidgetRatingRepository widgetRatingRepository;
     private final WidgetCommentRepository widgetCommentRepository;
     private final WidgetRepository widgetRepository;
+    private final CategoryRepository categoryRepository;
 
     @Autowired
     private PasswordEncoder passwordEncoder;
@@ -113,13 +109,15 @@ public class DefaultUserService implemen
                               WidgetRatingRepository widgetRatingRepository,
                               WidgetCommentRepository widgetCommentRepository,
                               WidgetRepository widgetRepository,
-                              PageTemplateRepository pageTemplateRepository) {
+                              PageTemplateRepository pageTemplateRepository,
+                              CategoryRepository categoryRepository) {
         this.userRepository = userRepository;
         this.pageRepository = pageRepository;
         this.widgetRatingRepository = widgetRatingRepository;
         this.widgetCommentRepository = widgetCommentRepository;
         this.widgetRepository = widgetRepository;
         this.pageTemplateRepository = pageTemplateRepository;
+        this.categoryRepository = categoryRepository;
     }
 
     @Override
@@ -260,11 +258,14 @@ public class DefaultUserService implemen
         int numWidgetRatings = widgetRatingRepository.deleteAll(userId);
         // unassign the user from any widgets where they were the owner
         int numWidgetsOwned = widgetRepository.unassignWidgetOwner(userId);
+        // unassign the user from any category records they created or modified
+        int numCategoriesTouched = categoryRepository.removeFromCreatedOrModifiedFields(userId);
+
         // finally delete the user
         userRepository.delete(user);
         log.info("Deleted user [" + userId + ',' + username + "] - numPages: " + numDeletedPages + ", numPersonPages:" +
                  numDeletedPersonPages + ", numWidgetComments: " + numWidgetComments + ", numWidgetRatings: " +
-                 numWidgetRatings + ", numWidgetsOwned: " + numWidgetsOwned);
+                 numWidgetRatings + ", numWidgetsOwned: " + numWidgetsOwned + ",numCategoriesTouched:" + numCategoriesTouched);
     }
 
     @Override

Modified: rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml (original)
+++ rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml Mon Jun 18 21:11:59 2012
@@ -16,7 +16,7 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
   $Id$
 -->
 <beans xmlns="http://www.springframework.org/schema/beans"
@@ -83,6 +83,7 @@
                 <entry key="openjpa.Log" value="${portal.openjpa.Log}"/>
                 <entry key="openjpa.RuntimeUnenhancedClasses" value="${portal.openjpa.RuntimeUnenhancedClasses}"/>
                 <entry key="openjpa.jdbc.SynchronizeMappings" value="${portal.openjpa.jdbc.SynchronizeMappings}"/>
+                <entry key="openjpa.jdbc.MappingDefaults" value="${portal.openjpa.jdbc.MappingDefaults}"/>
             </map>
         </property>
     </bean>

Modified: rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java (original)
+++ rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java Mon Jun 18 21:11:59 2012
@@ -80,8 +80,8 @@ public class AbstractJpaRepositoryTest {
     @Rollback(true)
     public void save_newEntity() throws Exception {
         for (Repository repository : repositories) {
-            BasicEntity entity = constructNewEntityForRepository(repository);            
-            RepositoryTestUtils.populateAllRequiredFieldsInEntity(sharedManager, entity);            
+            BasicEntity entity = constructNewEntityForRepository(repository);
+            RepositoryTestUtils.populateAllRequiredFieldsInEntity(sharedManager, entity);
             BasicEntity saved = (BasicEntity)repository.save(entity);
             sharedManager.flush();
             assertThat(saved, is(sameInstance(entity)));
@@ -105,12 +105,18 @@ public class AbstractJpaRepositoryTest {
 
     @Test
     @Rollback(true)
-    public void delete() {
+    public void delete() throws Exception {
         for(Repository repository : repositories) {
-            Object entity = repository.get(VALID_ENTITY_ID);
-            repository.delete(entity);
+            // to prevent possible RI errors lets create fresh objects then delete them
+            BasicEntity entity = constructNewEntityForRepository(repository);
+            RepositoryTestUtils.populateAllRequiredFieldsInEntity(sharedManager, entity);
+            BasicEntity saved = (BasicEntity)repository.save(entity);
+            long entityId = saved.getEntityId();
+            assertThat(entityId > 0, is(true));
+
+            repository.delete(saved);
             sharedManager.flush();
-            assertThat(repository.get(VALID_ENTITY_ID), is(nullValue()));
+            assertThat(repository.get(entityId), is(nullValue()));
         }
     }
 
@@ -121,5 +127,5 @@ public class AbstractJpaRepositoryTest {
             throw new RuntimeException(e);
         }
     }
-    
+
 }

Modified: rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java (original)
+++ rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaCategoryRepositoryTest.java Mon Jun 18 21:11:59 2012
@@ -26,6 +26,7 @@ import org.apache.rave.portal.repository
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.transaction.annotation.Transactional;
@@ -72,7 +73,7 @@ public class JpaCategoryRepositoryTest {
     public void save_duplicateText_exception() {
         Date now = new Date();
         User user = new User(1L);
-        
+
         Category wc = new Category();
         wc.setText(DUPLICATE_TEXT_VALUE);
         wc.setCreatedDate(now);
@@ -93,4 +94,10 @@ public class JpaCategoryRepositoryTest {
             }
         }
     }
+
+    @Test
+    @Rollback(value = true)
+    public void removeFromCreatedOrModifiedFields() {
+        assertThat(repository.removeFromCreatedOrModifiedFields(1L), is(3));
+    }
 }

Modified: rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java (original)
+++ rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaUserRepositoryTest.java Mon Jun 18 21:11:59 2012
@@ -31,6 +31,7 @@ import org.springframework.beans.factory
 import org.springframework.security.crypto.bcrypt.BCrypt;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.test.annotation.Rollback;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.transaction.annotation.Transactional;

Modified: rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java (original)
+++ rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java Mon Jun 18 21:11:59 2012
@@ -52,6 +52,7 @@ public class DefaultUserServiceTest {
     private WidgetCommentRepository widgetCommentRepository;
     private WidgetRatingRepository widgetRatingRepository;
     private WidgetRepository widgetRepository;
+    private CategoryRepository categoryRepository;
 
     private static final String USER_NAME = "1234";
     private static final String USER_EMAIL = "test@test.com";
@@ -66,8 +67,10 @@ public class DefaultUserServiceTest {
         widgetCommentRepository = createMock(WidgetCommentRepository.class);
         widgetRatingRepository = createMock(WidgetRatingRepository.class);
         widgetRepository = createMock(WidgetRepository.class);
+        categoryRepository = createMock(CategoryRepository.class);
 
-        service = new DefaultUserService(pageRepository, userRepository, widgetRatingRepository, widgetCommentRepository, widgetRepository, pageTemplateRepository);
+        service = new DefaultUserService(pageRepository, userRepository, widgetRatingRepository, widgetCommentRepository,
+                                         widgetRepository, pageTemplateRepository, categoryRepository);
     }
 
     @After
@@ -112,7 +115,7 @@ public class DefaultUserServiceTest {
         service.getAuthenticatedUser();
         verify(auth);
     }
-    
+
 
     @Test
     public void setAuthenticatedUser_valid() {
@@ -260,24 +263,26 @@ public class DefaultUserServiceTest {
         final int NUM_COMMENTS = 33;
         final int NUM_RATINGS = 99;
         final int NUM_WIDGETS_OWNED = 4;
+        final int NUM_CATEGORIES = 2;
         User user = new User(USER_ID, USER_NAME);
         Page page = new Page(1L, user);
         List<Page> pages = new ArrayList<Page>();
         pages.add(page);
-        
+
         expect(userRepository.get(USER_ID)).andReturn(user);
         expect(pageRepository.deletePages(USER_ID, PageType.USER)).andReturn(pages.size());
         expect(pageRepository.deletePages(USER_ID, PageType.PERSON_PROFILE)).andReturn(pages.size());
         expect(widgetCommentRepository.deleteAll(USER_ID)).andReturn(NUM_COMMENTS);
-        expect(widgetRatingRepository.deleteAll(USER_ID)).andReturn(NUM_RATINGS);       
-        expect(widgetRepository.unassignWidgetOwner(USER_ID)).andReturn( NUM_WIDGETS_OWNED);       
+        expect(widgetRatingRepository.deleteAll(USER_ID)).andReturn(NUM_RATINGS);
+        expect(widgetRepository.unassignWidgetOwner(USER_ID)).andReturn( NUM_WIDGETS_OWNED);
+        expect(categoryRepository.removeFromCreatedOrModifiedFields(USER_ID)).andReturn(NUM_CATEGORIES);
         userRepository.delete(user);
         expectLastCall();
-        replay(userRepository, pageRepository, widgetCommentRepository, widgetRatingRepository, widgetRepository);
+        replay(userRepository, pageRepository, widgetCommentRepository, widgetRatingRepository, widgetRepository, categoryRepository);
 
         service.deleteUser(USER_ID);
 
-        verify(userRepository, pageRepository, widgetCommentRepository, widgetRatingRepository, widgetRepository);
+        verify(userRepository, pageRepository, widgetCommentRepository, widgetRatingRepository, widgetRepository, categoryRepository);
     }
 
     @Test
@@ -299,12 +304,12 @@ public class DefaultUserServiceTest {
         List<Person> personList = new ArrayList<Person>();
         personList.add(userList.get(0).toPerson());
         personList.add(userList.get(1).toPerson());
-        
+
         expect(userRepository.getAllByAddedWidget(VALID_WIDGET_ID)).andReturn(userList);
         replay(userRepository);
 
         assertThat(service.getAllByAddedWidget(VALID_WIDGET_ID), is(personList));
-        
+
         verify(userRepository);
     }
 

Modified: rave/trunk/rave-components/rave-core/src/test/resources/portal.properties
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/resources/portal.properties?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/resources/portal.properties (original)
+++ rave/trunk/rave-components/rave-core/src/test/resources/portal.properties Mon Jun 18 21:11:59 2012
@@ -35,6 +35,7 @@ portal.jpaVendorAdapter.showSql=true
 portal.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
 portal.openjpa.RuntimeUnenhancedClasses=supported
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST

Modified: rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql (original)
+++ rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql Mon Jun 18 21:11:59 2012
@@ -41,6 +41,8 @@ set @page_template_seq = 'page_template'
 set @page_template_region_seq = 'page_template_region';
 set @page_template_widget_seq = 'page_template_widget';
 set @page_user_seq = 'page_user';
+set @groups_seq = 'groups';
+set @group_members_seq = 'group_members';
 
 CREATE TABLE IF NOT EXISTS RAVE_PORTAL_SEQUENCES (seq_name VARCHAR(255) PRIMARY KEY NOT NULL, seq_count BIGINT(19));
 INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@page_seq, 1);
@@ -61,6 +63,8 @@ INSERT INTO RAVE_PORTAL_SEQUENCES(seq_na
 INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@page_template_region_seq, 1);
 INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@page_template_widget_seq, 1);
 INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@page_user_seq, 1);
+INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@groups_seq, 1);
+INSERT INTO RAVE_PORTAL_SEQUENCES(seq_name, seq_count) values (@group_members_seq, 1);
 
 
   -- ***********************************************************************************
@@ -1044,17 +1048,17 @@ UPDATE RAVE_PORTAL_SEQUENCES SET seq_cou
 
 set @category_id2 = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @category_seq);
 insert into category (entity_id, text, created_user_id, created_date, last_modified_user_id, last_modified_date)
-values (@category_id2, 'AAA Category', @user_id_1, '2012-01-19', @user_id_2, '2012-01-19');
+values (@category_id2, 'AAA Category', @user_id_1, '2012-01-19', @user_id_1, '2012-01-19');
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @category_seq;
 
 set @category_id3 = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @category_seq);
 insert into category (entity_id, text, created_user_id, created_date, last_modified_user_id, last_modified_date)
-values (@category_id3, 'News Category', @user_id_1, '2012-01-19', @user_id_2, '2012-01-19');
+values (@category_id3, 'News Category', @user_id_2, '2012-01-19', @user_id_2, '2012-01-19');
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @category_seq;
 
 set @category_id4 = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @category_seq);
 insert into category (entity_id, text, created_user_id, created_date, last_modified_user_id, last_modified_date)
-values (@category_id4, 'Technology Category', @user_id_1, '2012-01-19', @user_id_2, '2012-01-19');
+values (@category_id4, 'Technology Category', @user_id_2, '2012-01-19', @user_id_1, '2012-01-19');
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @category_seq;
 
 -- widget category
@@ -1162,3 +1166,26 @@ set @next_user_profile_page_template_wid
 insert into page_template_widget (entity_id, page_template_region_id, render_sequence, widget_id, locked)
 values (@next_user_profile_page_template_widget_id, @user_profile_page_template_region_id, 1, @work_experience_widget_id, true);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @page_template_widget_seq;
+
+-- group data --
+set @group_id_1 = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @groups_seq);
+INSERT INTO groups(entity_id, title, description)
+VALUES (@group_id_1, 'Party', 'Party Group');
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @groups_seq;
+
+set @group_id_2 = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @groups_seq);
+INSERT INTO groups(entity_id, title, description)
+VALUES (@group_id_2, 'Portal', 'Portal Group');
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @groups_seq;
+-- end group data --
+
+-- group members data --
+INSERT INTO group_members(group_id, person_id)
+VALUES (@group_id_1, @user_id_1);
+INSERT INTO group_members(group_id, person_id)
+VALUES (@group_id_1, @user_id_5);
+INSERT INTO group_members(group_id, person_id)
+VALUES (@group_id_2, @user_id_1);
+INSERT INTO group_members(group_id, person_id)
+VALUES (@group_id_2, @user_id_2);
+-- end group members data --
\ No newline at end of file

Modified: rave/trunk/rave-portal-resources/src/main/resources/portal.properties
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/portal.properties?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/portal.properties (original)
+++ rave/trunk/rave-portal-resources/src/main/resources/portal.properties Mon Jun 18 21:11:59 2012
@@ -51,6 +51,7 @@ portal.jpaVendorAdapter.showSql=true
 portal.openjpa.Log=DefaultLevel=WARN, Runtime=WARN, Tool=WARN, SQL=WARN
 portal.openjpa.RuntimeUnenhancedClasses=unsupported
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST

Modified: rave/trunk/rave-portal/src/test/resources/portal.properties
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal/src/test/resources/portal.properties?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-portal/src/test/resources/portal.properties (original)
+++ rave/trunk/rave-portal/src/test/resources/portal.properties Mon Jun 18 21:11:59 2012
@@ -48,6 +48,7 @@ portal.jpaVendorAdapter.showSql=true
 portal.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
 portal.openjpa.RuntimeUnenhancedClasses=unsupported
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST

Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml Mon Jun 18 21:11:59 2012
@@ -24,6 +24,7 @@
   <persistence-unit name="raveShindigPersistenceUnit" transaction-type="RESOURCE_LOCAL">
       <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
       <class>org.apache.rave.portal.model.Person</class>
+      <class>org.apache.rave.portal.model.PageLayout</class>
       <class>org.apache.rave.portal.model.Group</class>
       <class>org.apache.rave.portal.model.PersonAssociation</class>
       <class>org.apache.rave.portal.model.PersonProperty</class>

Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave-shindig-test-applicationContext.xml
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave-shindig-test-applicationContext.xml?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave-shindig-test-applicationContext.xml (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave-shindig-test-applicationContext.xml Mon Jun 18 21:11:59 2012
@@ -71,6 +71,7 @@
                 <entry key="openjpa.Log" value="${rave-shindig.openjpa.Log}"/>
                 <entry key="openjpa.RuntimeUnenhancedClasses" value="${rave-shindig.openjpa.RuntimeUnenhancedClasses}"/>
                 <entry key="openjpa.jdbc.SynchronizeMappings" value="${rave-shindig.openjpa.jdbc.SynchronizeMappings}"/>
+                <entry key="openjpa.jdbc.MappingDefaults" value="${rave-shindig.openjpa.jdbc.MappingDefaults}"/>
             </map>
         </property>
     </bean>

Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties Mon Jun 18 21:11:59 2012
@@ -41,6 +41,7 @@ rave-shindig.jpaVendorAdapter.showSql=tr
 rave-shindig.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
 rave-shindig.openjpa.RuntimeUnenhancedClasses=supported
 rave-shindig.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+rave-shindig.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict
 
 #########################################################
 ## These are the properties that came from Shindig     ##

Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml Mon Jun 18 21:11:59 2012
@@ -72,6 +72,7 @@
                 <entry key="openjpa.Log" value="${rave-shindig.openjpa.Log}"/>
                 <entry key="openjpa.RuntimeUnenhancedClasses" value="${rave-shindig.openjpa.RuntimeUnenhancedClasses}"/>
                 <entry key="openjpa.jdbc.SynchronizeMappings" value="${rave-shindig.openjpa.jdbc.SynchronizeMappings}"/>
+                <entry key="openjpa.jdbc.MappingDefaults" value="${rave-shindig.openjpa.jdbc.MappingDefaults}"/>
             </map>
         </property>
     </bean>

Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties?rev=1351489&r1=1351488&r2=1351489&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties Mon Jun 18 21:11:59 2012
@@ -49,6 +49,7 @@ rave-shindig.jpaVendorAdapter.showSql=tr
 rave-shindig.openjpa.Log=DefaultLevel=WARN, Runtime=WARN, Tool=WARN, SQL=WARN
 rave-shindig.openjpa.RuntimeUnenhancedClasses=warn
 rave-shindig.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+rave-shindig.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict
 
 #################################################################################
 ## These properties are a copy/paste from the default shindig.properties file. ##