RAVE-1276 | Ability to set properties on page template widgets in a page template and have them show up in the derived page's region widgets
Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/2b91629c Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/2b91629c Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/2b91629c Branch: refs/heads/master Commit: 2b91629c79ee8130a77ee554f29bb177e88597a7 Parents: 0c1ee0e Author: Stanton Sievers <[email protected]> Authored: Mon Aug 11 13:43:57 2014 -0400 Committer: Stanton Sievers <[email protected]> Committed: Mon Aug 11 13:43:57 2014 -0400 ---------------------------------------------------------------------- .../org/apache/rave/model/PageTemplateWidget.java | 17 +++++++++++++++++ .../java/org/apache/rave/model/RegionWidget.java | 17 +++++++++++++++++ .../org/apache/rave/rest/model/RegionWidget.java | 12 ++++++++++++ .../portal/model/impl/PageTemplateWidgetImpl.java | 13 +++++++++++++ .../rave/portal/model/impl/RegionWidgetImpl.java | 12 ++++++++++++ .../java/org/apache/rave/portal/util/PageUtil.java | 1 + .../rave/portal/model/JpaPageTemplateWidget.java | 12 ++++++++++++ .../apache/rave/portal/model/JpaRegionWidget.java | 12 ++++++++++++ .../renderer/OpenSocialWidgetWrapperRenderer.java | 2 ++ .../web/renderer/OpenSocialWidgetRendererTest.java | 4 ++++ 10 files changed, 102 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateWidget.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateWidget.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateWidget.java index 23e7bfb..0b64dfb 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateWidget.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateWidget.java @@ -19,6 +19,7 @@ package org.apache.rave.model; import javax.xml.bind.annotation.XmlTransient; +import java.util.Map; /** */ @@ -46,4 +47,20 @@ public interface PageTemplateWidget { boolean isHideChrome(); void setHideChrome(boolean hideChrome); + + /** + * Generic property bag for extension of the page template widget object. + * + * Rave makes no attempt to understand the shape of properties in the bag. + * + * @return a valid Map of String to JSON Serializable Object. + */ + Map<String, Object> getProperties(); + + /** + * Overrides the current properties with a new set. + * + * @param properties a non-null map of string to JSON serializable objects + */ + void setProperties(Map<String, Object> properties); } http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core-api/src/main/java/org/apache/rave/model/RegionWidget.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/RegionWidget.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/RegionWidget.java index 9fe3e7f..36cb82d 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/RegionWidget.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/RegionWidget.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonBackReference; import javax.xml.bind.annotation.XmlTransient; import java.util.List; +import java.util.Map; @XmlTransient public interface RegionWidget { @@ -60,4 +61,20 @@ public interface RegionWidget { boolean isHideChrome(); void setHideChrome(boolean hideChrome); + + /** + * Generic property bag for extension of the region widget object. + * + * Rave makes no attempt to understand the shape of properties in the bag. + * + * @return a valid Map of String to JSON Serializable Object. + */ + Map<String, Object> getProperties(); + + /** + * Overrides the current properties with a new set. + * + * @param properties a non-null map of string to JSON serializable objects + */ + void setProperties(Map<String, Object> properties); } http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java index cef2499..96451fd 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java @@ -24,6 +24,7 @@ import org.apache.rave.model.RegionWidgetPreference; import javax.xml.bind.annotation.*; import java.util.HashMap; import java.util.List; +import java.util.Map; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "RegionWidget", propOrder = { @@ -52,6 +53,8 @@ public class RegionWidget implements RestEntity{ protected String ownerId; @XmlElement(name = "userPrefs") protected HashMap<String, String> userPrefs; + @XmlElement(name = "properties") + private Map<String,Object> properties; public RegionWidget() { } @@ -64,6 +67,7 @@ public class RegionWidget implements RestEntity{ this.ownerId = widget.getRegion().getPage().getOwnerId(); this.hideChrome = widget.isHideChrome(); this.userPrefs = createPrefs(widget); + this.properties = widget.getProperties(); } public String getId() { @@ -146,6 +150,14 @@ public class RegionWidget implements RestEntity{ this.ownerId = ownerId; } + public Map<String, Object> getProperties() { + return this.properties; + } + + public void setProperties(Map<String, Object> properties) { + this.properties = properties; + } + protected HashMap<String, String> createPrefs(org.apache.rave.model.RegionWidget widget) { HashMap<String, String> created = null; List<RegionWidgetPreference> preferences = widget.getPreferences(); http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java index e7d610a..11898e3 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateWidgetImpl.java @@ -21,6 +21,8 @@ package org.apache.rave.portal.model.impl; import org.apache.rave.model.PageTemplateRegion; import org.apache.rave.model.PageTemplateWidget; +import java.util.Map; + public class PageTemplateWidgetImpl implements PageTemplateWidget { private String id; private PageTemplateRegion pageTemplateRegion; @@ -28,6 +30,7 @@ public class PageTemplateWidgetImpl implements PageTemplateWidget { private String widgetId; private boolean locked; private boolean hideChrome; + private Map<String, Object> properties; public PageTemplateWidgetImpl() { @@ -86,6 +89,16 @@ public class PageTemplateWidgetImpl implements PageTemplateWidget { } @Override + public Map<String, Object> getProperties() { + return this.properties; + } + + @Override + public void setProperties(Map<String, Object> properties) { + this.properties = properties; + } + + @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof PageTemplateWidgetImpl)) return false; http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java index 4d6ac6e..4104b9b 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionWidgetImpl.java @@ -24,6 +24,7 @@ import org.apache.rave.model.RegionWidget; import org.apache.rave.model.RegionWidgetPreference; import java.util.List; +import java.util.Map; public class RegionWidgetImpl implements RegionWidget { private String id; @@ -34,6 +35,7 @@ public class RegionWidgetImpl implements RegionWidget { private List<RegionWidgetPreference> preferences; private Boolean locked = false; private Boolean hideChrome = false; + private Map<String,Object> properties; @JsonBackReference private Region region; @@ -149,6 +151,16 @@ public class RegionWidgetImpl implements RegionWidget { } @Override + public Map<String, Object> getProperties() { + return this.properties; + } + + @Override + public void setProperties(Map<String, Object> properties) { + this.properties = properties; + } + + @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof RegionWidgetImpl)) return false; http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java index 93244ba..c2021f9 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java @@ -111,6 +111,7 @@ public class PageUtil { regionWidget.setHideChrome(ptw.isHideChrome()); regionWidget.setRenderOrder((int) ptw.getRenderSeq()); regionWidget.setWidgetId(ptw.getWidgetId()); + regionWidget.setProperties(ptw.getProperties()); widgets.add(regionWidget); } return widgets; http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java index fbbd6b1..dba1307 100644 --- a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java +++ b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateWidget.java @@ -18,12 +18,14 @@ */ package org.apache.rave.portal.model; +import com.google.common.collect.Maps; import org.apache.rave.model.PageTemplateRegion; import org.apache.rave.model.PageTemplateWidget; import org.apache.rave.portal.model.conversion.JpaConverter; import javax.persistence.*; import java.io.Serializable; +import java.util.Map; @Entity @Table(name= "page_template_widget") @@ -127,4 +129,14 @@ public class JpaPageTemplateWidget implements BasicEntity, Serializable, PageTem public void setHideChrome(boolean hideChrome) { this.hideChrome = hideChrome; } + + @Override + public Map<String, Object> getProperties() { + return Maps.newHashMap(); + } + + @Override + public void setProperties(Map<String, Object> properties) { + // TODO: Implement this + } } http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java index 2ee328d..62f73ff 100644 --- a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java +++ b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegionWidget.java @@ -18,6 +18,7 @@ */ package org.apache.rave.portal.model; +import com.google.common.collect.Maps; import org.apache.rave.model.Region; import org.apache.rave.model.RegionWidget; import org.apache.rave.model.RegionWidgetPreference; @@ -29,6 +30,7 @@ import javax.persistence.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * A widget within a region @@ -262,6 +264,16 @@ public class JpaRegionWidget implements BasicEntity, Serializable, RegionWidget } @Override + public Map<String, Object> getProperties() { + return Maps.newHashMap(); + } + + @Override + public void setProperties(Map<String, Object> properties) { + // TODO: Implement this + } + + @Override public boolean equals(Object obj) { if (obj == null) { return false; http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetWrapperRenderer.java ---------------------------------------------------------------------- diff --git a/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetWrapperRenderer.java b/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetWrapperRenderer.java index c128516..aaf6203 100644 --- a/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetWrapperRenderer.java +++ b/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetWrapperRenderer.java @@ -78,6 +78,7 @@ public class OpenSocialWidgetWrapperRenderer implements RegionWidgetWrapperRende " subPage: {id: %12$s, name: '%13$s', isDefault: %14$s}," + " properties: %15$s," + " regionProperties: %16$s," + + " regionWidgetProperties: %17$s" + "})});</script>"; private static final String MARKUP = "<!-- RegionWidget '%1$s' placeholder -->"; @@ -160,6 +161,7 @@ public class OpenSocialWidgetWrapperRenderer implements RegionWidgetWrapperRende isDefault, JsonUtils.stringify(widget.getProperties()), JsonUtils.stringify(item.getRegion().getProperties()), + JsonUtils.stringify(item.getProperties()) ); } http://git-wip-us.apache.org/repos/asf/rave/blob/2b91629c/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java ---------------------------------------------------------------------- diff --git a/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java b/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java index d113278..30f73e2 100644 --- a/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java +++ b/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java @@ -19,6 +19,7 @@ package org.apache.rave.provider.opensocial.web.renderer; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import org.apache.rave.exception.NotSupportedException; import org.apache.rave.model.*; @@ -114,6 +115,7 @@ public class OpenSocialWidgetRendererTest { rw.setPreferences(Arrays.asList((RegionWidgetPreference) new RegionWidgetPreferenceImpl("1", "color", "blue"), new RegionWidgetPreferenceImpl("1", "speed", "fast"), new RegionWidgetPreferenceImpl("1", null, null))); + rw.setProperties(ImmutableMap.<String, Object>of("rwFoo", "rwBar")); final String markup = "<script>require(['rave'], function(rave){" + @@ -130,6 +132,7 @@ public class OpenSocialWidgetRendererTest { " subPage: {id: '" + VALID_SUBPAGE_ID + "', name: '" + VALID_SUBPAGE_NAME + "', isDefault: " + VALID_IS_DEFAULT_SUBPAGE + "}," + " properties: {\"foo\":\"bar\"}," + " regionProperties: {\"regionFoo\":\"regionBar\"}," + + " regionWidgetProperties: {\"rwFoo\":\"rwBar\"}" + "})" + "});</script>"; @@ -182,6 +185,7 @@ public class OpenSocialWidgetRendererTest { " subPage: {id: null, name: '', isDefault: false}," + " properties: null," + " regionProperties: null," + + " regionWidgetProperties: null" + "})" + "});</script>";
