Author: mfranklin
Date: Fri Mar 29 20:50:09 2013
New Revision: 1462637
URL: http://svn.apache.org/r1462637
Log:
Added basic render support for API RAVE-924
Added:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
- copied, changed from r1462082,
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageResource.java
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/OpenSocialRegionWidget.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialRegionWidgetRenderer.java
Removed:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageResource.java
Modified:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageList.java
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/OpenSocialService.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/SecurityTokenService.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/DefaultOpenSocialService.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
Copied:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
(from r1462082,
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageResource.java)
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java?p2=rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java&p1=rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageResource.java&r1=1462082&r2=1462637&rev=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageResource.java
(original)
+++
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
Fri Mar 29 20:50:09 2013
@@ -9,7 +9,8 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.File;
-public interface PageResource {
+@Path("/pages")
+public interface PagesResource {
/**
* Deletes the given page
@@ -17,7 +18,7 @@ public interface PageResource {
* @return
*/
@DELETE
- @Path("/pages/{id}")
+ @Path("/{id}")
Response deletePage(@PathParam("id") String id);
/**
@@ -26,7 +27,7 @@ public interface PageResource {
* @return
*/
@GET
- @Path("/pages/{id}")
+ @Path("/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response getPage(@PathParam("id") String id);
@@ -37,7 +38,7 @@ public interface PageResource {
* @return
*/
@PUT
- @Path("/pages/{id}")
+ @Path("/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response updatePage(@PathParam("id") String id, Page page);
@@ -48,7 +49,7 @@ public interface PageResource {
* @return
*/
@GET
- @Path("/pages/{id}")
+ @Path("/{id}")
@Produces({"application/vnd.omdl+xml"})
Response getPageOmdl(@PathParam("id") String id);
@@ -61,7 +62,7 @@ public interface PageResource {
* @return
*/
@GET
- @Path("/{context}/{identifier}/pages")
+ @Path("/{context}/{identifier}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response getPagesForRender(@PathParam("context") String context,
@PathParam("identifier") String identifier);
@@ -74,7 +75,7 @@ public interface PageResource {
* @return
*/
@GET
- @Path("/{context}/{identifier}/pages/{id}")
+ @Path("/{context}/{identifier}/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response getPageForRender(@PathParam("context") String context,
@PathParam("identifier") String identifier,
@@ -90,7 +91,7 @@ public interface PageResource {
* @return
*/
@POST
- @Path("/{context}/{identifier}/pages/{id}/clone")
+ @Path("/{context}/{identifier}/{id}/clone")
Response clonePage(@PathParam("context") String context,
@PathParam("identifier") String identifier,
@PathParam("id") String id);
@@ -103,7 +104,7 @@ public interface PageResource {
* @return
*/
@POST
- @Path("/{context}/{identifier}/pages")
+ @Path("/{context}/{identifier}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({"application/vnd.omdl+xml"})
Response importOmdlPage(@PathParam("context") String context,
@@ -118,7 +119,7 @@ public interface PageResource {
* @return
*/
@POST
- @Path("/{context}/{identifier}/pages")
+ @Path("/{context}/{identifier}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response createPage(@PathParam("context") String context,
@@ -131,7 +132,7 @@ public interface PageResource {
* @return
*/
@DELETE
- @Path("/{context}/{identifier}/pages/{id}")
+ @Path("/{context}/{identifier}/{id}")
Response deletePageInContext(@PathParam("id") String id);
/**
@@ -141,7 +142,7 @@ public interface PageResource {
* @return
*/
@PUT
- @Path("/{context}/{identifier}/pages/{id}")
+ @Path("/{context}/{identifier}/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response updatePageInContext(@PathParam("id") String id, Page page);
@@ -154,7 +155,7 @@ public interface PageResource {
*/
@PUT
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- @Path("/{context}/{identifier}/pages/{id}/move")
+ @Path("/{context}/{identifier}/{id}/move")
Response movePage(@PathParam("id") String id,
@QueryParam("moveAfterPageId") final String moveAfterPageId);
@@ -165,7 +166,7 @@ public interface PageResource {
* @return
*/
@POST
- @Path("/{context}/{identifier}/pages/{id}/regionWidgets")
+ @Path("/{context}/{identifier}/{id}/regionWidgets")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response addWidgetToPage(@PathParam("id") String id, RegionWidget widget);
@@ -177,7 +178,7 @@ public interface PageResource {
* @return
*/
@DELETE
- @Path("/{context}/{identifier}/pages/{id}/regionWidgets/{regionWidgetId}")
+ @Path("/{context}/{identifier}/{id}/regionWidgets/{regionWidgetId}")
Response removeWidgetFromPage(@PathParam("id") String id,
@PathParam("regionWidgetId") String regionWidgetId);
/**
@@ -188,7 +189,7 @@ public interface PageResource {
* @return
*/
@POST
-
@Path("/{context}/{identifier}/pages/{id}/regions/{regionId}/regionWidgets")
+ @Path("/{context}/{identifier}/{id}/regions/{regionId}/regionWidgets")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response addWidgetToRegion(@PathParam("id") String id,
@PathParam("regionId") String regionId, RegionWidget widget);
@@ -202,7 +203,7 @@ public interface PageResource {
* @return
*/
@PUT
-
@Path("/{context}/{identifier}/pages/{id}/regions/{toRegionId}/regionWidgets/{regionWidgetId}/move")
+
@Path("/{context}/{identifier}/{id}/regions/{toRegionId}/regionWidgets/{regionWidgetId}/move")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response moveWidgetOnPage(@PathParam("id") String id,
@@ -217,7 +218,7 @@ public interface PageResource {
* @return
*/
@PUT
-
@Path("/{context}/{identifier}/pages/{targetPageId}/regionWidgets/{regionWidgetId}/move")
+
@Path("/{context}/{identifier}/{targetPageId}/regionWidgets/{regionWidgetId}/move")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response moveWidgetToPage(@PathParam("targetPageId") String targetPageId,
@@ -228,20 +229,20 @@ public interface PageResource {
* @return
*/
@POST
- @Path("/{context}/{identifier}/pages/{id}/members")
+ @Path("/{context}/{identifier}/{id}/members")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Response addMemberToPage(@PathParam("id") String id);
@DELETE
- @Path("/{context}/{identifier}/pages/{id}/members/{userId}")
+ @Path("/{context}/{identifier}/{id}/members/{userId}")
Response removeMemberFromPage(@PathParam("id") String id,
@PathParam("userId") String userId);
@PUT
- @Path("/{context}/{identifier}/pages/{id}/members/{userId}/status")
+ @Path("/{context}/{identifier}/{id}/members/{userId}/status")
Response updateSharedPageStatus(@PathParam("id") String id,
@PathParam("userId") String userId, String status);
@PUT
- @Path("/{context}/{identifier}/pages/{id}/members/{userId}/editor")
+ @Path("/{context}/{identifier}/{id}/members/{userId}/editor")
Response updatePageEditingStatus(@PathParam("id") String id,
@PathParam("userId") String userId, boolean editor);
}
Modified:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageList.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageList.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageList.java
(original)
+++
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageList.java
Fri Mar 29 20:50:09 2013
@@ -15,6 +15,12 @@ public class PageList {
@XmlElement(name = "Page")
private List<Page> pages;
+ public PageList() { }
+
+ public PageList(List<Page> pages) {
+ this.pages = pages;
+ }
+
public List<Page> getPages() {
if(pages == null) pages = new ArrayList<Page>();
return pages;
Modified:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
(original)
+++
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
Fri Mar 29 20:50:09 2013
@@ -17,24 +17,26 @@ import java.util.Map;
public class RegionWidget {
@XmlAttribute(name="id")
- private String id;
+ protected String id;
@XmlAttribute(name="type")
- private String type;
+ protected String type;
@XmlElement(name = "widgetId")
- private String widgetId;
+ protected String widgetId;
@XmlElement(name = "widgetUrl")
- private String widgetUrl;
+ protected String widgetUrl;
@XmlElement(name = "regionId")
- private String regionId;
+ protected String regionId;
@XmlElement(name = "collapsed")
- private boolean collapsed;
+ protected boolean collapsed;
@XmlElement(name = "locked")
- private boolean locked;
+ protected boolean locked;
@XmlElement(name = "hideChrome")
- private boolean hideChrome;
+ protected boolean hideChrome;
+ @XmlElement(name = "ownerId")
+ protected String ownerId;
@XmlElement(name = "userPrefs")
@XmlJavaTypeAdapter(value = XmlMapAdapter.class)
- private Map<String, String> userPrefs;
+ protected Map<String, String> userPrefs;
public RegionWidget() { }
@@ -44,6 +46,7 @@ public class RegionWidget {
this.regionId = widget.getRegion().getId();
this.collapsed = widget.isCollapsed();
this.locked = widget.isLocked();
+ this.ownerId = widget.getRegion().getPage().getOwnerId();
this.hideChrome = widget.isHideChrome();
this.userPrefs = createPrefs(widget);
}
@@ -112,15 +115,23 @@ public class RegionWidget {
this.hideChrome = hideChrome;
}
- public Map getUserPrefs() {
+ public Map<String, String> getUserPrefs() {
return userPrefs;
}
- public void setUserPrefs(Map userPrefs) {
+ public void setUserPrefs(Map<String, String> userPrefs) {
this.userPrefs = userPrefs;
}
- private Map<String, String> createPrefs(org.apache.rave.model.RegionWidget
widget) {
+ public String getOwnerId() {
+ return ownerId;
+ }
+
+ public void setOwnerId(String ownerId) {
+ this.ownerId = ownerId;
+ }
+
+ protected Map<String, String>
createPrefs(org.apache.rave.model.RegionWidget widget) {
Map<String, String> created = null;
List<RegionWidgetPreference> preferences = widget.getPreferences();
if(preferences != null) {
Added:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java?rev=1462637&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
(added)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
Fri Mar 29 20:50:09 2013
@@ -0,0 +1,5 @@
+package org.apache.rave.portal.web.renderer;
+
+import org.apache.rave.rest.model.RegionWidget;
+
+public interface RegionWidgetRenderer extends Renderer<RegionWidget> { }
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
Fri Mar 29 20:50:09 2013
@@ -19,17 +19,27 @@
package org.apache.rave.portal.web.renderer.impl;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.apache.rave.exception.NotSupportedException;
+import org.apache.rave.model.Widget;
import org.apache.rave.portal.repository.WidgetRepository;
+import org.apache.rave.portal.web.renderer.RegionWidgetRenderer;
+import org.apache.rave.portal.web.renderer.RegionWidgetWrapperRenderer;
+import org.apache.rave.portal.web.renderer.RenderService;
+import org.apache.rave.portal.web.renderer.Renderer;
import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
-import org.apache.rave.portal.web.renderer.*;
import org.apache.rave.rest.model.Page;
+import org.apache.rave.rest.model.Region;
import org.apache.rave.rest.model.RegionWidget;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.*;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
/**
* Default implementation of {@link RenderService}
@@ -43,15 +53,24 @@ public class DefaultRenderService implem
public static final String WIDGET_CONTEXT_KEY = "widget";
private final Map<String, RegionWidgetWrapperRenderer> supportedWidgets;
+ private final Map<String, RegionWidgetRenderer> supportedApiWidgets;
+ private final WidgetRepository repository;
@Autowired
- public DefaultRenderService(List<RegionWidgetWrapperRenderer>
widgetRenderers, WidgetRepository widgetRepository) {
- this.supportedWidgets = new HashMap<String,
RegionWidgetWrapperRenderer>();
+ public DefaultRenderService(List<RegionWidgetWrapperRenderer>
widgetRenderers,
+ List<RegionWidgetRenderer> apiWidgetRenderers,
+ WidgetRepository widgetRepository) {
+
+ this.repository = widgetRepository;
+ this.supportedWidgets = Maps.newHashMap();
+ this.supportedApiWidgets = Maps.newHashMap();
mapRenderersByType(this.supportedWidgets, widgetRenderers);
+ mapRenderersByType(this.supportedApiWidgets, apiWidgetRenderers);
}
@Override
public Collection<String> getSupportedWidgetTypes() {
+ //TODO: change to API when refactor of rendering is complete
return supportedWidgets.keySet();
}
@@ -59,7 +78,7 @@ public class DefaultRenderService implem
* Renders the given rw iff there is a {@link
org.apache.rave.portal.web.renderer.RegionWidgetWrapperRenderer } for the
* rw type
*
- * @param rw RegionWidget to renderer
+ * @param rw RegionWidget to renderer
* @param context
* @return the String representation of the rendered RegionWidget
* @throws {@link org.apache.rave.exception.NotSupportedException}
@@ -67,7 +86,7 @@ public class DefaultRenderService implem
@Override
public String render(RegionWidgetWrapper rw, RenderContext context) {
RegionWidgetWrapperRenderer renderer =
supportedWidgets.get(rw.getWidget().getType());
- if(renderer == null) {
+ if (renderer == null) {
throw new NotSupportedException(rw.getWidget().getType() + " is
not supported");
}
return renderer.render(rw, context);
@@ -75,17 +94,47 @@ public class DefaultRenderService implem
@Override
public RegionWidget prepareForRender(RegionWidget source) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ if (source.getType() == null || source.getWidgetUrl() == null) {
+ updateRegionWidget(source);
+ }
+ RegionWidgetRenderer renderer =
supportedApiWidgets.get(source.getType());
+ if (renderer == null) {
+ throw new NotSupportedException(source.getType() + " is not
supported");
+ }
+ return renderer.prepareForRender(source);
}
@Override
public Page prepareForRender(Page source) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ for (Region region : source.getRegions()) {
+ List<RegionWidget> widgetList =
Lists.newArrayListWithCapacity(region.getRegionWidgets().size());
+ for (RegionWidget widget : region.getRegionWidgets()) {
+ widgetList.add(prepareForRender(widget));
+ }
+ region.setRegionWidgets(widgetList);
+ }
+ if(source.getSubPages() != null) {
+ for (Page sub : source.getSubPages()) {
+ prepareForRender(sub);
+ }
+ }
+ return source;
}
private static <T extends Renderer> void mapRenderersByType(Map<String, T>
map, List<T> renderers) {
- for(T renderer : renderers) {
- map.put(renderer.getSupportedContext(), renderer);
+ if (renderers != null) {
+ for (T renderer : renderers) {
+ map.put(renderer.getSupportedContext(), renderer);
+ }
+ }
+ }
+
+ private void updateRegionWidget(RegionWidget source) {
+ Widget widget = repository.get(source.getWidgetId());
+ if (widget == null) {
+ throw new IllegalArgumentException("Could not retrieve widget for
RegionWidget " + source.getId());
}
+ source.setType(widget.getType());
+ source.setWidgetUrl(widget.getUrl());
}
}
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
Fri Mar 29 20:50:09 2013
@@ -1,26 +1,30 @@
package org.apache.rave.rest.impl;
-import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import com.google.common.collect.Lists;
import org.apache.rave.portal.service.PageService;
+import org.apache.rave.portal.service.UserService;
import org.apache.rave.portal.web.renderer.RenderService;
-import org.apache.rave.rest.PageResource;
+import org.apache.rave.rest.PagesResource;
import org.apache.rave.rest.model.Page;
+import org.apache.rave.rest.model.PageList;
import org.apache.rave.rest.model.RegionWidget;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import java.io.File;
+import java.util.Arrays;
+import java.util.List;
-public class DefaultPageResource implements PageResource {
+public class DefaultPageResource implements PagesResource {
+ public static final String SELF = "@self";
private Logger logger = LoggerFactory.getLogger(getClass());
private PageService pageService;
private RenderService renderService;
+ private UserService userService;
@Override
public Response deletePage(String id) {
@@ -32,101 +36,118 @@ public class DefaultPageResource impleme
@Override
public Response getPage(String id) {
logger.debug("Retrieving page for export: " + id);
- return Response.ok(pageService.getPage(id)).build();
+ org.apache.rave.model.Page fromDb = pageService.getPage(id);
+ return fromDb == null ?
Response.status(Response.Status.NOT_FOUND).build() : Response.ok(new
Page(fromDb)).build();
}
@Override
public Response updatePage(String id, Page page) {
- return Response.ok(pageService.updatePage(id, page.getName(),
page.getPageLayoutCode())).build();
+ org.apache.rave.model.Page fromDb = pageService.updatePage(id,
page.getName(), page.getPageLayoutCode());
+ return Response.ok(new Page(fromDb)).build();
}
@Override
- public Response getPageOmdl(@PathParam("id") String id) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ public Response getPageOmdl(String id) {
+ return null;
}
@Override
- public Response getPagesForRender(@PathParam("context") String context,
@PathParam("identifier") String identifier) {
- return null;
+ public Response getPagesForRender(String context, String identifier) {
+ List<org.apache.rave.model.Page> pages;
+ if("portal".equals(context)) {
+ String userId = SELF.equals(identifier) ?
userService.getAuthenticatedUser().getId() : identifier;
+ pages = pageService.getAllUserPages(userId);
+ } else if("profile".equals(context)) {
+ pages =
Arrays.asList(pageService.getPersonProfilePage(identifier));
+ } else {
+ return Response.status(Response.Status.BAD_REQUEST).build();
+ }
+ List<Page> converted = Lists.newArrayList();
+ for(org.apache.rave.model.Page page : pages) {
+ Page convert = new Page(page);
+ converted.add(renderService.prepareForRender(convert));
+ }
+ return Response.ok(new PageList(converted)).build();
}
@Override
- public Response getPageForRender(@PathParam("context") String context,
@PathParam("identifier") String identifier, @PathParam("id") String id) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ public Response getPageForRender(String context, String identifier, String
id) {
+ org.apache.rave.model.Page page = pageService.getPage(id);
+ return Response.ok(renderService.prepareForRender(new
Page(page))).build();
}
@Override
- public Response clonePage(@PathParam("context") String context,
@PathParam("identifier") String identifier, @PathParam("id") String id) {
+ public Response clonePage(String context, String identifier, String id) {
return null;
}
@Override
- public Response importOmdlPage(@PathParam("context") String context,
@PathParam("identifier") String identifier, @Multipart(value = "root", type =
"application/octet-stream") File page) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ public Response importOmdlPage(String context, String identifier, File
page) {
+ return null;
}
@Override
- public Response createPage(@PathParam("context") String context,
@PathParam("identifier") String identifier, Page page) {
+ public Response createPage(String context, String identifier, Page page) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response deletePageInContext(@PathParam("id") String id) {
+ public Response deletePageInContext(String id) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response updatePageInContext(@PathParam("id") String id, Page page)
{
+ public Response updatePageInContext(String id, Page page) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response movePage(@PathParam("id") String id,
@QueryParam("moveAfterPageId") String moveAfterPageId) {
+ public Response movePage(String id, String moveAfterPageId) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response addWidgetToPage(@PathParam("id") String id, RegionWidget
widget) {
+ public Response addWidgetToPage(String id, RegionWidget widget) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response removeWidgetFromPage(@PathParam("id") String id,
@PathParam("regionWidgetId") String regionWidgetId) {
+ public Response removeWidgetFromPage(String id, String regionWidgetId) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response addWidgetToRegion(@PathParam("id") String id,
@PathParam("regionId") String regionId, RegionWidget widget) {
+ public Response addWidgetToRegion(String id, String regionId, RegionWidget
widget) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response moveWidgetOnPage(@PathParam("id") String id,
@PathParam("toRegionId") String toRegionId, @PathParam("regionWidgetId") String
regionWidgetId, @QueryParam("position") int position) {
+ public Response moveWidgetOnPage(String id, String toRegionId, String
regionWidgetId, int position) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response moveWidgetToPage(@PathParam("targetPageId") String
targetPageId, @PathParam("regionWidgetId") String regionWidgetId) {
+ public Response moveWidgetToPage(String targetPageId, String
regionWidgetId) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response addMemberToPage(@PathParam("id") String id) {
+ public Response addMemberToPage(String id) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response removeMemberFromPage(@PathParam("id") String id,
@PathParam("userId") String userId) {
+ public Response removeMemberFromPage(String id, String userId) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response updateSharedPageStatus(@PathParam("id") String id,
@PathParam("userId") String userId, String status) {
+ public Response updateSharedPageStatus(String id, String userId, String
status) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@Override
- public Response updatePageEditingStatus(@PathParam("id") String id,
@PathParam("userId") String userId, boolean editor) {
+ public Response updatePageEditingStatus(String id, String userId, boolean
editor) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
@@ -134,4 +155,14 @@ public class DefaultPageResource impleme
public void setPageService(PageService pageService) {
this.pageService = pageService;
}
+
+ @Inject
+ public void setRenderService(RenderService renderService) {
+ this.renderService = renderService;
+ }
+
+ @Inject
+ public void setUserService(UserService userService) {
+ this.userService = userService;
+ }
}
Modified:
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
(original)
+++
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
Fri Mar 29 20:50:09 2013
@@ -146,12 +146,12 @@ public class RenderServiceTest {
private void constructFooBarRenderService() {
widgetRenderers.add(widgetRenderer1);
widgetRenderers.add(widgetRenderer2);
- service = new DefaultRenderService(widgetRenderers, widgetRepository);
+ service = new DefaultRenderService(widgetRenderers, null,
widgetRepository);
}
private void constructFooRenderService() {
widgetRenderers.add(widgetRenderer1);
- service = new DefaultRenderService(widgetRenderers, widgetRepository);
+ service = new DefaultRenderService(widgetRenderers, null,
widgetRepository);
}
private void replayMocks() {
Modified:
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
(original)
+++
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
Fri Mar 29 20:50:09 2013
@@ -21,6 +21,7 @@
<jaxrs:serviceBeans>
<ref bean="peopleBean"/>
<ref bean="usersBean"/>
+ <ref bean="pagesBean" />
<ref bean="categoriesBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
@@ -37,4 +38,7 @@
<property name="categoryService" ref="defaultCategoryService"/>
<property name="userService" ref="userService"/>
</bean>
+
+ <bean id="pagesBean" class="org.apache.rave.rest.impl.DefaultPageResource"
autowire="byType" />
+
</beans>
\ No newline at end of file
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/OpenSocialService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/OpenSocialService.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/OpenSocialService.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/OpenSocialService.java
Fri Mar 29 20:50:09 2013
@@ -19,6 +19,8 @@
package org.apache.rave.provider.opensocial.service;
+import org.apache.rave.rest.model.RegionWidget;
+
public interface OpenSocialService {
/**
* Fetches gadget metadata for the specified gadget URL.
@@ -34,4 +36,11 @@ public interface OpenSocialService {
* @return a valid, encrypted securityToken
*/
String getEncryptedSecurityToken(String pageId, String widget);
+
+ /**
+ * Gets a security token for the given RegionWidget
+ * @param item the region widget to get a security token for
+ * @return a valid, encrypted securityToken
+ */
+ String getEncryptedSecurityToken(RegionWidget item);
}
\ No newline at end of file
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/SecurityTokenService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/SecurityTokenService.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/SecurityTokenService.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/SecurityTokenService.java
Fri Mar 29 20:50:09 2013
@@ -32,4 +32,6 @@ public interface SecurityTokenService {
SecurityToken decryptSecurityToken(String encryptedSecurityToken) throws
SecurityTokenException;
String refreshEncryptedSecurityToken(String encryptedSecurityToken) throws
SecurityTokenException;
+
+ String getEncryptedSecurityToken(String moduleId, String url, String
ownerId);
}
\ No newline at end of file
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/DefaultOpenSocialService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/DefaultOpenSocialService.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/DefaultOpenSocialService.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/DefaultOpenSocialService.java
Fri Mar 29 20:50:09 2013
@@ -63,9 +63,12 @@ public class DefaultOpenSocialService im
// Use a dummy RegionWidget to generate the security token
RegionWidget regionWidget = new
RegionWidgetImpl(String.valueOf(System.currentTimeMillis()),"-1",
new RegionImpl("-1", page, -1));
- String securityToken = "";
- securityToken = tokenService.getEncryptedSecurityToken(regionWidget,
widget);
- return securityToken;
+ return tokenService.getEncryptedSecurityToken(regionWidget, widget);
+ }
+
+ @Override
+ public String
getEncryptedSecurityToken(org.apache.rave.rest.model.RegionWidget item) {
+ return tokenService.getEncryptedSecurityToken(item.getId(),
item.getWidgetUrl(), item.getOwnerId());
}
private void validate(Widget widget) {
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java?rev=1462637&r1=1462636&r2=1462637&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
Fri Mar 29 20:50:09 2013
@@ -148,19 +148,28 @@ public class EncryptedBlobSecurityTokenS
return getEncryptedSecurityToken(regionWidget, new WidgetImpl("-1",
securityToken.getAppUrl()));
}
+ @Override
+ public String getEncryptedSecurityToken(String moduleId, String url,
String ownerId) {
+ String encryptedToken;
+
+ try {
+ BlobCrypterSecurityToken securityToken =
this.getBlobCrypterSecurityToken(url, moduleId, ownerId,
userService.getAuthenticatedUser());
+ encryptedToken = this.encryptSecurityToken(securityToken);
+ } catch (Exception e) {
+ throw new SecurityTokenException("Error creating security token
from regionWidget", e);
+ }
+
+ return encryptedToken;
+ }
+
private BlobCrypterSecurityToken getBlobCrypterSecurityToken(RegionWidget
regionWidget, Widget widget)
throws SecurityTokenException {
+ String moduleUrl = widget != null ? widget.getUrl() : "";
+ String moduleId = String.valueOf(regionWidget.getId());
+ String ownerId = regionWidget.getRegion().getPage().getOwnerId();
User user = userService.getAuthenticatedUser();
- Map<String, String> values = new HashMap<String, String>();
- values.put(AbstractSecurityToken.Keys.APP_URL.getKey(), widget != null
? widget.getUrl() : "");
- values.put(AbstractSecurityToken.Keys.MODULE_ID.getKey(),
String.valueOf(regionWidget.getId()));
- values.put(AbstractSecurityToken.Keys.OWNER.getKey(),
-
String.valueOf(userService.getUserById(regionWidget.getRegion().getPage().getOwnerId()).getUsername()));
- values.put(AbstractSecurityToken.Keys.VIEWER.getKey(),
String.valueOf(user.getUsername()));
- values.put(AbstractSecurityToken.Keys.TRUSTED_JSON.getKey(), "");
-
- BlobCrypterSecurityToken securityToken = new
BlobCrypterSecurityToken(container, domain, null, values);
+ BlobCrypterSecurityToken securityToken =
getBlobCrypterSecurityToken(moduleUrl, moduleId, ownerId, user);
if (logger.isTraceEnabled()) {
logger.trace("Token created for regionWidget " +
regionWidget.toString() + " and user " + user.toString());
@@ -169,6 +178,17 @@ public class EncryptedBlobSecurityTokenS
return securityToken;
}
+ private BlobCrypterSecurityToken getBlobCrypterSecurityToken(String
moduleUrl, String moduleId, String ownerId, User user) {
+ Map<String, String> values = new HashMap<String, String>();
+ values.put(AbstractSecurityToken.Keys.APP_URL.getKey(), moduleUrl);
+ values.put(AbstractSecurityToken.Keys.MODULE_ID.getKey(), moduleId);
+ values.put(AbstractSecurityToken.Keys.OWNER.getKey(),
String.valueOf(userService.getUserById(ownerId).getUsername()));
+ values.put(AbstractSecurityToken.Keys.VIEWER.getKey(),
String.valueOf(user.getUsername()));
+ values.put(AbstractSecurityToken.Keys.TRUSTED_JSON.getKey(), "");
+ values.put(AbstractSecurityToken.Keys.EXPIRES.getKey(),
String.valueOf(System.currentTimeMillis() + (24 * 60 * 60 * 1000)));
+ return new BlobCrypterSecurityToken(container, domain, null, values);
+ }
+
private String encryptSecurityToken(BlobCrypterSecurityToken
securityToken) throws SecurityTokenException {
String encryptedToken = null;
Added:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/OpenSocialRegionWidget.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/OpenSocialRegionWidget.java?rev=1462637&view=auto
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/OpenSocialRegionWidget.java
(added)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/model/OpenSocialRegionWidget.java
Fri Mar 29 20:50:09 2013
@@ -0,0 +1,45 @@
+package org.apache.rave.provider.opensocial.web.model;
+
+import org.apache.rave.rest.model.RegionWidget;
+
+public class OpenSocialRegionWidget extends RegionWidget {
+ protected String securityToken;
+ protected String metadata;
+
+ public OpenSocialRegionWidget() { }
+
+ public OpenSocialRegionWidget(RegionWidget base, String securityToken,
String metadata) {
+ this(base);
+ this.securityToken = securityToken;
+ this.metadata = metadata;
+ }
+
+ public OpenSocialRegionWidget(RegionWidget base) {
+ this.id = base.getId();
+ this.type = base.getType();
+ this.widgetId = base.getWidgetId();
+ this.widgetUrl = base.getWidgetUrl();
+ this.regionId = base.getRegionId();
+ this.collapsed = base.isCollapsed();
+ this.locked = base.isLocked();
+ this.hideChrome = base.isHideChrome();
+ this.ownerId = base.getOwnerId();
+ this.userPrefs = base.getUserPrefs();
+ }
+
+ public String getSecurityToken() {
+ return securityToken;
+ }
+
+ public void setSecurityToken(String securityToken) {
+ this.securityToken = securityToken;
+ }
+
+ public String getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(String metadata) {
+ this.metadata = metadata;
+ }
+}
Added:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialRegionWidgetRenderer.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialRegionWidgetRenderer.java?rev=1462637&view=auto
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialRegionWidgetRenderer.java
(added)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialRegionWidgetRenderer.java
Fri Mar 29 20:50:09 2013
@@ -0,0 +1,44 @@
+package org.apache.rave.provider.opensocial.web.renderer;
+
+import org.apache.rave.portal.web.renderer.RegionWidgetRenderer;
+import org.apache.rave.portal.web.renderer.model.RenderContext;
+import org.apache.rave.provider.opensocial.Constants;
+import org.apache.rave.provider.opensocial.service.OpenSocialService;
+import org.apache.rave.provider.opensocial.web.model.OpenSocialRegionWidget;
+import org.apache.rave.rest.model.RegionWidget;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OpenSocialRegionWidgetRenderer implements RegionWidgetRenderer {
+ private static Logger logger =
LoggerFactory.getLogger(OpenSocialRegionWidgetRenderer.class);
+
+ private final OpenSocialService openSocialService;
+
+ @Autowired
+ public OpenSocialRegionWidgetRenderer(OpenSocialService openSocialService)
{
+ this.openSocialService = openSocialService;
+ }
+
+ @Override
+ public String getSupportedContext() {
+ return Constants.WIDGET_TYPE;
+ }
+
+ @Override
+ public String render(RegionWidget item, RenderContext context) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public RegionWidget prepareForRender(RegionWidget item) {
+ logger.debug("Building OpenSocialRegionWidget for " + item.getId());
+ return new OpenSocialRegionWidget(
+ item,
+ openSocialService.getEncryptedSecurityToken(item),
+ openSocialService.getGadgetMetadata(item.getWidgetUrl())
+ );
+ }
+}