Updated page service to create instances of pages by page template id RAVE-1066
git-svn-id: https://svn.apache.org/repos/asf/rave/trunk@1531267 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/e3f7f4c6 Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/e3f7f4c6 Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/e3f7f4c6 Branch: refs/heads/angular Commit: e3f7f4c6034697b476db9e7ca8e6021fcf4395b4 Parents: b9a2f4e Author: Matthew B. Franklin <[email protected]> Authored: Fri Oct 11 12:17:00 2013 +0000 Committer: Matthew B. Franklin <[email protected]> Committed: Fri Oct 11 12:17:00 2013 +0000 ---------------------------------------------------------------------- .../org/apache/rave/rest/PagesResource.java | 2 +- .../apache/rave/rest/model/PageTemplate.java | 1 + .../apache/rave/portal/service/PageService.java | 12 +++++++++- .../portal/service/impl/DefaultPageService.java | 12 ++++++++++ .../rave/rest/impl/DefaultPageResource.java | 23 ++++++++++---------- 5 files changed, 37 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java index 259b22a..2fb255f 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java @@ -53,7 +53,7 @@ public interface PagesResource { @Path("/") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) - Page createPage(Page page); + Page createPage(@DefaultValue("") @QueryParam("templateId") String pageTemplateId, Page page); /** * Deletes the given page http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java index 72b1383..1f25688 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java @@ -39,6 +39,7 @@ public class PageTemplate implements RestEntity { this.description = source.getDescription(); this.pageType = source.getPageType(); this.pageLayoutCode = source.getPageLayout().getCode(); + this.defaultTemplate = source.isDefaultTemplate(); } public String getId() { http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java index ca05159..a073bc8 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java @@ -19,7 +19,6 @@ package org.apache.rave.portal.service; import org.apache.rave.model.Page; -import org.apache.rave.model.PageType; import org.apache.rave.model.Region; import org.apache.rave.model.RegionWidget; import org.apache.rave.rest.model.SearchResult; @@ -121,6 +120,17 @@ public interface PageService { /** * Creates a new user page with the supplied pageName and pageLayoutCode * + * + * @param pageName the name of the new page + * @param contextId the ID to set for the context of the page + * @param pageTemplateId the ID of the PageTemplate to create from @return the new Page object + */ + @PostAuthorize("hasPermission(returnObject, 'create')") + Page addNewPage(String pageName, String contextId, String pageTemplateId); + + /** + * Creates a new user page with the supplied pageName and pageLayoutCode + * * @param pageName the name of the new page * @param pageLayoutCode the page layout code * @return the new Page object http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java index a62b7ac..3585bb7 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java @@ -19,6 +19,7 @@ package org.apache.rave.portal.service.impl; +import org.apache.rave.portal.util.PageUtil; import org.apache.rave.rest.model.SearchResult; import org.apache.rave.repository.Repository; import org.apache.rave.model.*; @@ -137,6 +138,17 @@ public class DefaultPageService implements PageService { @Override @Transactional + public Page addNewPage(String pageName, String contextId, String pageTemplateId) { + PageTemplate template = pageTemplateRepository.get(pageTemplateId); + if(template == null) { + throw new IllegalArgumentException("No page template found for the specified id " + pageTemplateId); + } + Page newInstance = PageUtil.convert(template, userService.getAuthenticatedUser(), false); + return pageRepository.save(newInstance); + } + + @Override + @Transactional public Page addNewUserPage(String pageName, String pageLayoutCode) { return addNewUserPage(userService.getAuthenticatedUser(), pageName, pageLayoutCode); } http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java index c9554fe..1c4ad9e 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java @@ -20,9 +20,9 @@ package org.apache.rave.rest.impl; +import org.apache.commons.lang3.StringUtils; import org.apache.rave.rest.PageUsersResource; import org.apache.rave.rest.exception.ResourceNotFoundException; -import org.apache.rave.model.PageType; import org.apache.rave.portal.service.PageService; import org.apache.rave.rest.PagesResource; import org.apache.rave.rest.RegionsResource; @@ -32,7 +32,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; @@ -73,23 +72,25 @@ public class DefaultPageResource implements PagesResource { @Override - public Page createPage(Page page) { + public Page createPage(String pageTemplateId, Page page) { + if (page.getName() == null) { + throw new BadRequestException("Page name property must be defined."); + } + org.apache.rave.model.Page fromDb; + if(StringUtils.isNotBlank(pageTemplateId)) { + fromDb = pageService.addNewPage(page.getName(), null, pageTemplateId); //TODO: RAVE-977 - when Page type enum is deprecated escape from this logic - if (page.getPageType().equals("user")) { - if (page.getName() == null) { - throw new BadRequestException("Page name property must be defined."); - } + } else if (page.getPageType().equals("user")) { if (page.getPageLayoutCode() == null) { throw new BadRequestException("Page pageLayoutCode property must be defined."); } - org.apache.rave.model.Page fromDb = pageService.addNewUserPage(page.getName(), page.getPageLayoutCode()); - Page responsePage = new Page(fromDb); - - return responsePage; + fromDb = pageService.addNewUserPage(page.getName(), page.getPageLayoutCode()); } else { //TODO: RAVE-977 this will change throw new BadRequestException("Page pageType property must equal 'user'."); } + + return new Page(fromDb); } @Override
