Author: mfranklin
Date: Wed Oct 31 21:17:31 2012
New Revision: 1404356
URL: http://svn.apache.org/viewvc?rev=1404356&view=rev
Log:
Refactored RegionWidgetRenderer to take a RegionWidgetWrapper that includes the
Widget instance
Added:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/model/RegionWidgetWrapper.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ModelContextTag.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/WidgetTag.java
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RenderService.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/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
rave/trunk/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
rave/trunk/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java
Modified:
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=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RegionWidgetRenderer.java
Wed Oct 31 21:17:31 2012
@@ -19,9 +19,9 @@
package org.apache.rave.portal.web.renderer;
-import org.apache.rave.portal.model.RegionWidget;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
/**
* Scoped renderer that provides additional RegionWidget related rendering
operations
*/
-public interface RegionWidgetRenderer extends Renderer<RegionWidget> {}
+public interface RegionWidgetRenderer extends Renderer<RegionWidgetWrapper> {}
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RenderService.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RenderService.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RenderService.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/RenderService.java
Wed Oct 31 21:17:31 2012
@@ -19,7 +19,7 @@
package org.apache.rave.portal.web.renderer;
-import org.apache.rave.portal.model.RegionWidget;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import java.util.Collection;
@@ -35,13 +35,12 @@ public interface RenderService {
Collection<String> getSupportedWidgetTypes();
/**
- * Renders the {@link org.apache.rave.portal.model.RegionWidget} as a
String
+ * Renders the {@link org.apache.rave.portal.model.RegionWidget} as a
String\
*
- *
- * @param widget widget to renderer
+ * @param regionWidgetWrapper widget to renderer
* @param context the cotnext under which to render the widget
* @return a String representing the rendered widget
*/
- String render(RegionWidget widget, RenderContext context);
+ String render(RegionWidgetWrapper regionWidgetWrapper, RenderContext
context);
}
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=1404356&r1=1404355&r2=1404356&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
Wed Oct 31 21:17:31 2012
@@ -20,9 +20,8 @@
package org.apache.rave.portal.web.renderer.impl;
import org.apache.rave.exception.NotSupportedException;
-import org.apache.rave.portal.model.RegionWidget;
-import org.apache.rave.portal.model.Widget;
import org.apache.rave.portal.repository.WidgetRepository;
+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.springframework.beans.factory.annotation.Autowired;
@@ -39,15 +38,14 @@ import java.util.*;
@Service
public class DefaultRenderService implements RenderService {
- private final Map<String, RegionWidgetRenderer> supportedWidgets;
+ public static final String WIDGET_CONTEXT_KEY = "widget";
- private final WidgetRepository widgetRepository;
+ private final Map<String, RegionWidgetRenderer> supportedWidgets;
@Autowired
public DefaultRenderService(List<RegionWidgetRenderer> widgetRenderers,
WidgetRepository widgetRepository) {
this.supportedWidgets = new HashMap<String, RegionWidgetRenderer>();
mapRenderersByType(this.supportedWidgets, widgetRenderers);
- this.widgetRepository = widgetRepository;
}
@Override
@@ -65,11 +63,10 @@ public class DefaultRenderService implem
* @throws {@link org.apache.rave.exception.NotSupportedException}
*/
@Override
- public String render(RegionWidget rw, RenderContext context) {
- Widget widget = widgetRepository.get(rw.getWidgetId());
- RegionWidgetRenderer renderer = supportedWidgets.get(widget.getType());
+ public String render(RegionWidgetWrapper rw, RenderContext context) {
+ RegionWidgetRenderer renderer =
supportedWidgets.get(rw.getWidget().getType());
if(renderer == null) {
- throw new NotSupportedException(widget.getType() + " is not
supported");
+ throw new NotSupportedException(rw.getWidget().getType() + " is
not supported");
}
return renderer.render(rw, context);
}
Added:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/model/RegionWidgetWrapper.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/model/RegionWidgetWrapper.java?rev=1404356&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/model/RegionWidgetWrapper.java
(added)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/model/RegionWidgetWrapper.java
Wed Oct 31 21:17:31 2012
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.web.renderer.model;
+
+
+import org.apache.rave.portal.model.RegionWidget;
+import org.apache.rave.portal.model.Widget;
+
+public class RegionWidgetWrapper {
+ private Widget widget;
+ private RegionWidget regionWidget;
+
+ public RegionWidgetWrapper() { }
+
+ public RegionWidgetWrapper(Widget widget, RegionWidget regionWidget) {
+ this.widget = widget;
+ this.regionWidget = regionWidget;
+ }
+
+ public Widget getWidget() {
+ return widget;
+ }
+
+ public void setWidget(Widget widget) {
+ this.widget = widget;
+ }
+
+ public RegionWidget getRegionWidget() {
+ return regionWidget;
+ }
+
+ public void setRegionWidget(RegionWidget regionWidget) {
+ this.regionWidget = regionWidget;
+ }
+}
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=1404356&r1=1404355&r2=1404356&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
Wed Oct 31 21:17:31 2012
@@ -25,6 +25,7 @@ import org.apache.rave.portal.model.impl
import org.apache.rave.portal.model.impl.WidgetImpl;
import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.web.renderer.impl.DefaultRenderService;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.junit.Before;
import org.junit.Test;
@@ -94,12 +95,14 @@ public class RenderServiceTest {
RegionWidget rw = new RegionWidgetImpl();
rw.setWidgetId(w.getId());
- expect(widgetRenderer1.render(rw, context)).andReturn(RENDERED_TYPE_1);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
+ expect(widgetRenderer1.render(wrapper,
context)).andReturn(RENDERED_TYPE_1);
expect(widgetRepository.get("1")).andReturn(w);
replayMocks();
constructFooBarRenderService();
- assertThat(service.render(rw, context), is(equalTo(RENDERED_TYPE_1)));
+ assertThat(service.render(wrapper, context),
is(equalTo(RENDERED_TYPE_1)));
}
@Test
@@ -110,12 +113,14 @@ public class RenderServiceTest {
RegionWidget rw = new RegionWidgetImpl();
rw.setWidgetId(w.getId());
- expect(widgetRenderer2.render(rw, context)).andReturn(RENDERED_TYPE_2);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
+ expect(widgetRenderer2.render(wrapper,
context)).andReturn(RENDERED_TYPE_2);
expect(widgetRepository.get("1")).andReturn(w);
replayMocks();
constructFooBarRenderService();
- assertThat(service.render(rw, context), is(equalTo(RENDERED_TYPE_2)));
+ assertThat(service.render(wrapper, context),
is(equalTo(RENDERED_TYPE_2)));
}
@Test(expected = NotSupportedException.class)
@@ -127,12 +132,14 @@ public class RenderServiceTest {
RegionWidget rw = new RegionWidgetImpl();
rw.setWidgetId(w.getId());
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
expect(widgetRepository.get("1")).andReturn(w);
replayMocks();
constructFooBarRenderService();
- service.render(rw, context);
+ service.render(wrapper, context);
}
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
(original)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
Wed Oct 31 21:17:31 2012
@@ -22,7 +22,6 @@ import org.apache.rave.portal.model.*;
import org.apache.rave.portal.service.PageLayoutService;
import org.apache.rave.portal.service.PageService;
import org.apache.rave.portal.service.UserService;
-import org.apache.rave.portal.service.WidgetService;
import org.apache.rave.portal.web.controller.util.ControllerUtils;
import org.apache.rave.portal.web.util.ModelKeys;
import org.apache.rave.portal.web.util.ViewNames;
@@ -50,16 +49,13 @@ public class PageController {
private PageService pageService;
private UserService userService;
- private WidgetService widgetService;
private PageLayoutService pageLayoutService;
@Autowired
- public PageController(PageService pageService, UserService userService,
PageLayoutService pageLayoutService,
- WidgetService widgetService) {
+ public PageController(PageService pageService, UserService userService,
PageLayoutService pageLayoutService) {
this.pageService = pageService;
this.userService = userService;
this.pageLayoutService = pageLayoutService;
- this.widgetService = widgetService;
}
@RequestMapping(value = {"/login"}, method = RequestMethod.GET)
@@ -79,16 +75,8 @@ public class PageController {
currentPageUser = pageUser;
}
}
- List<Widget> widgets = new ArrayList<Widget>();
- if (page.getRegions() != null) {
- for(Region region : page.getRegions()) {
- for (RegionWidget regionWidget : region.getRegionWidgets()) {
-
widgets.add(widgetService.getWidget(regionWidget.getWidgetId()));
- }
- }
- }
List<PageLayout> pageLayouts =
pageLayoutService.getAllUserSelectable();
- addAttributesToModel(model, page, currentPageUser, pages, pageLayouts,
widgets);
+ addAttributesToModel(model, page, currentPageUser, pages, pageLayouts);
String view = ControllerUtils.getDeviceAppropriateView(request,
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
ControllerUtils.addNavItemsToModel(view, model, page.getId(),
userService.getAuthenticatedUser(), currentPageUser.isEditor());
return view;
@@ -106,16 +94,8 @@ public class PageController {
currentPageUser = pageUser;
}
}
- List<Widget> widgets = new ArrayList<Widget>();
- if (page.getRegions() != null) {
- for(Region region : page.getRegions()) {
- for (RegionWidget regionWidget :
region.getRegionWidgets()) {
-
widgets.add(widgetService.getWidget(regionWidget.getWidgetId()));
- }
- }
- }
List<PageLayout> pageLayouts =
pageLayoutService.getAllUserSelectable();
- addAttributesToModel(model, page, currentPageUser, pages,
pageLayouts, widgets);
+ addAttributesToModel(model, page, currentPageUser, pages,
pageLayouts);
String view = ControllerUtils.getDeviceAppropriateView(request,
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
ControllerUtils.addNavItemsToModel(view, model, page.getId(),
thisUser, currentPageUser.isEditor());
return view;
@@ -149,11 +129,10 @@ public class PageController {
return viewablePages;
}
- private void addAttributesToModel(Model model, Page page, PageUser
pageUser, List<Page> pages, List<PageLayout> pageLayouts, List<Widget> widgets)
{
+ private void addAttributesToModel(Model model, Page page, PageUser
pageUser, List<Page> pages, List<PageLayout> pageLayouts) {
model.addAttribute(ModelKeys.PAGE, page);
model.addAttribute(ModelKeys.PAGES, pages);
model.addAttribute(ModelKeys.PAGE_LAYOUTS, pageLayouts);
model.addAttribute(ModelKeys.PAGE_USER, pageUser);
- model.addAttribute(ModelKeys.WIDGETS, widgets);
}
}
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
(original)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
Wed Oct 31 21:17:31 2012
@@ -19,10 +19,11 @@
package org.apache.rave.portal.web.controller;
-import org.apache.rave.portal.model.*;
+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.service.PageService;
import org.apache.rave.portal.service.UserService;
-import org.apache.rave.portal.service.WidgetService;
import org.apache.rave.portal.web.controller.util.ControllerUtils;
import org.apache.rave.portal.web.model.NavigationItem;
import org.apache.rave.portal.web.model.NavigationMenu;
@@ -32,13 +33,11 @@ import org.apache.rave.portal.web.util.V
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
-import java.util.ArrayList;
import java.util.List;
@Controller
@@ -49,13 +48,11 @@ public class ProfileController {
private final UserService userService;
private final PageService pageService;
- private final WidgetService widgetService;
@Autowired
- public ProfileController(UserService userService, PageService
pageService, WidgetService widgetService) {
+ public ProfileController(UserService userService, PageService
pageService) {
this.userService = userService;
this.pageService = pageService;
- this.widgetService = widgetService;
}
/**
@@ -107,16 +104,6 @@ public class ProfileController {
Page personProfilePage =
pageService.getPersonProfilePage(user.getId());
addAttributesToModel(model, user, referringPageId);
- List<Widget> widgets = new ArrayList<Widget>();
- if (personProfilePage.getRegions() != null) {
- for(Region region : personProfilePage.getRegions()) {
- for (RegionWidget regionWidget : region.getRegionWidgets()) {
-
widgets.add(widgetService.getWidget(regionWidget.getWidgetId()));
- }
- }
- }
- model.addAttribute(ModelKeys.WIDGETS, widgets);
-
model.addAttribute(ModelKeys.PAGE, personProfilePage);
String view =
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
List<Person> friendRequests =
userService.getFriendRequestsReceived(user.getUsername());
Added:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ModelContextTag.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ModelContextTag.java?rev=1404356&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ModelContextTag.java
(added)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ModelContextTag.java
Wed Oct 31 21:17:31 2012
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.web.tag;
+
+import org.apache.rave.persistence.Repository;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.PageContext;
+
+/**
+ * Adds the model of the specified type ot the page context
+ */
+public class ModelContextTag<T, E extends Repository<T>> extends
AbstractContextAwareSingletonBeanDependentTag<E> {
+
+ protected ModelContextTag(Class<E> clazz) {
+ super(clazz);
+ this.init();
+ }
+
+ protected String var;
+ protected String id;
+ protected int scope;
+ protected boolean scopeSpecified;
+
+ @Override
+ public int doStartTag() throws JspException {
+ return super.doStartTag();
+ }
+
+ @Override
+ public int doEndTag() throws JspException {
+ this.updateContext(this.getBean().get(id));
+ this.init();
+ return EVAL_PAGE;
+ }
+
+ public String getVar() {
+ return var;
+ }
+
+ public void setVar(String var) {
+ this.var = var;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public int getScope() {
+ return scope;
+ }
+
+ public void setScope(int scope) {
+ this.scope = scope;
+ scopeSpecified = true;
+ }
+
+ protected void init() {
+ this.var = null;
+ this.id = null;
+ this.scope = PageContext.PAGE_SCOPE;
+ }
+
+ protected void updateContext(T result) throws JspException {
+ if (var != null) {
+ /*
+ * Store the result, letting an IllegalArgumentException
+ * propagate back if the scope is invalid (e.g., if an attempt
+ * is made to store something in the session without any
+ * HttpSession existing).
+ */
+ if (result != null) {
+ pageContext.setAttribute(var, result, scope);
+ } else {
+ if (scopeSpecified) {
+ pageContext.removeAttribute(var, scope);
+ } else {
+ pageContext.removeAttribute(var);
+ }
+ }
+ } else {
+ handleNoVar(result);
+ }
+ }
+
+ protected void handleNoVar(T result) throws JspException {
+ writeString(result.toString());
+ }
+}
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
(original)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
Wed Oct 31 21:17:31 2012
@@ -4,86 +4,18 @@ import org.apache.rave.portal.model.Pers
import org.apache.rave.portal.repository.PersonRepository;
import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
/**
* Adds the requested person to the requested scope for access via JSPs
*/
-public class PersonTag extends
AbstractContextAwareSingletonBeanDependentTag<PersonRepository> {
-
- private String var;
-
- private String id;
- private int scope;
- private boolean scopeSpecified;
+public class PersonTag extends ModelContextTag<Person, PersonRepository> {
public PersonTag() {
super(PersonRepository.class);
- this.init();
- }
-
- @Override
- public int doStartTag() throws JspException {
- return super.doStartTag();
}
@Override
- public int doEndTag() throws JspException {
- this.updateContext(this.getBean().get(id));
- this.init();
- return EVAL_PAGE;
- }
-
- public String getVar() {
- return var;
- }
-
- public void setVar(String var) {
- this.var = var;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public int getScope() {
- return scope;
- }
-
- public void setScope(int scope) {
- this.scope = scope;
- scopeSpecified = true;
- }
-
- private void init() {
- this.var = null;
- this.id = null;
- this.scope = PageContext.PAGE_SCOPE;
- }
-
- private void updateContext(Person result) throws JspException {
- if (var != null) {
- /*
- * Store the result, letting an IllegalArgumentException
- * propagate back if the scope is invalid (e.g., if an attempt
- * is made to store something in the session without any
- * HttpSession existing).
- */
- if (result != null) {
- pageContext.setAttribute(var, result, scope);
- } else {
- if (scopeSpecified) {
- pageContext.removeAttribute(var, scope);
- } else {
- pageContext.removeAttribute(var);
- }
- }
- } else {
- writeString(result.getUsername());
- }
+ protected void handleNoVar(Person result) throws JspException {
+ writeString(result.getUsername());
}
}
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
(original)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
Wed Oct 31 21:17:31 2012
@@ -22,11 +22,11 @@ package org.apache.rave.portal.web.tag;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.rave.portal.model.RegionWidget;
import org.apache.rave.portal.model.Widget;
-import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.web.renderer.RenderScope;
import org.apache.rave.portal.web.renderer.RenderService;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.jsp.JspException;
@@ -94,7 +94,7 @@ public class RegionWidgetTag extends Abs
String key = REGISTER_DISABLED_WIDGET_KEY + "-" +
widget.getId();
scriptManager.registerScriptBlock(key, widgetScript,
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, getContext());
} else {
- writeString(getBean().render(regionWidget, getContext()));
+ writeString(getBean().render(new RegionWidgetWrapper(widget,
regionWidget), getContext()));
}
}
else {
@@ -103,6 +103,7 @@ public class RegionWidgetTag extends Abs
//Certain JSP implementations use tag pools. Setting the regionWidget
to null ensures that there is no chance a given tag
//will accidentally re-use a region widget if the attribute in the JSP
is empty
regionWidget = null;
+ widget = null;
return EVAL_BODY_INCLUDE;
}
}
Added:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/WidgetTag.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/WidgetTag.java?rev=1404356&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/WidgetTag.java
(added)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/WidgetTag.java
Wed Oct 31 21:17:31 2012
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.web.tag;
+
+import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.repository.WidgetRepository;
+
+/**
+ * Adds the requested person to the requested scope for access via JSPs
+ */
+public class WidgetTag extends ModelContextTag<Widget, WidgetRepository> {
+ public WidgetTag() {
+ super(WidgetRepository.class);
+ }
+
+
+}
Modified:
rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
(original)
+++ rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
Wed Oct 31 21:17:31 2012
@@ -50,6 +50,30 @@
</attribute>
</tag>
<tag>
+ <description>Allows access to a org.apache.rave.model.Widget object
via the configured variable</description>
+ <name>widget</name>
+ <tag-class>org.apache.rave.portal.web.tag.PersonTag</tag-class>
+ <body-content>JSP</body-content>
+ <attribute>
+ <description>The ID of the widget to load</description>
+ <name>id</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ <attribute>
+ <description>The variable to assign the resulting widget
to</description>
+ <name>var</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ <attribute>
+ <description>The scope under which the assignment is
valid</description>
+ <name>scope</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ </tag>
+ <tag>
<description>Renders a given RegionWidget in the page</description>
<name>render-widget</name>
<tag-class>org.apache.rave.portal.web.tag.RegionWidgetTag</tag-class>
Modified:
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
(original)
+++
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
Wed Oct 31 21:17:31 2012
@@ -74,8 +74,7 @@ public class PageControllerTest {
userService = createMock(UserService.class);
pageService = createMock(PageService.class);
pageLayoutService = createMock(PageLayoutService.class);
- widgetService = createMock(WidgetService.class);
- pageController = new PageController(pageService, userService,
pageLayoutService, widgetService);
+ pageController = new PageController(pageService, userService,
pageLayoutService);
model = new ExtendedModelMap();
request = new MockHttpServletRequest();
Modified:
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
(original)
+++
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
Wed Oct 31 21:17:31 2012
@@ -19,17 +19,6 @@
package org.apache.rave.portal.web.controller;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.rave.portal.model.Page;
import org.apache.rave.portal.model.PageLayout;
import org.apache.rave.portal.model.Person;
@@ -49,6 +38,14 @@ import org.junit.Test;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.ui.ModelMap;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
/**
* Test class for {@link ProfileController}
*/
@@ -74,8 +71,7 @@ public class ProfileControllerTest {
public void setup() {
userService = createMock(UserService.class);
pageService = createMock(PageService.class);
- widgetService = createMock(WidgetService.class);
- profileController = new ProfileController(userService,
pageService, widgetService);
+ profileController = new ProfileController(userService,
pageService);
validPageLayout = new PageLayoutImpl();
validPageLayout.setCode(VALID_PAGE_LAYOUT_CODE);
Modified:
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
(original)
+++
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
Wed Oct 31 21:17:31 2012
@@ -24,11 +24,11 @@ import org.apache.rave.portal.model.Regi
import org.apache.rave.portal.model.impl.RegionImpl;
import org.apache.rave.portal.model.impl.RegionWidgetImpl;
import org.apache.rave.portal.model.impl.WidgetImpl;
-import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.web.renderer.RenderScope;
import org.apache.rave.portal.web.renderer.RenderService;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.junit.Before;
import org.junit.Test;
@@ -92,8 +92,10 @@ public class RegionWidgetTagTest {
Set<String> strings = new HashSet<String>();
strings.add(WIDGET_TYPE);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(widget,
regionWidget);
+
expect(service.getSupportedWidgetTypes()).andReturn(strings);
- expect(service.render(regionWidget, context)).andReturn(RENDERED);
+ expect(service.render(wrapper, context)).andReturn(RENDERED);
replay(service);
JspWriter writer = createNiceMock(JspWriter.class);
Modified:
rave/trunk/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
(original)
+++
rave/trunk/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
Wed Oct 31 21:17:31 2012
@@ -28,6 +28,7 @@ import org.apache.rave.portal.model.impl
import org.apache.rave.portal.web.renderer.RenderService;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import
org.apache.rave.provider.opensocial.repository.impl.ShindigGadgetMetadataRepository;
import org.easymock.EasyMock;
@@ -119,9 +120,11 @@ public class RenderServiceIntegrationTes
RegionWidget rw = new RegionWidgetImpl("1", w.getId(), region);
region.setRegionWidgets(Arrays.asList(rw));
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
RenderContext context = new RenderContext();
context.setProperties(new HashMap());
- String rendered = service.render(rw, context);
+ String rendered = service.render(wrapper, context);
assertThat(rendered, is(notNullValue()));
assertThat(rendered.contains("<!--"), is(true));
assertThat(scriptManager.getScriptBlocks(ScriptLocation.AFTER_RAVE,
context).size(), is(equalTo(1)));
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.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/OpenSocialWidgetRenderer.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
Wed Oct 31 21:17:31 2012
@@ -21,12 +21,11 @@ package org.apache.rave.provider.opensoc
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.*;
-import org.apache.rave.portal.repository.WidgetRepository;
-import org.apache.rave.portal.service.WidgetService;
import org.apache.rave.portal.web.renderer.RegionWidgetRenderer;
import org.apache.rave.portal.web.renderer.RenderScope;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.apache.rave.provider.opensocial.Constants;
import org.apache.rave.provider.opensocial.service.OpenSocialService;
@@ -52,17 +51,14 @@ public class OpenSocialWidgetRenderer im
private OpenSocialService openSocialService;
private SecurityTokenService securityTokenService;
private ScriptManager scriptManager;
- private WidgetService widgetService;
@Autowired
public OpenSocialWidgetRenderer(OpenSocialService openSocialService,
SecurityTokenService securityTokenService,
- ScriptManager scriptManager,
- WidgetService widgetService) {
+ ScriptManager scriptManager) {
this.openSocialService = openSocialService;
this.securityTokenService = securityTokenService;
this.scriptManager = scriptManager;
- this.widgetService = widgetService;
}
//Note the widgets.push() call. This defines the widget objects, which are
@@ -96,20 +92,21 @@ public class OpenSocialWidgetRenderer im
* @return valid HTML markup
*/
@Override
- public String render(RegionWidget item, RenderContext context) {
- Widget widget = widgetService.getWidget(item.getWidgetId());
+ public String render(RegionWidgetWrapper item, RenderContext context) {
+ Widget widget = item.getWidget();
String type = widget.getType();
if (!Constants.WIDGET_TYPE.equals(type)) {
throw new NotSupportedException("Invalid widget type passed to
renderer: " + type);
}
- String widgetScript = getWidgetScript(item, widget);
+ RegionWidget regionWidget = item.getRegionWidget();
+ String widgetScript = getWidgetScript(regionWidget, widget);
// the key is based off the RegionWidget.id to ensure uniqueness
- String key = REGISTER_WIDGET_KEY + (item.getId() == null ? "" : "-"
+ item.getId());
+ String key = REGISTER_WIDGET_KEY + (regionWidget.getId() == null ? ""
: "-" + regionWidget.getId());
scriptManager.registerScriptBlock(key, widgetScript,
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
logger.debug("Gadget Script Data from OpenSocialWidgetRenderer: " +
widgetScript);
- return String.format(MARKUP, item.getId());
+ return String.format(MARKUP, regionWidget.getId());
}
private String getWidgetScript(RegionWidget item, Widget widget) {
Modified:
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
(original)
+++
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
Wed Oct 31 21:17:31 2012
@@ -22,12 +22,12 @@ package org.apache.rave.provider.opensoc
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.*;
import org.apache.rave.portal.model.impl.*;
-import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.service.WidgetService;
import org.apache.rave.portal.web.renderer.RenderScope;
import org.apache.rave.portal.web.renderer.Renderer;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.apache.rave.provider.opensocial.Constants;
import org.apache.rave.provider.opensocial.service.OpenSocialService;
@@ -48,7 +48,7 @@ public class OpenSocialWidgetRendererTes
private OpenSocialService openSocialService;
private SecurityTokenService securityTokenService;
private ScriptManager scriptManager;
- private Renderer<RegionWidget> renderer;
+ private Renderer<RegionWidgetWrapper> renderer;
private WidgetService widgetService;
private static final String VALID_GADGET_URL =
"http://www.example.com/gadget.xml";
@@ -66,7 +66,7 @@ public class OpenSocialWidgetRendererTes
scriptManager = createStrictMock(ScriptManager.class);
openSocialService = createNiceMock(OpenSocialService.class);
securityTokenService = createNiceMock(SecurityTokenService.class);
- renderer = new OpenSocialWidgetRenderer(openSocialService,
securityTokenService, scriptManager, widgetService);
+ renderer = new OpenSocialWidgetRenderer(openSocialService,
securityTokenService, scriptManager);
}
@Test
@@ -139,7 +139,9 @@ public class OpenSocialWidgetRendererTes
//expectLastCall();
//replay(scriptManager);
- String result = renderer.render(rw, renderContext);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
+ String result = renderer.render(wrapper, renderContext);
assertThat(result, is(equalTo("<!-- RegionWidget " + REGION_WIDGET_ID
+ " placeholder -->")));
//verify(scriptManager);
@@ -184,7 +186,10 @@ public class OpenSocialWidgetRendererTes
scriptManager.registerScriptBlock(OpenSocialWidgetRenderer.REGISTER_WIDGET_KEY,
markup, ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, null);
expectLastCall();
replay(scriptManager);
- String result = renderer.render(rw, null);
+
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
+ String result = renderer.render(wrapper, null);
verify(scriptManager);
}
@@ -200,6 +205,8 @@ public class OpenSocialWidgetRendererTes
RegionWidget rw = new RegionWidgetImpl("1");
rw.setWidgetId(w.getId());
- renderer.render(rw, null);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
+
+ renderer.render(wrapper, null);
}
}
Modified:
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
(original)
+++
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
Wed Oct 31 21:17:31 2012
@@ -21,13 +21,13 @@ package org.apache.rave.provider.w3c.web
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.*;
-import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.service.UserService;
import org.apache.rave.portal.service.WidgetProviderService;
import org.apache.rave.portal.web.renderer.RegionWidgetRenderer;
import org.apache.rave.portal.web.renderer.RenderScope;
import org.apache.rave.portal.web.renderer.ScriptLocation;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.apache.rave.provider.w3c.service.impl.W3CWidget;
import org.json.JSONException;
@@ -52,15 +52,13 @@ public class W3cWidgetRenderer implement
private final WidgetProviderService widgetService;
private final UserService userService;
private ScriptManager scriptManager;
- private WidgetRepository widgetRepository;
@Autowired
public W3cWidgetRenderer(@Qualifier("wookieWidgetService")
WidgetProviderService widgetService,
- UserService userService, ScriptManager
scriptManager, WidgetRepository widgetRepository) {
+ UserService userService, ScriptManager
scriptManager) {
this.widgetService = widgetService;
this.userService = userService;
this.scriptManager = scriptManager;
- this.widgetRepository = widgetRepository;
}
/**
@@ -89,18 +87,19 @@ public class W3cWidgetRenderer implement
/**
* Renders a {@link org.apache.rave.portal.model.RegionWidget} as HTML
markup
*
- * @param item RegionWidgetImpl to render
+ * @param wrapper RegionWidgetImpl to render
* @param context
* @return valid HTML markup
*/
@Override
- public String render(RegionWidget item, RenderContext context) {
- Widget widget = widgetRepository.get(item.getWidgetId());
+ public String render(RegionWidgetWrapper wrapper, RenderContext context) {
+ Widget widget = wrapper.getWidget();
+ RegionWidget item = wrapper.getRegionWidget();
if(!WIDGET_TYPE.equals(widget.getType())) {
throw new NotSupportedException("Invalid widget type passed to
renderer: " + widget.getType());
}
- String widgetScript = getWidgetScript(item);
+ String widgetScript = getWidgetScript(item, widget);
// the key is based off the RegionWidget.id to ensure uniqueness
String key = REGISTER_WIDGET_KEY + "-" + item.getId();
scriptManager.registerScriptBlock(key, widgetScript,
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
@@ -111,10 +110,12 @@ public class W3cWidgetRenderer implement
/**
* Create a widget script block
+ *
* @param item the RegionWidget to create a script block for
+ * @param widget
* @return the script block
*/
- private String getWidgetScript(RegionWidget item) {
+ private String getWidgetScript(RegionWidget item, Widget widget) {
User user = userService.getAuthenticatedUser();
//
@@ -125,7 +126,6 @@ public class W3cWidgetRenderer implement
//
// Get the Rave Widget for this regionWidget instance
//
- Widget widget = widgetRepository.get(item.getWidgetId());
W3CWidget contextualizedWidget = (W3CWidget)
widgetService.getWidget(user, sharedDataKey, widget);
//
Modified:
rave/trunk/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java?rev=1404356&r1=1404355&r2=1404356&view=diff
==============================================================================
---
rave/trunk/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java
(original)
+++
rave/trunk/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java
Wed Oct 31 21:17:31 2012
@@ -22,11 +22,11 @@ package org.apache.rave.provider.w3c.web
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.*;
import org.apache.rave.portal.model.impl.*;
-import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.portal.service.UserService;
import org.apache.rave.portal.service.WidgetProviderService;
import org.apache.rave.portal.web.renderer.Renderer;
import org.apache.rave.portal.web.renderer.ScriptManager;
+import org.apache.rave.portal.web.renderer.model.RegionWidgetWrapper;
import org.apache.rave.portal.web.renderer.model.RenderContext;
import org.apache.rave.provider.w3c.Constants;
import org.apache.rave.provider.w3c.service.impl.W3CWidget;
@@ -47,12 +47,11 @@ public class W3cWidgetRendererTest {
private static final String VALID_WIDGET_URL =
"http://example.com/widgets/1";
private static final String VALID_WIDGET_INSTANCE_URL =
"http://example.com/widgetinstances/1";
- private Renderer<RegionWidget> renderer;
+ private Renderer<RegionWidgetWrapper> renderer;
private WidgetProviderService wookieService;
private UserService userService;
private RenderContext renderContext;
private ScriptManager scriptManager;
- private WidgetRepository widgetRepository;
@Before
public void setup() {
@@ -61,8 +60,7 @@ public class W3cWidgetRendererTest {
wookieService = createNiceMock(WidgetProviderService.class);
userService = createNiceMock(UserService.class);
scriptManager = createNiceMock(ScriptManager.class);
- widgetRepository = createMock(WidgetRepository.class);
- renderer = new W3cWidgetRenderer(wookieService, userService,
scriptManager, widgetRepository);
+ renderer = new W3cWidgetRenderer(wookieService, userService,
scriptManager);
}
@Test
@@ -103,14 +101,12 @@ public class W3cWidgetRendererTest {
W3CWidget wookieWidget = new W3CWidget();
wookieWidget.setUrl(VALID_WIDGET_INSTANCE_URL);
- expect(widgetRepository.get("1")).andReturn(w);
- expect(widgetRepository.get("1")).andReturn(w);
- replay(widgetRepository);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
- expect(wookieService.getWidget(eq(user), eq(rw.getId().toString()),
isA(Widget.class))).andReturn(wookieWidget);
+ expect(wookieService.getWidget(eq(user), eq(rw.getId()),
isA(Widget.class))).andReturn(wookieWidget);
replay(wookieService);
- String placeholder = renderer.render(rw, renderContext);
+ String placeholder = renderer.render(wrapper, renderContext);
assertEquals("Script block for widget is incorrect", "<!--
RegionWidget " + REGION_WIDGET_ID + " placeholder -->", placeholder);
}
@@ -122,10 +118,9 @@ public class W3cWidgetRendererTest {
RegionWidget rw = new RegionWidgetImpl("1");
rw.setWidgetId(w.getId());
- expect(widgetRepository.get("1")).andReturn(w);
- replay(widgetRepository);
+ RegionWidgetWrapper wrapper = new RegionWidgetWrapper(w, rw);
RenderContext renderContext = createNiceMock(RenderContext.class);
- renderer.render(rw, renderContext);
+ renderer.render(wrapper, renderContext);
}
}