Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag (original) +++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag Fri Oct 12 21:07:09 2012 @@ -25,6 +25,7 @@ Template for rendering a RegionWidget in <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="portal" uri="http://www.apache.org/rave/tags" %> <%@ attribute name="regionWidget" type="org.apache.rave.portal.model.RegionWidget" required="true" description="The regionWidget object" %> +<%@ attribute name="widget" type="org.apache.rave.portal.model.Widget" required="true" description="The Widget object" %> <c:set var="isLocked" value="${regionWidget.locked}" /> <c:set var="isHideChrome" value="${regionWidget.hideChrome}" /> @@ -39,11 +40,11 @@ Template for rendering a RegionWidget in </c:if> <div id="widget-${regionWidget.id}-title" class="widget-title"> <c:choose> - <c:when test="${not empty regionWidget.widget.titleUrl}"> - <a href="<c:out value="${regionWidget.widget.titleUrl}"/>" rel="external"><c:out value="${regionWidget.widget.title}"/></a> + <c:when test="${not empty widget.titleUrl}"> + <a href="<c:out value="${widget.titleUrl}"/>" rel="external"><c:out value="${widget.title}"/></a> </c:when> <c:otherwise> - <c:out value="${regionWidget.widget.title}"/> + <c:out value="${widget.title}"/> </c:otherwise> </c:choose> </div> @@ -96,7 +97,7 @@ Template for rendering a RegionWidget in </div> <%-- if widget is disabled then display notification in titlebar --%> - <c:if test="${regionWidget.widget.disableRendering}"> + <c:if test="${widget.disableRendering}"> <div id="widget-${regionWidget.id}-disabled" class="widget-disabled-icon ui-icon ui-icon-alert" title="<fmt:message key="widget.chrome.disabled"/>"></div> </c:if> </div> @@ -104,6 +105,6 @@ Template for rendering a RegionWidget in <div class="widget-prefs" id="widget-${regionWidget.id}-prefs-content"></div> <div class="widget" id="widget-${regionWidget.id}-body"> - <portal:render-widget regionWidget="${regionWidget}" /> + <portal:render-widget regionWidget="${regionWidget}" widget="${widget}" /> </div> </div> \ No newline at end of file
Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/simple_regions.tag URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/simple_regions.tag?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/simple_regions.tag (original) +++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/simple_regions.tag Fri Oct 12 21:07:09 2012 @@ -24,10 +24,11 @@ simply render each region one after anot <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %> <%@ attribute name="page" type="org.apache.rave.portal.model.Page" required="true" description="The Page object" %> +<%@ attribute name="widgets" type="java.util.List" required="true" description="The Widgets" %> <%--@elvariable id="region" type="org.apache.rave.portal.model.Region"--%> <div class="widgetRow bottomRow"> <c:forEach var="region" items="${page.regions}" varStatus="status"> - <rave:region region="${region}" regionIdx="${status.count}" /> + <rave:region region="${region}" regionIdx="${status.count}" widgets="${widgets}"/> </c:forEach> </div> \ No newline at end of file Modified: rave/branches/model-split/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java (original) +++ rave/branches/model-split/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java Fri Oct 12 21:07:09 2012 @@ -70,7 +70,7 @@ public class RenderServiceIntegrationTes private RestOperations restOperations; private static final String VALID_METADATA = "[{\"id\":\"gadgets.metadata\",\"result\"" + - ":{\"http://www.example.com/gadget.xml\":{\"data-snipped\":\"here-for-brevity\"}}}]"; + ":{\"http://www.widget-dico.com/wikipedia/google/wikipedia.xml\":{\"data-snipped\":\"here-for-brevity\"}}}]"; private static final String VALID_USER_ID = "2"; private static final String VALID_USER_NAME = "john.doe"; @@ -113,10 +113,10 @@ public class RenderServiceIntegrationTes WidgetImpl w = new WidgetImpl(); w.setType("OpenSocial"); w.setId("1"); - w.setTitle("Gadget Title"); - w.setUrl("http://www.example.com/gadget.xml"); + w.setTitle("Wikipedia"); + w.setUrl("http://www.widget-dico.com/wikipedia/google/wikipedia.xml"); - RegionWidget rw = new RegionWidgetImpl("1", w, region); + RegionWidget rw = new RegionWidgetImpl("1", w.getId(), region); region.setRegionWidgets(Arrays.asList(rw)); RenderContext context = new RenderContext(); Modified: rave/branches/model-split/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/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java (original) +++ rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java Fri Oct 12 21:07:09 2012 @@ -23,6 +23,7 @@ import org.apache.commons.io.FileUtils; import org.apache.rave.portal.model.RegionWidget; import org.apache.rave.portal.model.User; 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.provider.opensocial.exception.SecurityTokenException; import org.apache.rave.provider.opensocial.service.SecurityTokenService; @@ -51,6 +52,7 @@ public class EncryptedBlobSecurityTokenS public static final String CLASSPATH_KEY_PREFIX = "classpath:"; private UserService userService; + private WidgetRepository widgetRepository; private String container; private String domain; @@ -58,12 +60,14 @@ public class EncryptedBlobSecurityTokenS @Autowired public EncryptedBlobSecurityTokenService(UserService userService, + WidgetRepository widgetRepository, @Value("${portal.opensocial_security.container}") String container, @Value("${portal.opensocial_security.domain}") String domain, @Value("${portal.opensocial_security.encryptionkey}") String encryptionKey) { this.userService = userService; this.container = container; this.domain = domain; + this.widgetRepository = widgetRepository; if (encryptionKey.startsWith(EMBEDDED_KEY_PREFIX)) { this.blobCrypter = new BasicBlobCrypter(encryptionKey.substring(EMBEDDED_KEY_PREFIX.length())); @@ -140,7 +144,7 @@ public class EncryptedBlobSecurityTokenS //Create a new RegionWidget instance from it so we can use it to generate a new encrypted token RegionWidget regionWidget = new RegionWidgetImpl(Long.toString(securityToken.getModuleId()), - new WidgetImpl("-1", securityToken.getAppUrl()), + "-1", new RegionImpl("-1", new PageImpl("-1", userService.getUserByUsername(securityToken.getOwnerId()).getId()), -1)); //Create and return the newly encrypted token @@ -152,7 +156,7 @@ public class EncryptedBlobSecurityTokenS User user = userService.getAuthenticatedUser(); Map<String, String> values = new HashMap<String, String>(); - values.put(AbstractSecurityToken.Keys.APP_URL.getKey(), regionWidget.getWidget().getUrl()); + values.put(AbstractSecurityToken.Keys.APP_URL.getKey(), widgetRepository.get(regionWidget.getWidgetId()).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())); Modified: rave/branches/model-split/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/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java (original) +++ rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java Fri Oct 12 21:07:09 2012 @@ -20,10 +20,8 @@ package org.apache.rave.provider.opensocial.web.renderer; import org.apache.rave.exception.NotSupportedException; -import org.apache.rave.portal.model.Page; -import org.apache.rave.portal.model.PageType; -import org.apache.rave.portal.model.RegionWidget; -import org.apache.rave.portal.model.RegionWidgetPreference; +import org.apache.rave.portal.model.*; +import org.apache.rave.portal.repository.WidgetRepository; import org.apache.rave.portal.web.renderer.RegionWidgetRenderer; import org.apache.rave.portal.web.renderer.RenderScope; import org.apache.rave.portal.web.renderer.ScriptLocation; @@ -53,14 +51,17 @@ public class OpenSocialWidgetRenderer im private OpenSocialService openSocialService; private SecurityTokenService securityTokenService; private ScriptManager scriptManager; + private WidgetRepository widgetRepository; @Autowired public OpenSocialWidgetRenderer(OpenSocialService openSocialService, SecurityTokenService securityTokenService, - ScriptManager scriptManager) { + ScriptManager scriptManager, + WidgetRepository widgetRepository) { this.openSocialService = openSocialService; this.securityTokenService = securityTokenService; this.scriptManager = scriptManager; + this.widgetRepository = widgetRepository; } //Note the widgets.push() call. This defines the widget objects, which are @@ -95,7 +96,7 @@ public class OpenSocialWidgetRenderer im */ @Override public String render(RegionWidget item, RenderContext context) { - String type = item.getWidget().getType(); + String type = widgetRepository.get(item.getWidgetId()).getType(); if (!Constants.WIDGET_TYPE.equals(type)) { throw new NotSupportedException("Invalid widget type passed to renderer: " + type); } @@ -135,16 +136,18 @@ public class OpenSocialWidgetRenderer im isDefault = isDefaultSubPage(page); } + Widget widget = widgetRepository.get(item.getWidgetId()); + return String.format(SCRIPT_BLOCK, item.getRegion().getId(), Constants.WIDGET_TYPE, item.getId(), - item.getWidget().getUrl(), + widget.getUrl(), securityTokenService.getEncryptedSecurityToken(item), - openSocialService.getGadgetMetadata(item.getWidget().getUrl()), + openSocialService.getGadgetMetadata(widget.getUrl()), userPrefs.toString(), item.isCollapsed(), - item.getWidget().getId(), + widget.getId(), item.isLocked(), item.isHideChrome(), pageId, Modified: rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java (original) +++ rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java Fri Oct 12 21:07:09 2012 @@ -21,6 +21,7 @@ package org.apache.rave.provider.opensoc 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.provider.opensocial.service.impl.EncryptedBlobSecurityTokenService; import org.apache.shindig.auth.SecurityToken; @@ -43,6 +44,7 @@ import static org.junit.Assert.assertNot @RunWith(Parameterized.class) public class SecurityTokenServiceTest { private UserService userService; + private WidgetRepository widgetRepository; private SecurityTokenService securityTokenService; private String encryptionKey; @@ -51,6 +53,7 @@ public class SecurityTokenServiceTest { private Region validRegion; private RegionWidget validRegionWidget; private Widget validWidget; + private Widget bogusWidget; private final String VALID_REGION_WIDGET_ID = "1"; private final String VALID_USER_ID = "1"; @@ -79,7 +82,8 @@ public class SecurityTokenServiceTest { public void setup() throws MalformedURLException { userService = createMock(UserService.class); - securityTokenService = new EncryptedBlobSecurityTokenService(userService, "default", "default", + widgetRepository = createMock(WidgetRepository.class); + securityTokenService = new EncryptedBlobSecurityTokenService(userService, widgetRepository, "default", "default", encryptionKey); validPerson = new UserImpl(VALID_USER_ID, VALID_USER_NAME); @@ -92,7 +96,9 @@ public class SecurityTokenServiceTest { validWidget.setType("OpenSocial"); validWidget.setTitle("Widget Title"); - validRegionWidget = new RegionWidgetImpl(VALID_REGION_WIDGET_ID, validWidget, validRegion); + bogusWidget = new WidgetImpl("-1", VALID_URL); + + validRegionWidget = new RegionWidgetImpl(VALID_REGION_WIDGET_ID, validWidget.getId(), validRegion); validRegion.setRegionWidgets(Arrays.asList(validRegionWidget)); } @@ -102,6 +108,9 @@ public class SecurityTokenServiceTest { expect(userService.getUserById(VALID_USER_ID)).andReturn(validPerson); replay(userService); + expect(widgetRepository.get(validWidget.getId())).andReturn(validWidget); + replay(widgetRepository); + SecurityToken securityToken = securityTokenService.getSecurityToken(validRegionWidget); validateSecurityToken(securityToken); } @@ -116,6 +125,9 @@ public class SecurityTokenServiceTest { expect(userService.getUserById(expectedOwnerId)).andReturn(new UserImpl(expectedOwnerId, expected)); replay(userService); + expect(widgetRepository.get(validWidget.getId())).andReturn(validWidget); + replay(widgetRepository); + SecurityToken securityToken = securityTokenService.getSecurityToken(validRegionWidget); validateSecurityToken(securityToken, expected); } @@ -126,6 +138,9 @@ public class SecurityTokenServiceTest { expect(userService.getUserById(VALID_USER_ID)).andReturn(validPerson); replay(userService); + expect(widgetRepository.get(validWidget.getId())).andReturn(validWidget); + replay(widgetRepository); + String token = securityTokenService.getEncryptedSecurityToken(validRegionWidget); assertNotNull(token); } @@ -136,6 +151,9 @@ public class SecurityTokenServiceTest { expect(userService.getUserById(VALID_USER_ID)).andReturn(validPerson); replay(userService); + expect(widgetRepository.get(validWidget.getId())).andReturn(validWidget); + replay(widgetRepository); + String encryptedToken = securityTokenService.getEncryptedSecurityToken(validRegionWidget); assertNotNull(encryptedToken); @@ -150,6 +168,10 @@ public class SecurityTokenServiceTest { expect(userService.getUserById(VALID_USER_ID)).andReturn(validPerson).anyTimes(); replay(userService); + expect(widgetRepository.get(validWidget.getId())).andReturn(validWidget); + expect(widgetRepository.get(bogusWidget.getId())).andReturn(bogusWidget); + replay(widgetRepository); + String encryptedToken = securityTokenService.getEncryptedSecurityToken(validRegionWidget); assertNotNull(encryptedToken); Modified: rave/branches/model-split/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/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java (original) +++ rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java Fri Oct 12 21:07:09 2012 @@ -22,6 +22,7 @@ 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.web.renderer.RenderScope; import org.apache.rave.portal.web.renderer.Renderer; import org.apache.rave.portal.web.renderer.ScriptLocation; @@ -47,6 +48,7 @@ public class OpenSocialWidgetRendererTes private SecurityTokenService securityTokenService; private ScriptManager scriptManager; private Renderer<RegionWidget> renderer; + private WidgetRepository widgetRepository; private static final String VALID_GADGET_URL = "http://www.example.com/gadget.xml"; private static final String VALID_METADATA = "metadata"; @@ -59,10 +61,11 @@ public class OpenSocialWidgetRendererTes @Before public void setup() { renderContext = new RenderContext(); + widgetRepository = createMock(WidgetRepository.class); scriptManager = createStrictMock(ScriptManager.class); openSocialService = createNiceMock(OpenSocialService.class); securityTokenService = createNiceMock(SecurityTokenService.class); - renderer = new OpenSocialWidgetRenderer(openSocialService, securityTokenService, scriptManager); + renderer = new OpenSocialWidgetRenderer(openSocialService, securityTokenService, scriptManager, widgetRepository); } @Test @@ -95,11 +98,16 @@ public class OpenSocialWidgetRendererTes w.setId(WIDGET_ID); w.setType(Constants.WIDGET_TYPE); w.setUrl(VALID_GADGET_URL); + + expect(widgetRepository.get(w.getId())).andReturn(w); + expect(widgetRepository.get(w.getId())).andReturn(w); + replay(widgetRepository); + Region region = new RegionImpl(REGION_ID); region.setPage(subPage); RegionWidget rw = new RegionWidgetImpl(REGION_WIDGET_ID); rw.setCollapsed(VALID_COLLAPSED); - rw.setWidget(w); + rw.setWidgetId(w.getId()); rw.setRegion(region); rw.setHideChrome(VALID_HIDE_CHROME); rw.setLocked(VALID_LOCKED); @@ -145,12 +153,17 @@ public class OpenSocialWidgetRendererTes Page page = new PageImpl(); page.setPageType(PageType.USER); - WidgetImpl w = new WidgetImpl(); + WidgetImpl w = new WidgetImpl(WIDGET_ID); w.setType(Constants.WIDGET_TYPE); + + expect(widgetRepository.get(w.getId())).andReturn(w); + expect(widgetRepository.get(w.getId())).andReturn(w); + replay(widgetRepository); + Region region = new RegionImpl(REGION_ID); region.setPage(page); RegionWidget rw = new RegionWidgetImpl(); - rw.setWidget(w); + rw.setWidgetId(w.getId()); rw.setRegion(region); final String markup = @@ -161,7 +174,7 @@ public class OpenSocialWidgetRendererTes " metadata: null," + " userPrefs: {}," + " collapsed: false, " + - " widgetId: null," + + " widgetId: " + WIDGET_ID + "," + " locked: false," + " hideChrome: false," + " subPage: {id: null, name: '', isDefault: false}" + @@ -176,11 +189,15 @@ public class OpenSocialWidgetRendererTes @Test(expected = NotSupportedException.class) public void render_invalid() { - WidgetImpl w = new WidgetImpl(); + WidgetImpl w = new WidgetImpl("1"); w.setType("NONE"); w.setUrl("http://www.example.com/gadget.xml"); + + expect(widgetRepository.get(w.getId())).andReturn(w); + replay(widgetRepository); + RegionWidget rw = new RegionWidgetImpl("1"); - rw.setWidget(w); + rw.setWidgetId(w.getId()); renderer.render(rw, null); } Modified: rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/W3CWidget.java URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/W3CWidget.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/W3CWidget.java (original) +++ rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/W3CWidget.java Fri Oct 12 21:07:09 2012 @@ -34,6 +34,10 @@ public class W3CWidget extends WidgetImp public W3CWidget() { } + + public W3CWidget(String id) { + super(id); + } /** * @return the width Modified: rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java (original) +++ rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java Fri Oct 12 21:07:09 2012 @@ -21,6 +21,7 @@ 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; @@ -51,13 +52,15 @@ 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) { + UserService userService, ScriptManager scriptManager, WidgetRepository widgetRepository) { this.widgetService = widgetService; this.userService = userService; this.scriptManager = scriptManager; + this.widgetRepository = widgetRepository; } /** @@ -92,7 +95,7 @@ public class W3cWidgetRenderer implement */ @Override public String render(RegionWidget item, RenderContext context) { - Widget widget = item.getWidget(); + Widget widget = widgetRepository.get(item.getWidgetId()); if(!WIDGET_TYPE.equals(widget.getType())) { throw new NotSupportedException("Invalid widget type passed to renderer: " + widget.getType()); } @@ -122,7 +125,8 @@ public class W3cWidgetRenderer implement // // Get the Rave Widget for this regionWidget instance // - W3CWidget contextualizedWidget = (W3CWidget) widgetService.getWidget(user, sharedDataKey, item.getWidget()); + Widget widget = widgetRepository.get(item.getWidgetId()); + W3CWidget contextualizedWidget = (W3CWidget) widgetService.getWidget(user, sharedDataKey, widget); // // TODO make this do something useful; currently these preferences aren't @@ -174,7 +178,7 @@ public class W3cWidgetRenderer implement height, width, item.isCollapsed(), - item.getWidget().getId(), + item.getWidgetId(), item.isLocked(), item.isHideChrome(), pageId, Modified: rave/branches/model-split/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff ============================================================================== --- rave/branches/model-split/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java (original) +++ rave/branches/model-split/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java Fri Oct 12 21:07:09 2012 @@ -22,6 +22,7 @@ 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; @@ -51,6 +52,7 @@ public class W3cWidgetRendererTest { private UserService userService; private RenderContext renderContext; private ScriptManager scriptManager; + private WidgetRepository widgetRepository; @Before public void setup() { @@ -59,7 +61,8 @@ public class W3cWidgetRendererTest { wookieService = createNiceMock(WidgetProviderService.class); userService = createNiceMock(UserService.class); scriptManager = createNiceMock(ScriptManager.class); - renderer = new W3cWidgetRenderer(wookieService, userService, scriptManager); + widgetRepository = createMock(WidgetRepository.class); + renderer = new W3cWidgetRenderer(wookieService, userService, scriptManager, widgetRepository); } @Test @@ -88,18 +91,22 @@ public class W3cWidgetRendererTest { subPage.setPageType(PageType.SUB_PAGE); page.getSubPages().add(subPage); - W3CWidget w = new W3CWidget(); + W3CWidget w = new W3CWidget("1"); w.setType(Constants.WIDGET_TYPE); w.setUrl("http://example.com/widgets/1"); Region region = new RegionImpl(REGION_ID); region.setPage(subPage); RegionWidget rw = new RegionWidgetImpl(REGION_WIDGET_ID); - rw.setWidget(w); + rw.setWidgetId(w.getId()); rw.setRegion(region); W3CWidget wookieWidget = new W3CWidget(); wookieWidget.setUrl(VALID_WIDGET_INSTANCE_URL); + expect(widgetRepository.get("1")).andReturn(w); + expect(widgetRepository.get("1")).andReturn(w); + replay(widgetRepository); + expect(wookieService.getWidget(eq(user), eq(rw.getId().toString()), isA(Widget.class))).andReturn(wookieWidget); replay(wookieService); @@ -109,11 +116,14 @@ public class W3cWidgetRendererTest { @Test(expected = NotSupportedException.class) public void render_invalid() { - Widget w = new WidgetImpl(); + Widget w = new WidgetImpl("1"); w.setType("NONE"); w.setUrl(VALID_WIDGET_URL); RegionWidget rw = new RegionWidgetImpl("1"); - rw.setWidget(w); + rw.setWidgetId(w.getId()); + + expect(widgetRepository.get("1")).andReturn(w); + replay(widgetRepository); RenderContext renderContext = createNiceMock(RenderContext.class); renderer.render(rw, renderContext);
