You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by cg...@apache.org on 2012/10/12 23:07:11 UTC

svn commit: r1397721 [1/2] - in /rave/branches/model-split: rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ rave-components/rave-core/src/main/java/org/apa...

Author: cgeer
Date: Fri Oct 12 21:07:09 2012
New Revision: 1397721

URL: http://svn.apache.org/viewvc?rev=1397721&view=rev
Log:
RAVE-731 Refactored RegionWidget to replace the Widget field with WidgetID. This required updating quite a few JSP pages/tag so that the potential widget list is passed in from the page controller.

Modified:
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplateWidget.java
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/RegionWidget.java
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
    rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
    rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaUser.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverter.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverter.java
    rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
    rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverterTest.java
    rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverterTest.java
    rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
    rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
    rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
    rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/RegionWidgetController.java
    rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
    rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld
    rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
    rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
    rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_1.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2wn.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3_newuser.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn_1_bottom.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_4.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/person_profile.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/regionwidget.jsp
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag
    rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/simple_regions.tag
    rave/branches/model-split/rave-portal/src/test/java/renderer/RenderServiceIntegrationTest.java
    rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/service/impl/EncryptedBlobSecurityTokenService.java
    rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
    rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/service/SecurityTokenServiceTest.java
    rave/branches/model-split/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
    rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/W3CWidget.java
    rave/branches/model-split/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
    rave/branches/model-split/rave-providers/rave-w3c-provider/src/test/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRendererTest.java

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplateWidget.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplateWidget.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplateWidget.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplateWidget.java Fri Oct 12 21:07:09 2012
@@ -35,9 +35,9 @@ public interface PageTemplateWidget {
 
     void setRenderSeq(long renderSeq);
 
-    Widget getWidget();
+    String getWidgetId();
 
-    void setWidget(Widget widget);
+    void setWidgetId(String widgetId);
 
     boolean isLocked();
 

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/RegionWidget.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/RegionWidget.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/RegionWidget.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/RegionWidget.java Fri Oct 12 21:07:09 2012
@@ -28,9 +28,9 @@ import java.util.List;
 public interface RegionWidget {
     String getId();
 
-    Widget getWidget();
+    String getWidgetId();
 
-    void setWidget(Widget widget);
+    void setWidgetId(String widgetId);
 
     @JsonBackReference
     Region getRegion();

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java Fri Oct 12 21:07:09 2012
@@ -24,7 +24,7 @@ public class PageTemplateWidgetImpl impl
     private String id;
     private PageTemplateRegion pageTemplateRegion;
     private long renderSequence;
-    private Widget widget;
+    private String widgetId;
     private boolean locked;
     private boolean hideChrome;
 
@@ -60,12 +60,12 @@ public class PageTemplateWidgetImpl impl
         this.renderSequence = renderSequence;
     }
 
-    public Widget getWidget() {
-        return widget;
+    public String getWidgetId() {
+        return widgetId;
     }
 
-    public void setWidget(Widget widget) {
-        this.widget = widget;
+    public void setWidgetId(String widgetId) {
+        this.widgetId = widgetId;
     }
 
     public boolean isLocked() {
@@ -96,7 +96,7 @@ public class PageTemplateWidgetImpl impl
         if (renderSequence != that.renderSequence) return false;
         if (pageTemplateRegion != null ? !pageTemplateRegion.equals(that.pageTemplateRegion) : that.pageTemplateRegion != null)
             return false;
-        if (widget != null ? !widget.equals(that.widget) : that.widget != null) return false;
+        if (widgetId != null ? !widgetId.equals(that.widgetId) : that.widgetId != null) return false;
 
         return true;
     }
@@ -105,7 +105,7 @@ public class PageTemplateWidgetImpl impl
     public int hashCode() {
         int result = pageTemplateRegion != null ? pageTemplateRegion.hashCode() : 0;
         result = 31 * result + (int) (renderSequence ^ (renderSequence >>> 32));
-        result = 31 * result + (widget != null ? widget.hashCode() : 0);
+        result = 31 * result + (widgetId != null ? widgetId.hashCode() : 0);
         result = 31 * result + (locked ? 1 : 0);
         result = 31 * result + (hideChrome ? 1 : 0);
         return result;

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java Fri Oct 12 21:07:09 2012
@@ -27,7 +27,7 @@ import java.util.List;
 
 public class RegionWidgetImpl implements RegionWidget {
     private String id;
-    private Widget widget;
+    private String widgetId;
     private Region region;
     private String renderPosition;
     private Integer renderOrder = 0;
@@ -44,15 +44,15 @@ public class RegionWidgetImpl implements
         this.id = id;
     }
 
-    public RegionWidgetImpl(String id, Widget widget, Region region) {
+    public RegionWidgetImpl(String id, String widgetId, Region region) {
         this.id = id;
-        this.widget = widget;
+        this.widgetId = widgetId;
         this.region = region;
     }
 
-    public RegionWidgetImpl(String id, Widget widget, Region region, int renderOrder) {
+    public RegionWidgetImpl(String id, String widgetId, Region region, int renderOrder) {
         this.id = id;
-        this.widget = widget;
+        this.widgetId = widgetId;
         this.region = region;
         this.renderOrder = renderOrder;
     }
@@ -67,13 +67,13 @@ public class RegionWidgetImpl implements
     }
 
     @Override
-    public Widget getWidget() {
-        return widget;
+    public String getWidgetId() {
+        return widgetId;
     }
 
     @Override
-    public void setWidget(Widget widget) {
-        this.widget = widget;
+    public void setWidgetId(String widgetId) {
+        this.widgetId = widgetId;
     }
 
     @Override
@@ -157,7 +157,7 @@ public class RegionWidgetImpl implements
         if (locked != null ? !locked.equals(rw.locked) : rw.locked != null)
             return false;
         if (renderOrder != null ? !renderOrder.equals(rw.renderOrder) : rw.renderOrder != null) return false;
-        if (widget != null ? !widget.equals(rw.widget) : rw.widget != null)
+        if (widgetId != null ? !widgetId.equals(rw.widgetId) : rw.widgetId != null)
             return false;
         if (region != null ? !region.equals(rw.region) : rw.region != null) return false;
         if (hideChrome != null ? !hideChrome.equals(rw.hideChrome) : rw.hideChrome != null) return false;
@@ -170,7 +170,7 @@ public class RegionWidgetImpl implements
 
     @Override
     public int hashCode() {
-        int result = (widget != null ? widget.hashCode() : 0);
+        int result = (widgetId != null ? widgetId.hashCode() : 0);
         result = 31 * result + (preferences != null ? preferences.hashCode() : 0);
         result = 31 * result + (id != null ? id.hashCode() : 0);
         result = 31 * result + (renderOrder != null ? renderOrder.hashCode() : 0);
@@ -186,7 +186,7 @@ public class RegionWidgetImpl implements
     public String toString() {
         return "RegionWidgetImpl{" +
                 "id=" + id +
-                ", widget=" + ((widget == null) ? null : widget.getId())  +
+                ", widget=" + ((widgetId == null) ? null : widgetId)  +
                 ", region=" + ((region == null) ? null : region.getId()) +
                 ", renderPosition='" + renderPosition + '\'' +
                 ", renderOrder=" + renderOrder +

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java Fri Oct 12 21:07:09 2012
@@ -447,7 +447,7 @@ public class DefaultPageService implemen
     private RegionWidget createWidgetInstance(Widget widget, Region region, int position) {
         RegionWidget regionWidget = new RegionWidgetImpl();
         regionWidget.setRenderOrder(position);
-        regionWidget.setWidget(widget);
+        regionWidget.setWidgetId(widget.getId());
         // TODO: setLocked and setHideChrome are hard-coded to false for new widgets manually added by users
         //       which makes sense for most default cases.  However should we change them to a customizable property
         //       to allow for more flexibility?

Modified: rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultRenderService.java Fri Oct 12 21:07:09 2012
@@ -21,6 +21,8 @@ package org.apache.rave.portal.web.rende
 
 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.RenderContext;
 import org.apache.rave.portal.web.renderer.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,10 +41,13 @@ public class DefaultRenderService implem
 
     private final Map<String, RegionWidgetRenderer> supportedWidgets;
 
+    private final WidgetRepository widgetRepository;
+
     @Autowired
-    public DefaultRenderService(List<RegionWidgetRenderer> widgetRenderers) {
+    public DefaultRenderService(List<RegionWidgetRenderer> widgetRenderers, WidgetRepository widgetRepository) {
         this.supportedWidgets = new HashMap<String, RegionWidgetRenderer>();
         mapRenderersByType(this.supportedWidgets, widgetRenderers);
+        this.widgetRepository = widgetRepository;
     }
 
     @Override
@@ -51,21 +56,22 @@ public class DefaultRenderService implem
     }
 
     /**
-     * Renders the given widget iff there is a {@link org.apache.rave.portal.web.renderer.RegionWidgetRenderer } for the
-     * widget type
+     * Renders the given rw iff there is a {@link org.apache.rave.portal.web.renderer.RegionWidgetRenderer } for the
+     * rw type
      *
-     * @param widget widget to renderer
+     * @param rw RegionWidget to renderer
      * @param context
      * @return the String representation of the rendered RegionWidget
      * @throws {@link org.apache.rave.exception.NotSupportedException}
      */
     @Override
-    public String render(RegionWidget widget, RenderContext context) {
-        RegionWidgetRenderer renderer = supportedWidgets.get(widget.getWidget().getType());
+    public String render(RegionWidget rw, RenderContext context) {
+        Widget widget = widgetRepository.get(rw.getWidgetId());
+        RegionWidgetRenderer renderer = supportedWidgets.get(widget.getType());
         if(renderer == null) {
-            throw new NotSupportedException(widget.getWidget().getType() + " is not supported");
+            throw new NotSupportedException(widget.getType() + " is not supported");
         }
-        return renderer.render(widget, context);
+        return renderer.render(rw, context);
     }
 
     private static <T extends Renderer> void mapRenderersByType(Map<String, T> map, List<T> renderers) {

Modified: rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java Fri Oct 12 21:07:09 2012
@@ -112,17 +112,17 @@ public class DefaultPageServiceTest {
         targetRegion = new RegionImpl("2");
         targetRegion.setLocked(false);
         targetRegion.setRegionWidgets(new ArrayList<RegionWidget>());
-        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("1", validWidget, targetRegion, 0));
-        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("2", validWidget, targetRegion, 1));
-        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("3", validWidget, targetRegion, 2));
+        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("1", validWidget.getId(), targetRegion, 0));
+        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("2", validWidget.getId(), targetRegion, 1));
+        targetRegion.getRegionWidgets().add(new RegionWidgetImpl("3", validWidget.getId(), targetRegion, 2));
         targetRegion.setPage(page);
 
         originalRegion = new RegionImpl("2");
         originalRegion.setLocked(false);
         originalRegion.setRegionWidgets(new ArrayList<RegionWidget>());
-        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("4", validWidget, targetRegion, 0));
-        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("5", validWidget, targetRegion, 1));
-        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("6", validWidget, targetRegion, 2));
+        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("4", validWidget.getId(), targetRegion, 0));
+        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("5", validWidget.getId(), targetRegion, 1));
+        originalRegion.getRegionWidgets().add(new RegionWidgetImpl("6", validWidget.getId(), targetRegion, 2));
 
         lockedRegion = new RegionImpl();
         lockedRegion.setLocked(true);
@@ -137,7 +137,7 @@ public class DefaultPageServiceTest {
         pageUserList.add(pageUser2);
 
         validRegionWidget = new RegionWidgetImpl(VALID_REGION_WIDGET_ID);
-        validRegionWidget.setWidget(validWidget);
+        validRegionWidget.setWidgetId(validWidget.getId());
         validRegionWidget.setRegion(originalRegion);
     }
 
@@ -697,7 +697,7 @@ public class DefaultPageServiceTest {
 
         verifyPositions(0, instance, true);
         assertThat(originalRegion.getRegionWidgets().get(0), is(sameInstance(instance)));
-        assertThat(instance.getWidget().getId(), is(equalTo(widget.getId())));
+        assertThat(instance.getWidgetId(), is(equalTo(widget.getId())));
 
     }
 
@@ -727,7 +727,6 @@ public class DefaultPageServiceTest {
 
         verifyPositions(0, instance, true);
         assertThat(originalRegion.getRegionWidgets().get(0), is(sameInstance(instance)));
-        assertThat(instance.getWidget(), is(sameInstance(widget)));
 
     }
 
@@ -753,7 +752,6 @@ public class DefaultPageServiceTest {
 
         verifyPositions(0, instance, true);
         assertThat(originalRegion.getRegionWidgets().get(0), is(sameInstance(instance)));
-        assertThat(instance.getWidget(), is(sameInstance(widget)))         ;
     }
 
     @Test(expected = IllegalArgumentException.class)

Modified: rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java (original)
+++ rave/branches/model-split/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/RenderServiceTest.java Fri Oct 12 21:07:09 2012
@@ -23,6 +23,7 @@ import org.apache.rave.exception.NotSupp
 import org.apache.rave.portal.model.RegionWidget;
 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.impl.DefaultRenderService;
 import org.apache.rave.portal.web.renderer.model.RenderContext;
 import org.junit.Before;
@@ -48,12 +49,14 @@ public class RenderServiceTest {
     private RegionWidgetRenderer widgetRenderer2;
     private RegionWidgetRenderer widgetRenderer1;
     private RenderContext context;
+    private WidgetRepository widgetRepository;
 
     @Before
     public void setup() {
         widgetRenderers = new ArrayList<RegionWidgetRenderer>();
         widgetRenderer2 = createStrictMock(RegionWidgetRenderer.class);
         widgetRenderer1 = createStrictMock(RegionWidgetRenderer.class);
+        widgetRepository = createMock(WidgetRepository.class);
 
         expect(widgetRenderer1.getSupportedContext()).andReturn(SUPPORTED_TYPE_1);
         expect(widgetRenderer2.getSupportedContext()).andReturn(SUPPORTED_TYPE_2);
@@ -85,12 +88,14 @@ public class RenderServiceTest {
     @Test
     public void render_supported_foo() {
         WidgetImpl w = new WidgetImpl();
+        w.setId("1");
         w.setType(SUPPORTED_TYPE_1);
 
         RegionWidget rw = new RegionWidgetImpl();
-        rw.setWidget(w);
+        rw.setWidgetId(w.getId());
 
         expect(widgetRenderer1.render(rw, context)).andReturn(RENDERED_TYPE_1);
+        expect(widgetRepository.get("1")).andReturn(w);
         replayMocks();
 
         constructFooBarRenderService();
@@ -100,11 +105,13 @@ public class RenderServiceTest {
     @Test
     public void render_supported_bar() {
         WidgetImpl w = new WidgetImpl();
+        w.setId("1");
         w.setType(SUPPORTED_TYPE_2);
         RegionWidget rw = new RegionWidgetImpl();
-        rw.setWidget(w);
+        rw.setWidgetId(w.getId());
 
         expect(widgetRenderer2.render(rw, context)).andReturn(RENDERED_TYPE_2);
+        expect(widgetRepository.get("1")).andReturn(w);
         replayMocks();
 
         constructFooBarRenderService();
@@ -114,10 +121,13 @@ public class RenderServiceTest {
     @Test(expected = NotSupportedException.class)
     public void render_invalid() {
         WidgetImpl w = new WidgetImpl();
+        w.setId("1");
         w.setType("NONE");
 
         RegionWidget rw = new RegionWidgetImpl();
-        rw.setWidget(w);
+        rw.setWidgetId(w.getId());
+
+        expect(widgetRepository.get("1")).andReturn(w);
 
         replayMocks();
 
@@ -129,16 +139,17 @@ public class RenderServiceTest {
     private void constructFooBarRenderService() {
         widgetRenderers.add(widgetRenderer1);
         widgetRenderers.add(widgetRenderer2);
-        service = new DefaultRenderService(widgetRenderers);
+        service = new DefaultRenderService(widgetRenderers, widgetRepository);
     }
 
     private void constructFooRenderService() {
         widgetRenderers.add(widgetRenderer1);
-        service = new DefaultRenderService(widgetRenderers);
+        service = new DefaultRenderService(widgetRenderers, widgetRepository);
     }
 
     private void replayMocks() {
         replay(widgetRenderer1);
         replay(widgetRenderer2);
+        replay(widgetRepository);
     }
 }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java Fri Oct 12 21:07:09 2012
@@ -50,9 +50,9 @@ public class JpaPageTemplateWidget imple
     @Column(name = "render_sequence")
     private long renderSequence;
 
-    @JoinColumn(name = "widget_id")
-    @ManyToOne(optional = false)
-    private JpaWidget widget;
+    @Column(name = "widget_id")
+    @Basic(optional = false)
+    private Long widgetId;
 
     @Basic(optional = false)
     @Column(name = "locked")
@@ -98,13 +98,13 @@ public class JpaPageTemplateWidget imple
     }
 
     @Override
-    public JpaWidget getWidget() {
-        return widget;
+    public String getWidgetId() {
+        return widgetId.toString();
     }
 
     @Override
-    public void setWidget(Widget widget) {
-        this.widget = JpaConverter.getInstance().convert(widget, Widget.class);
+    public void setWidgetId(String widgetId) {
+        this.widgetId = Long.parseLong(widgetId);
     }
 
     @Override

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java Fri Oct 12 21:07:09 2012
@@ -89,13 +89,13 @@ public class JpaRegion implements BasicE
     /**
      * Only used for XML serialization, omitting regionwidget
      */
-    private List<Widget> getWidgets(){
-        ArrayList<Widget> widgets = new ArrayList<Widget>();
-        for (RegionWidget rw: regionWidgets){
-            widgets.add(rw.getWidget());
-        }
-        return widgets;
-    }
+//    private List<Widget> getWidgets(){
+//        ArrayList<Widget> widgets = new ArrayList<Widget>();
+//        for (RegionWidget rw: regionWidgets){
+//            widgets.add(rw.getWidget());
+//        }
+//        return widgets;
+//    }
 
     /**
      * Gets the persistence unique identifier

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java Fri Oct 12 21:07:09 2012
@@ -36,9 +36,9 @@ import java.util.List;
 @Table(name = "region_widget")
 @NamedQueries({
         @NamedQuery(name = JpaRegionWidget.REGION_WIDGET_GET_DISTINCT_USER_COUNT_ALL_WIDGETS,
-                    query = "select rw.widget.entityId, count(distinct rw.region.page.ownerId) from JpaRegionWidget rw group by rw.widget.entityId"),
+                    query = "select rw.widgetId, count(distinct rw.region.page.ownerId) from JpaRegionWidget rw group by rw.widgetId"),
         @NamedQuery(name = JpaRegionWidget.REGION_WIDGET_GET_DISTINCT_USER_COUNT_SINGLE_WIDGET,
-                    query = "select count(distinct rw.region.page.ownerId) from JpaRegionWidget rw where rw.widget.entityId = :widgetId"),
+                    query = "select count(distinct rw.region.page.ownerId) from JpaRegionWidget rw where rw.widgetId = :widgetId"),
         @NamedQuery(name = JpaRegionWidget.FIND_BY_ID,
                     query = "select rw from JpaRegionWidget rw where rw.entityId = :widgetId")
 })
@@ -58,9 +58,9 @@ public class JpaRegionWidget implements 
             valueColumnName = "SEQ_COUNT", pkColumnValue = "region_widget", allocationSize = 1, initialValue = 1)
     private Long entityId;
 
-    @ManyToOne
-    @JoinColumn(name = "widget_id")
-    private JpaWidget widget;
+    @Basic
+    @Column(name = "widget_id")
+    private Long widgetId;
 
     @ManyToOne
     @JoinColumn(name = "region_id")
@@ -97,16 +97,16 @@ public class JpaRegionWidget implements 
         this.entityId = entityId;
     }
 
-    public JpaRegionWidget(Long entityId, JpaWidget widget, JpaRegion region, int renderOrder) {
+    public JpaRegionWidget(Long entityId, Long widgetId, JpaRegion region, int renderOrder) {
         this.entityId = entityId;
-        this.widget = widget;
+        this.widgetId = widgetId;
         this.region = region;
         this.renderOrder = renderOrder;
     }
 
-    public JpaRegionWidget(Long entityId, JpaWidget widget, JpaRegion region) {
+    public JpaRegionWidget(Long entityId, Long widgetId, JpaRegion region) {
         this.entityId = entityId;
-        this.widget = widget;
+        this.widgetId = widgetId;
         this.region = region;
     }
 
@@ -136,13 +136,13 @@ public class JpaRegionWidget implements 
      * @return valid widget
      */
     @Override
-    public Widget getWidget() {
-        return widget;
+    public String getWidgetId() {
+        return widgetId.toString();
     }
 
     @Override
-    public void setWidget(Widget widget) {
-        this.widget = JpaConverter.getInstance().convert(widget, Widget.class);;
+    public void setWidgetId(String widgetId) {
+        this.widgetId = Long.parseLong(widgetId);
     }
 
     /**
@@ -279,9 +279,9 @@ public class JpaRegionWidget implements 
         sb.append("JpaRegionWidget{");
         sb.append("entityId=");
         sb.append(entityId);
-        if (widget != null) {
+        if (widgetId != null) {
             sb.append(",widget=");
-            sb.append(widget);
+            sb.append(widgetId);
         } else {
             sb.append(", Widget Null");
         }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaUser.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaUser.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaUser.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaUser.java Fri Oct 12 21:07:09 2012
@@ -49,7 +49,7 @@ import java.util.Date;
                 "where lower(u.username) like :"+ JpaUser.PARAM_SEARCHTERM+" or lower(u.email) like :"+ JpaUser.PARAM_SEARCHTERM+" order by u.username asc"),
         @NamedQuery(name = JpaUser.USER_COUNT_FIND_BY_USERNAME_OR_EMAIL, query = "select count(u) from JpaUser u " +
                 "where lower(u.username) like :"+ JpaUser.PARAM_SEARCHTERM+" or lower(u.email) like :"+ JpaUser.PARAM_SEARCHTERM),
-        @NamedQuery(name = JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, query = "select distinct(u) from JpaUser u, JpaRegionWidget rw where rw.region.page.ownerId = CONCAT(u.entityId,'') and rw.widget.entityId = :widgetId")
+        @NamedQuery(name = JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, query = "select distinct(u) from JpaUser u, JpaRegionWidget rw where rw.region.page.ownerId = CONCAT(u.entityId,'') and rw.widgetId = :widgetId")
 })
 @DiscriminatorValue("User")
 public class JpaUser extends JpaPerson implements BasicEntity, Serializable, User {

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverter.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverter.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverter.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverter.java Fri Oct 12 21:07:09 2012
@@ -59,7 +59,7 @@ public class JpaPageTemplateWidgetConver
         converted.setHideChrome(source.isHideChrome());
         converted.setPageTemplateRegion(source.getPageTemplateRegion());
         converted.setRenderSeq(source.getRenderSeq());
-        converted.setWidget(source.getWidget());
+        converted.setWidgetId(source.getWidgetId());
         converted.setLocked(source.isLocked());
     }
 }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverter.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverter.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverter.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverter.java Fri Oct 12 21:07:09 2012
@@ -67,7 +67,7 @@ public class JpaRegionWidgetConverter im
         converted.setPreferences(source.getPreferences());
         converted.setRegion(source.getRegion());
         converted.setRenderPosition(source.getRenderPosition());
-        converted.setWidget(source.getWidget());
+        converted.setWidgetId(source.getWidgetId());
         converted.setRenderOrder(source.getRenderOrder());
     }
 }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java Fri Oct 12 21:07:09 2012
@@ -195,7 +195,7 @@ public class JpaPageRepository implement
             regionWidget.setLocked(ptw.isLocked());
             regionWidget.setHideChrome(ptw.isHideChrome());
             regionWidget.setRenderOrder((int) ptw.getRenderSeq());
-            regionWidget.setWidget(ptw.getWidget());
+            regionWidget.setWidgetId(ptw.getWidgetId());
             widgets.add(regionWidget);
         }
         return widgets;

Modified: rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverterTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverterTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverterTest.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaPageTemplateWidgetConverterTest.java Fri Oct 12 21:07:09 2012
@@ -59,12 +59,13 @@ public class JpaPageTemplateWidgetConver
     @Test
     public void convertValid() {
         JpaWidget widget = new JpaWidget();
+        widget.setEntityId(1L);
         PageTemplateWidget template = new PageTemplateWidgetImpl("1");
         template.setLocked(true);
         template.setHideChrome(true);
         template.setPageTemplateRegion(new PageTemplateRegionImpl("1"));
         template.setRenderSeq(1);
-        template.setWidget(widget);
+        template.setWidgetId(widget.getId());
 
         JpaPageTemplateWidget jpaTemplate = converter.convert(template);
 
@@ -73,7 +74,7 @@ public class JpaPageTemplateWidgetConver
         assertThat(jpaTemplate.isLocked(), is(equalTo(template.isLocked())));
         assertThat(jpaTemplate.getPageTemplateRegion(), is(instanceOf(JpaPageTemplateRegion.class)));
         assertThat(jpaTemplate.getRenderSeq(), is(equalTo(template.getRenderSeq())));
-        assertThat(jpaTemplate.getWidget(), is(equalTo(template.getWidget())));
+        assertThat(jpaTemplate.getWidgetId(), is(equalTo(template.getWidgetId())));
         assertThat(jpaTemplate.isLocked(), is(equalTo(template.isLocked())));
         assertThat(jpaTemplate.isHideChrome(), is(equalTo(template.isHideChrome())));
     }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverterTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverterTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverterTest.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaRegionWidgetConverterTest.java Fri Oct 12 21:07:09 2012
@@ -63,7 +63,7 @@ public class JpaRegionWidgetConverterTes
         rw.setPreferences(new ArrayList<RegionWidgetPreference>());
         rw.setRegion(new RegionImpl("1"));
         rw.setRenderPosition("last");
-        rw.setWidget(new WidgetImpl("1"));
+        rw.setWidgetId("1");
 
         JpaRegionWidget converted = regionWidgetConverter.convert(rw);
         assertThat(converted, is(not(sameInstance(rw))));
@@ -77,6 +77,6 @@ public class JpaRegionWidgetConverterTes
         assertThat(converted.isHideChrome(), is(equalTo(rw.isHideChrome())));
         assertThat(converted.getRegion(), is(instanceOf(JpaRegion.class)));
         assertThat(converted.getRenderPosition(), is(equalTo(rw.getRenderPosition())));
-        assertThat(converted.getWidget(), is(instanceOf(JpaWidget.class)));
+        assertThat(converted.getWidgetId(), is(instanceOf(String.class)));
     }
 }

Modified: rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java Fri Oct 12 21:07:09 2012
@@ -23,6 +23,7 @@ import org.apache.rave.portal.model.impl
 import org.apache.rave.portal.repository.PageRepository;
 import org.apache.rave.portal.repository.PageTemplateRepository;
 import org.apache.rave.portal.repository.UserRepository;
+import org.apache.rave.portal.repository.WidgetRepository;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -68,6 +69,9 @@ public class JpaPageRepositoryTest {
     @Autowired
     private PageTemplateRepository pageTemplateRepository;
 
+    @Autowired
+    private WidgetRepository widgetRepository;
+
     private JpaUser user;
     private PageTemplate defaultPageTemplate;
 
@@ -84,7 +88,9 @@ public class JpaPageRepositoryTest {
         assertThat(pages.size(), equalTo(2));
         assertThat(pages.get(0).getRegions().size(), equalTo(2));
         assertThat(pages.get(0).getRegions().get(0).getRegionWidgets().size(), equalTo(2));
-        assertThat(pages.get(0).getRegions().get(0).getRegionWidgets().get(0).getWidget().getUrl(), equalTo(WIDGET_URL));
+        Widget widget = widgetRepository.get(pages.get(0).getRegions().get(0).getRegionWidgets().get(0).getWidgetId());
+        assertThat(widget, is(notNullValue()));
+        assertThat(widget.getUrl(), equalTo(WIDGET_URL));
 
         List<PageUser> pageUserPages = repository.getPagesForUser(USER_ID, PageType.USER);
         // test that the query returns the pages in proper render sequence order

Modified: rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java (original)
+++ rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java Fri Oct 12 21:07:09 2012
@@ -110,13 +110,13 @@ public class JpaPageTemplateRepositoryTe
         PageTemplateWidget ptw1 = ptRegion1.getPageTemplateWidgets().get(0);
         assertEquals(((JpaPageTemplateRegion)ptw1.getPageTemplateRegion()).getEntityId(), ptRegion1.getEntityId());
         assertEquals(0, ptw1.getRenderSeq());
-        assertNotNull(ptw1.getWidget());
+        assertNotNull(ptw1.getWidgetId());
         assertTrue(ptw1.isLocked());
         // parent page region widget 2 tests
         PageTemplateWidget ptw2 = ptRegion1.getPageTemplateWidgets().get(1);
         assertEquals(((JpaPageTemplateRegion)ptw2.getPageTemplateRegion()).getEntityId(), ptRegion1.getEntityId());
         assertEquals(1, ptw2.getRenderSeq());
-        assertNotNull(ptw2.getWidget());
+        assertNotNull(ptw2.getWidgetId());
         assertTrue(ptw2.isLocked());
         // sub page 1 region 1 tests
         JpaPageTemplateRegion sp1Region1 = (JpaPageTemplateRegion)subPage1.getPageTemplateRegions().get(0);
@@ -128,13 +128,13 @@ public class JpaPageTemplateRepositoryTe
         PageTemplateWidget spw1 = sp1Region1.getPageTemplateWidgets().get(0);
         assertEquals(((JpaPageTemplateRegion)spw1.getPageTemplateRegion()).getEntityId(), sp1Region1.getEntityId());
         assertEquals(0, spw1.getRenderSeq());
-        assertNotNull(spw1.getWidget());
+        assertNotNull(spw1.getWidgetId());
         assertTrue(spw1.isLocked());
         // sub page 1 region 1 widget 2 tests
         PageTemplateWidget spw2 = sp1Region1.getPageTemplateWidgets().get(1);
         assertEquals(((JpaPageTemplateRegion)spw2.getPageTemplateRegion()).getEntityId(), sp1Region1.getEntityId());
         assertEquals(1, spw2.getRenderSeq());
-        assertNotNull(spw2.getWidget());
+        assertNotNull(spw2.getWidgetId());
         assertTrue(spw2.isLocked());
         // sub page 2 region tests
         JpaPageTemplateRegion sp2Region1 = (JpaPageTemplateRegion)subPage2.getPageTemplateRegions().get(0);
@@ -146,7 +146,7 @@ public class JpaPageTemplateRepositoryTe
         PageTemplateWidget sp2w1 = sp2Region1.getPageTemplateWidgets().get(0);
         assertEquals(((JpaPageTemplateRegion)sp2w1.getPageTemplateRegion()).getEntityId(), sp2Region1.getEntityId());
         assertEquals(0, sp2w1.getRenderSeq());
-        assertNotNull(sp2w1.getWidget());
+        assertNotNull(sp2w1.getWidgetId());
         assertTrue(sp2w1.isLocked());
 
     }
@@ -177,13 +177,13 @@ public class JpaPageTemplateRepositoryTe
         PageTemplateWidget ptw1 = ptRegion1.getPageTemplateWidgets().get(0);
         assertEquals(((JpaPageTemplateRegion)ptw1.getPageTemplateRegion()).getEntityId(), ptRegion1.getEntityId());
         assertEquals(0, ptw1.getRenderSeq());
-        assertNotNull(ptw1.getWidget());
+        assertNotNull(ptw1.getWidgetId());
         assertTrue(ptw1.isLocked());
         // parent page region widget 2 tests
         PageTemplateWidget ptw2 = ptRegion1.getPageTemplateWidgets().get(1);
         assertEquals(((JpaPageTemplateRegion)ptw2.getPageTemplateRegion()).getEntityId(), ptRegion1.getEntityId());
         assertEquals(1, ptw2.getRenderSeq());
-        assertNotNull(ptw2.getWidget());
+        assertNotNull(ptw2.getWidgetId());
         assertTrue(ptw2.isLocked());
     }
 }

Modified: rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java Fri Oct 12 21:07:09 2012
@@ -22,6 +22,7 @@ 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;
@@ -49,13 +50,16 @@ public class PageController {
 
     private PageService pageService;
     private UserService userService;
+    private WidgetService widgetService;
     private PageLayoutService pageLayoutService;
 
     @Autowired
-    public PageController(PageService pageService, UserService userService, PageLayoutService pageLayoutService) {
+    public PageController(PageService pageService, UserService userService, PageLayoutService pageLayoutService,
+                          WidgetService widgetService) {
         this.pageService = pageService;
         this.userService = userService;
         this.pageLayoutService = pageLayoutService;
+        this.widgetService = widgetService;
     }
 
     @RequestMapping(value = {"/login"}, method = RequestMethod.GET)
@@ -75,8 +79,16 @@ 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);
+        addAttributesToModel(model, page, currentPageUser, pages, pageLayouts, widgets);
         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;
@@ -94,8 +106,16 @@ 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);
+            addAttributesToModel(model, page, currentPageUser, pages, pageLayouts, widgets);
             String view = ControllerUtils.getDeviceAppropriateView(request, ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
             ControllerUtils.addNavItemsToModel(view, model, page.getId(), thisUser, currentPageUser.isEditor());
             return view;
@@ -129,10 +149,11 @@ public class PageController {
         return viewablePages;
     }
 
-    private void addAttributesToModel(Model model, Page page, PageUser pageUser, List<Page> pages, List<PageLayout> pageLayouts) {
+    private void addAttributesToModel(Model model, Page page, PageUser pageUser, List<Page> pages, List<PageLayout> pageLayouts, List<Widget> widgets) {
         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/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java Fri Oct 12 21:07:09 2012
@@ -19,11 +19,10 @@
 
 package org.apache.rave.portal.web.controller;
 
-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.model.*;
 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;
@@ -38,6 +37,7 @@ 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
@@ -48,11 +48,13 @@ public class ProfileController {
 
 	private final UserService userService;
 	private final PageService pageService;
+    private final WidgetService widgetService;
 
 	@Autowired
-	public ProfileController(UserService userService, PageService pageService) {
+	public ProfileController(UserService userService, PageService pageService, WidgetService widgetService) {
 		this.userService = userService;
         this.pageService = pageService;
+        this.widgetService = widgetService;
 	}
 
     /**
@@ -70,6 +72,15 @@ public class ProfileController {
         Page personProfilePage = pageService.getPersonProfilePage(user.getId());
         addAttributesToModel(model, user, referringPageId);
         model.addAttribute(ModelKeys.PAGE, personProfilePage);
+        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);
 		String view =  ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
         List<Person> friendRequests = userService.getFriendRequestsReceived(username);
         addNavItemsToModel(view, model, referringPageId, user, friendRequests);
@@ -91,6 +102,15 @@ public class ProfileController {
 		Page personProfilePage = pageService.getPersonProfilePage(user.getId());
         addAttributesToModel(model, user, referringPageId);
         model.addAttribute(ModelKeys.PAGE, personProfilePage);
+        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);
 		String view =  ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
         List<Person> friendRequests = userService.getFriendRequestsReceived(user.getUsername());
         addNavItemsToModel(view, model, referringPageId, user, friendRequests);

Modified: rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/RegionWidgetController.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/RegionWidgetController.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/RegionWidgetController.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/RegionWidgetController.java Fri Oct 12 21:07:09 2012
@@ -20,6 +20,7 @@ package org.apache.rave.portal.web.contr
 
 import org.apache.rave.portal.model.RegionWidget;
 import org.apache.rave.portal.service.RegionWidgetService;
+import org.apache.rave.portal.service.WidgetService;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.ViewNames;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,15 +34,18 @@ import org.springframework.web.bind.anno
 public class RegionWidgetController {
 	
 	private RegionWidgetService regionWidgetService;
+    private WidgetService widgetService;
 	
 	@Autowired
-	public RegionWidgetController(RegionWidgetService regionWidgetService){
+	public RegionWidgetController(RegionWidgetService regionWidgetService, WidgetService widgetService){
 		this.regionWidgetService = regionWidgetService;
+        this.widgetService = widgetService;
 	}
 
     @RequestMapping(value = {"/api/rest/regionwidget/{regionWidgetId}"}, method = RequestMethod.GET)
     public String  viewRegionWidget(Model model, @PathVariable String regionWidgetId){
     	RegionWidget rw = regionWidgetService.getRegionWidget(regionWidgetId);
+        model.addAttribute(ModelKeys.WIDGET, widgetService.getWidget(rw.getWidgetId()));
         model.addAttribute(ModelKeys.REGION_WIDGET, rw);
     	return ViewNames.REGION_WIDGET;
     }

Modified: rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java Fri Oct 12 21:07:09 2012
@@ -21,10 +21,13 @@ 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.springframework.beans.factory.annotation.Autowired;
 
 import javax.servlet.jsp.JspException;
 
@@ -34,6 +37,7 @@ import javax.servlet.jsp.JspException;
 public class RegionWidgetTag extends AbstractContextAwareSingletonBeanDependentTag<RenderService> {
 
     private RegionWidget regionWidget;
+    private Widget widget;
     
     private static final String REGISTER_DISABLED_WIDGET_KEY = "disabledRegisterWidget";
 
@@ -45,6 +49,7 @@ public class RegionWidgetTag extends Abs
             " collapsed: %4$s," +
             " widgetId: %5$s});</script>";
 
+    @Autowired
     public RegionWidgetTag() {
         super(RenderService.class);
     }
@@ -57,6 +62,14 @@ public class RegionWidgetTag extends Abs
         this.regionWidget = regionWidget;
     }
 
+    public Widget getWidget() {
+        return widget;
+    }
+
+    public void setWidget(Widget widget) {
+        this.widget = widget;
+    }
+
     /**
      * Delegates rendering of the RegionWidget to the RenderService
      *
@@ -66,22 +79,26 @@ public class RegionWidgetTag extends Abs
     @Override
     public int doStartTag() throws JspException {
 
-        if (regionWidget != null && getBean().getSupportedWidgetTypes().contains(regionWidget.getWidget().getType()) ) {
-            if ( regionWidget.getWidget().isDisableRendering() ) {
+        if (regionWidget == null) {
+            throw new JspException("RegionWidget not set: " + regionWidget);
+        }
+
+        if (widget != null && getBean().getSupportedWidgetTypes().contains(widget.getType()) ) {
+            if ( widget.isDisableRendering() ) {
                 ScriptManager scriptManager = getBeanFromContext(ScriptManager.class);
                 String widgetScript = String.format(DISABLED_SCRIPT_BLOCK, regionWidget.getRegion().getId(),
                         regionWidget.getId(),
-                        StringEscapeUtils.escapeJavaScript(regionWidget.getWidget().getDisableRenderingMessage()),
+                        StringEscapeUtils.escapeJavaScript(widget.getDisableRenderingMessage()),
                         regionWidget.isCollapsed(),
-                        regionWidget.getWidget().getId());
-                String key = REGISTER_DISABLED_WIDGET_KEY + "-" + regionWidget.getWidget().getId();
+                        widget.getId());
+                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()));
             }
         }
         else {
-                throw new JspException("Unsupported regionWidget type or regionWidget not set: " + regionWidget);
+                throw new JspException("Unsupported regionWidget type: " + regionWidget);
         }
         //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

Modified: rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld Fri Oct 12 21:07:09 2012
@@ -60,6 +60,12 @@
             <required>true</required>
             <rtexprvalue>true</rtexprvalue>
         </attribute>
+        <attribute>
+            <description>The widget to render</description>
+            <name>widget</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
     </tag>
     <tag>
         <description>Renders a set of script blocks for the current location</description>

Modified: rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java Fri Oct 12 21:07:09 2012
@@ -30,6 +30,7 @@ import org.apache.rave.portal.model.impl
 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.MockHttpUtil;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.ViewNames;
@@ -52,6 +53,7 @@ public class PageControllerTest {
     private PageLayoutService pageLayoutService;
     private PageController pageController;
     private MockHttpServletRequest request;
+    private WidgetService widgetService;
 
     private Model model;
     private Page defaultPage, otherPage;
@@ -72,7 +74,8 @@ public class PageControllerTest {
         userService = createMock(UserService.class);
         pageService = createMock(PageService.class);
         pageLayoutService = createMock(PageLayoutService.class);
-        pageController = new PageController(pageService, userService, pageLayoutService);
+        widgetService = createMock(WidgetService.class);
+        pageController = new PageController(pageService, userService, pageLayoutService, widgetService);
         model = new ExtendedModelMap();
         request = new MockHttpServletRequest();
 

Modified: rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java Fri Oct 12 21:07:09 2012
@@ -39,6 +39,7 @@ import org.apache.rave.portal.model.impl
 import org.apache.rave.portal.model.impl.UserImpl;
 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.model.UserForm;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.ViewNames;
@@ -57,6 +58,7 @@ public class ProfileControllerTest {
 
 	private UserService userService;
 	private PageService pageService;
+    private WidgetService widgetService;
 
     private Page defaultPage, otherPage;
     private List<Page> allProfilePages;
@@ -72,7 +74,8 @@ public class ProfileControllerTest {
 	public void setup() {
 		userService = createMock(UserService.class);
 		pageService = createMock(PageService.class);
-		profileController = new ProfileController(userService, pageService);
+        widgetService = createMock(WidgetService.class);
+		profileController = new ProfileController(userService, pageService, widgetService);
 
         validPageLayout = new PageLayoutImpl();
         validPageLayout.setCode(VALID_PAGE_LAYOUT_CODE);
@@ -95,7 +98,7 @@ public class ProfileControllerTest {
 		//creating a mock user
 		final UserImpl user = new UserImpl();
 		final ModelMap model = new ModelMap();
-		final int modelSize = 4;
+		final int modelSize = 5;
 		final String username="canonical";
         user.setUsername(username);
         user.setId(USER_ID);
@@ -136,7 +139,7 @@ public class ProfileControllerTest {
 		//creating a mock user
 		final UserImpl user = new UserImpl();
 		final ModelMap model = new ModelMap();
-		final int modelSize = 4;
+		final int modelSize = 5;
 		final String username="canonical";
         user.setUsername(username);
         user.setId(USER_ID);

Modified: rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java Fri Oct 12 21:07:09 2012
@@ -24,6 +24,7 @@ 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;
@@ -84,8 +85,8 @@ public class RegionWidgetTagTest {
     @Test
     public void doStartTag_valid() throws IOException, JspException {
         RegionWidget regionWidget = new RegionWidgetImpl();
-        WidgetImpl widget = new WidgetImpl();
-        regionWidget.setWidget(widget);
+        WidgetImpl widget = new WidgetImpl("8");
+        regionWidget.setWidgetId(widget.getId());
         widget.setType(WIDGET_TYPE);
 
         Set<String> strings = new HashSet<String>();
@@ -104,6 +105,7 @@ public class RegionWidgetTagTest {
         replay(pageContext);
 
         tag.setRegionWidget(regionWidget);
+        tag.setWidget(widget);
         int result = tag.doStartTag();
         assertThat(result, is(equalTo(1)));
         verify(writer);
@@ -120,8 +122,8 @@ public class RegionWidgetTagTest {
     public void doStartTag_IOException() throws JspException, IOException {
 
         RegionWidget regionWidget = new RegionWidgetImpl();
-        WidgetImpl widget = new WidgetImpl();
-        regionWidget.setWidget(widget);
+        WidgetImpl widget = new WidgetImpl("8");
+        regionWidget.setWidgetId(widget.getId());
         widget.setType("INVALID");
 
         Set<String> strings = new HashSet<String>();
@@ -147,8 +149,8 @@ public class RegionWidgetTagTest {
 
         RegionWidget regionWidget = new RegionWidgetImpl();
         Region region = new RegionImpl("25");
-        WidgetImpl widget = new WidgetImpl();
-        regionWidget.setWidget(widget);
+        WidgetImpl widget = new WidgetImpl("8");
+        regionWidget.setWidgetId(widget.getId());
         regionWidget.setRegion(region);
         widget.setType("INVALID");
 
@@ -159,6 +161,7 @@ public class RegionWidgetTagTest {
         replay(service);
 
         tag.setRegionWidget(regionWidget);
+        tag.setWidget(widget);
         tag.doStartTag();
     }
 
@@ -172,7 +175,7 @@ public class RegionWidgetTagTest {
         widget.setDisableRenderingMessage(DISABLED_WIDGET_MESSAGE);
 
         RegionWidget regionWidget = new RegionWidgetImpl("99");
-        regionWidget.setWidget(widget);
+        regionWidget.setWidgetId(widget.getId());
         regionWidget.setRegion(new RegionImpl("2"));
 
         Set<String> strings = new HashSet<String>();
@@ -188,6 +191,7 @@ public class RegionWidgetTagTest {
         replay(pageContext, writer);
 
         tag.setRegionWidget(regionWidget);
+        tag.setWidget(widget);
         int result = tag.doStartTag();
         assertThat(result, is(equalTo(1)));
         verify(writer);

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_1.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_1.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_1.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_1.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2wn.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2wn.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2wn.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_2wn.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3_newuser.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3_newuser.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3_newuser.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3_newuser.jsp Fri Oct 12 21:07:09 2012
@@ -27,10 +27,10 @@
 <div class="columns_3_newuser_widgets">
     <div class="columns_3_newuser_subtitle"><fmt:message key="page.layout.newuser.subtitle"/></div>
     <div class="widgetRow upperRow">
-        <rave:region region="${page.regions[0]}" regionIdx="1" />
-        <rave:region region="${page.regions[1]}" regionIdx="2" />
+        <rave:region region="${page.regions[0]}" regionIdx="1" widgets="${widgets}" />
+        <rave:region region="${page.regions[1]}" regionIdx="2" widgets="${widgets}" />
     </div>
     <div class="widgetRow bottomRow">
-        <rave:region region="${page.regions[2]}" regionIdx="3" />
+        <rave:region region="${page.regions[2]}" regionIdx="3" widgets="${widgets}" />
     </div>
 </div>
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn_1_bottom.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn_1_bottom.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn_1_bottom.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_3nwn_1_bottom.jsp Fri Oct 12 21:07:09 2012
@@ -19,11 +19,11 @@
   --%>
 
 <div class="widgetRow upperRow">
-    <rave:region region="${page.regions[0]}" regionIdx="1" />
-    <rave:region region="${page.regions[1]}" regionIdx="2" />
-    <rave:region region="${page.regions[2]}" regionIdx="3" />
+    <rave:region region="${page.regions[0]}" regionIdx="1" widgets="${widgets}" />
+    <rave:region region="${page.regions[1]}" regionIdx="2" widgets="${widgets}" />
+    <rave:region region="${page.regions[2]}" regionIdx="3" widgets="${widgets}" />
 </div>
 
 <div class="widgetRow bottomRow">
-    <rave:region region="${page.regions[3]}" regionIdx="4" />
+    <rave:region region="${page.regions[3]}" regionIdx="4" widgets="${widgets}" />
 </div>
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_4.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_4.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_4.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/columns_4.jsp Fri Oct 12 21:07:09 2012
@@ -18,4 +18,4 @@
   ~ under the License.
   --%>
 
-<rave:simple_regions page="${page}" />
\ No newline at end of file
+<rave:simple_regions page="${page}" widgets="${widgets}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/person_profile.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/person_profile.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/person_profile.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/layouts/person_profile.jsp Fri Oct 12 21:07:09 2012
@@ -30,7 +30,7 @@
     <c:forEach var="subPage" items="${subPages}" varStatus="subPageStatus">
         <div class="tab-pane" id="tab-${subPage.id}">
             <c:forEach var="subPageRegion" items="${subPage.regions}" varStatus="subPageRegionStatus">
-                <rave:region region="${subPageRegion}" regionIdx="${subPageRegionStatus.count}" />
+                <rave:region region="${subPageRegion}" regionIdx="${subPageRegionStatus.count}" widgets="${widgets}" />
             </c:forEach>
             <div class="clear-float">&nbsp;</div>
         </div>

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp Fri Oct 12 21:07:09 2012
@@ -23,6 +23,7 @@
 <jsp:useBean id="pages" type="java.util.List<org.apache.rave.portal.model.Page>" scope="request"/>
 <jsp:useBean id="pageUser" type="org.apache.rave.portal.model.PageUser" scope="request"/>
 <jsp:useBean id="pageLayouts" type="java.util.List<org.apache.rave.portal.model.JpaPageLayout>" scope="request"/>
+
 <%--@elvariable id="page" type="org.apache.rave.portal.model.Page"--%>
 <sec:authentication property="principal.id" var="principalId" scope="request"/>
 <sec:authentication property="principal.username" var="principleUsername" scope="request"/>

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp Fri Oct 12 21:07:09 2012
@@ -172,7 +172,7 @@
             <div>
                 <%-- render the person profile parent page region/widgets --%>
                 <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>
         </div>

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/regionwidget.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/regionwidget.jsp?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/regionwidget.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/regionwidget.jsp Fri Oct 12 21:07:09 2012
@@ -21,5 +21,5 @@
 <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
 <fmt:setBundle basename="messages"/>
 <%--@elvariable id="regionWidget" type="org.apache.rave.portal.model.RegionWidget"--%>
-<rave:region_widget regionWidget="${regionWidget}"/>
+<rave:region_widget regionWidget="${regionWidget}" widget="${widget}"/>
 <portal:render-script location="${'AFTER_RAVE'}" />
\ No newline at end of file

Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag?rev=1397721&r1=1397720&r2=1397721&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag Fri Oct 12 21:07:09 2012
@@ -25,6 +25,7 @@ Template for rendering a Region on a pag
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
 <%@ attribute name="region" type="org.apache.rave.portal.model.Region" required="true" description="The region object" %>
+<%@ attribute name="widgets" type="java.util.List" required="true" description="The Widget object" %>
 <%@ attribute name="regionIdx" required="true" description="The regionIdx" %>
 
 <fmt:setBundle basename="messages"/>
@@ -32,6 +33,10 @@ Template for rendering a Region on a pag
 <%--@elvariable id="region" type="org.apache.rave.portal.model.Region"--%>
 <div class="region<c:if test="${region.locked || pageUser.editor == false}"> region-locked</c:if> <c:out value="${region.page.pageLayout.code}"/>_${regionIdx} regionNonDragging" id="region-${region.id}-id">
     <c:forEach var="regionWidget" items="${region.regionWidgets}">
-        <rave:region_widget regionWidget="${regionWidget}"/>
+        <c:forEach var="widget" items="${widgets}">
+            <c:if test="${regionWidget.widgetId == widget.id}">
+                <rave:region_widget regionWidget="${regionWidget}" widget="${widget}"/>
+            </c:if>
+        </c:forEach>
     </c:forEach>
 </div>