Author: mfranklin
Date: Mon Jun 25 20:38:15 2012
New Revision: 1353733
URL: http://svn.apache.org/viewvc?rev=1353733&view=rev
Log:
Fixed issues with PageUsers failing to constraint check (RAVE-625)
Modified:
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/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPage.java
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
Modified:
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1353733&r1=1353732&r2=1353733&view=diff
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
(original)
+++
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
Mon Jun 25 20:38:15 2012
@@ -523,8 +523,7 @@ public class DefaultPageService implemen
page.setRegions(regions);
// set this as a "user" page type
page.setPageType(PageType.USER);
- pageRepository.save(page);
- return page;
+ return pageRepository.save(page);
}
private void updatePageRenderSequences(List<PageUser> pages) {
Modified:
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java?rev=1353733&r1=1353732&r2=1353733&view=diff
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
(original)
+++
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
Mon Jun 25 20:38:15 2012
@@ -24,6 +24,8 @@ import org.apache.rave.portal.model.impl
import org.apache.rave.portal.repository.*;
import org.apache.rave.portal.service.PageService;
import org.apache.rave.portal.service.UserService;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
import org.hamcrest.CoreMatchers;
import org.junit.Before;
import org.junit.Test;
@@ -233,7 +235,12 @@ public class DefaultPageServiceTest {
expect(userService.getAuthenticatedUser()).andReturn(user);
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
- expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
+ expect(pageRepository.save(expectedPage)).andAnswer(new
IAnswer<Page>() {
+ @Override
+ public Page answer() throws Throwable {
+ return (Page)EasyMock.getCurrentArguments()[0];
+ }
+ });
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andThrow(new
NoResultException("No Result Exception"));
expect(pageRepository.getAllPages(user.getId(),
PageType.USER)).andReturn(new ArrayList<Page>());
@@ -262,7 +269,12 @@ public class DefaultPageServiceTest {
expect(userService.getAuthenticatedUser()).andReturn(user);
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
- expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
+ expect(pageRepository.save(expectedPage)).andAnswer(new
IAnswer<Page>() {
+ @Override
+ public Page answer() throws Throwable {
+ return (Page)EasyMock.getCurrentArguments()[0];
+ }
+ });
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andThrow(new
NonUniqueResultException("Non-Unique Result Exception"));
expect(pageRepository.getAllPages(user.getId(),
PageType.USER)).andReturn(new ArrayList<Page>());
@@ -333,7 +345,12 @@ public class DefaultPageServiceTest {
expect(userService.getAuthenticatedUser()).andReturn(user);
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
- expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
+ expect(pageRepository.save(expectedPage)).andAnswer(new
IAnswer<Page>() {
+ @Override
+ public Page answer() throws Throwable {
+ return (Page)EasyMock.getCurrentArguments()[0];
+ }
+ });
expect(pageRepository.getAllPages(user.getId(),
PageType.USER)).andReturn(existingPages);
replay(userService, pageLayoutRepository, pageRepository);
Modified:
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPage.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPage.java?rev=1353733&r1=1353732&r2=1353733&view=diff
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPage.java
(original)
+++
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPage.java
Mon Jun 25 20:38:15 2012
@@ -71,7 +71,7 @@ public class JpaPage implements BasicEnt
@JoinColumn(name = "owner_id")
private JpaUser owner;
- @OneToOne(cascade=CascadeType.ALL)
+ @ManyToOne(cascade=CascadeType.ALL, optional = true)
@JoinColumn(name="parent_page_id")
private JpaPage parentPage;
Modified:
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1353733&r1=1353732&r2=1353733&view=diff
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
(original)
+++
rave/branches/model_interfaces/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
Mon Jun 25 20:38:15 2012
@@ -62,6 +62,11 @@ public class JpaPageRepository implement
@Override
public void delete(Page item) {
+ //Must remove the page users from the page in order for OpenJpa to
persist change
+ removePageUsers(item);
+ for(Page p : item.getSubPages()) {
+ delete(p);
+ }
manager.remove(item instanceof JpaPage ? item : get(item.getId()));
}
@@ -75,10 +80,12 @@ public class JpaPageRepository implement
@Override
public int deletePages(Long userId, PageType pageType) {
- TypedQuery<JpaPage> query =
manager.createNamedQuery(JpaPage.DELETE_BY_USER_ID_AND_PAGE_TYPE,
JpaPage.class);
- query.setParameter("userId", userId);
- query.setParameter("pageType", pageType);
- return query.executeUpdate();
+ List<Page> pages = getAllPages(userId, pageType);
+ int pageCount = pages.size();
+ for(Page page : pages) {
+ delete(page);
+ }
+ return pageCount;
}
@Override
@@ -110,6 +117,14 @@ public class JpaPageRepository implement
return convert(pt, user);
}
+ private void removePageUsers(Page item) {
+ for(PageUser user : item.getMembers()) {
+ user.setPage(null);
+ user.setUser(null);
+ manager.remove(user);
+ }
+ }
+
/**
* convert: PageTemplate, User -> Page
* Converts the PageTemplate for Person Profiles into a Person Profile Page