Repository: rave Updated Branches: refs/heads/master cba342cff -> b39c6a123
RAVE-1275 | Ability to set properties on regions in a page template and have them show up in the derived page Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/0c1ee0e8 Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/0c1ee0e8 Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/0c1ee0e8 Branch: refs/heads/master Commit: 0c1ee0e898905b36a5afa1026b78b922609c469b Parents: aab1719 Author: Stanton Sievers <[email protected]> Authored: Mon Aug 11 13:42:49 2014 -0400 Committer: Stanton Sievers <[email protected]> Committed: Mon Aug 11 13:42:49 2014 -0400 ---------------------------------------------------------------------- .../org/apache/rave/model/PageTemplateRegion.java | 16 ++++++++++++++++ .../main/java/org/apache/rave/model/Region.java | 17 +++++++++++++++++ .../java/org/apache/rave/rest/model/Region.java | 12 ++++++++++++ .../portal/model/impl/PageTemplateRegionImpl.java | 12 ++++++++++++ .../apache/rave/portal/model/impl/RegionImpl.java | 12 ++++++++++++ .../java/org/apache/rave/portal/util/PageUtil.java | 1 + .../rave/portal/model/JpaPageTemplateRegion.java | 12 ++++++++++++ .../org/apache/rave/portal/model/JpaRegion.java | 12 ++++++++++++ .../conversion/impl/MongoDbPageConverter.java | 1 + .../impl/MongoDbPageTemplateConverterTest.java | 13 ++++++++++++- .../renderer/OpenSocialWidgetWrapperRenderer.java | 6 ++++-- .../web/renderer/OpenSocialWidgetRendererTest.java | 7 +++++-- 12 files changed, 116 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateRegion.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateRegion.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateRegion.java index 0a4f5ad..9ea89a8 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateRegion.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/PageTemplateRegion.java @@ -20,6 +20,7 @@ package org.apache.rave.model; import javax.xml.bind.annotation.XmlTransient; import java.util.List; +import java.util.Map; /** */ @@ -44,4 +45,19 @@ public interface PageTemplateRegion { void setLocked(boolean locked); + /** + * Generic property bag for extension of the region 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/0c1ee0e8/rave-components/rave-core-api/src/main/java/org/apache/rave/model/Region.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/Region.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/Region.java index 93b0a1f..37fe534 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/model/Region.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/model/Region.java @@ -20,6 +20,7 @@ package org.apache.rave.model; import javax.xml.bind.annotation.XmlTransient; import java.util.List; +import java.util.Map; @XmlTransient public interface Region { @@ -40,4 +41,20 @@ public interface Region { boolean isLocked(); void setLocked(boolean locked); + + /** + * Generic property bag for extension of the region 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/0c1ee0e8/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Region.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Region.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Region.java index 0d347bc..377b4a2 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Region.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Region.java @@ -22,6 +22,8 @@ package org.apache.rave.rest.model; import javax.xml.bind.annotation.*; import java.util.ArrayList; import java.util.List; +import java.util.Map; + @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Region", propOrder = { "locked", "regionWidgets" @@ -35,6 +37,8 @@ public class Region implements RestEntity{ @XmlElementWrapper(name = "regionWidgets") @XmlElement(name="RegionWidget") private List<RegionWidget> regionWidgets; + @XmlElement(name = "properties") + private Map<String, Object> properties; public Region() { } @@ -68,6 +72,14 @@ public class Region implements RestEntity{ this.regionWidgets = regionWidgets; } + public Map<String, Object> getProperties() { + return this.properties; + } + + public void setProperties(Map<String, Object> properties) { + this.properties = properties; + } + private List<RegionWidget> createRegionWidgets(org.apache.rave.model.Region source) { List<RegionWidget> created = null; List<org.apache.rave.model.RegionWidget> widgets = source.getRegionWidgets(); http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateRegionImpl.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateRegionImpl.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateRegionImpl.java index 312bd98..df733e8 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateRegionImpl.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PageTemplateRegionImpl.java @@ -23,6 +23,7 @@ import org.apache.rave.model.PageTemplateRegion; import org.apache.rave.model.PageTemplateWidget; import java.util.List; +import java.util.Map; public class PageTemplateRegionImpl implements PageTemplateRegion { private String id; @@ -30,6 +31,7 @@ public class PageTemplateRegionImpl implements PageTemplateRegion { private PageTemplate pageTemplate; private List<PageTemplateWidget> pageTemplateWidgets; private boolean locked; + private Map<String, Object> properties; public PageTemplateRegionImpl() { @@ -80,6 +82,16 @@ public class PageTemplateRegionImpl implements PageTemplateRegion { } @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 PageTemplateRegionImpl)) return false; http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionImpl.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionImpl.java b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionImpl.java index 31f0c13..962fb80 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionImpl.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/RegionImpl.java @@ -24,6 +24,7 @@ import org.apache.rave.model.RegionWidget; import com.fasterxml.jackson.annotation.JsonBackReference; import java.util.List; +import java.util.Map; public class RegionImpl implements Region { private String id; @@ -31,6 +32,7 @@ public class RegionImpl implements Region { private Boolean locked = false; private Integer renderOrder = 0; private List<RegionWidget> regionWidgets; + private Map<String, Object> properties; public RegionImpl() { @@ -97,6 +99,16 @@ public class RegionImpl implements Region { } @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 RegionImpl)) return false; http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/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 ee8037d..93244ba 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 @@ -82,6 +82,7 @@ public class PageUtil { region.setPage(page); region.setLocked(ptr.isLocked()); region.setRegionWidgets(convertWidgets(ptr.getPageTemplateWidgets(), region, createIds)); + region.setProperties(ptr.getProperties()); regions.add(region); } return regions; http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateRegion.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateRegion.java b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateRegion.java index c6048b4..349320b 100644 --- a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateRegion.java +++ b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPageTemplateRegion.java @@ -19,6 +19,7 @@ package org.apache.rave.portal.model; +import com.google.common.collect.Maps; import org.apache.rave.model.PageTemplate; import org.apache.rave.model.PageTemplateRegion; import org.apache.rave.model.PageTemplateWidget; @@ -29,6 +30,7 @@ import javax.persistence.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Map; @Entity @Table(name = "page_template_region") @@ -127,4 +129,14 @@ public class JpaPageTemplateRegion implements BasicEntity, Serializable, PageTem public void setLocked(boolean locked) { this.locked = locked; } + + @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/0c1ee0e8/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java index 9ad1887..823b68b 100644 --- a/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java +++ b/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaRegion.java @@ -19,6 +19,7 @@ package org.apache.rave.portal.model; import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.google.common.collect.Maps; import org.apache.rave.model.Page; import org.apache.rave.model.Region; import org.apache.rave.model.RegionWidget; @@ -33,6 +34,7 @@ import javax.xml.bind.annotation.XmlElement; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * A region of a page, which can contain widget instances {@link RegionWidget} @@ -193,6 +195,16 @@ public class JpaRegion implements BasicEntity, Serializable, Region { } @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/0c1ee0e8/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java b/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java index 04ffaef..63b94fa 100644 --- a/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java +++ b/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java @@ -169,6 +169,7 @@ public class MongoDbPageConverter implements HydratingModelConverter<Page, Mongo String regionId = region.getId() == null ? generateId() : region.getId(); Region converted = new RegionImpl(regionId, null, region.getRenderOrder()); converted.setLocked(region.isLocked()); + converted.setProperties(region.getProperties()); if (region.getRegionWidgets() != null) { List<RegionWidget> convertedWidgets = Lists.newArrayList(); for (RegionWidget widget : region.getRegionWidgets()) { http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageTemplateConverterTest.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageTemplateConverterTest.java b/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageTemplateConverterTest.java index ae19bb4..cd5c0d1 100644 --- a/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageTemplateConverterTest.java +++ b/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageTemplateConverterTest.java @@ -30,6 +30,7 @@ import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import static org.easymock.EasyMock.*; import static org.hamcrest.CoreMatchers.*; @@ -200,7 +201,17 @@ public class MongoDbPageTemplateConverterTest { public void setLocked(boolean locked) { //To change body of implemented methods use File | Settings | File Templates. } - }; + + @Override + public Map<String, Object> getProperties() { + return null; + } + + @Override + public void setProperties(Map<String, Object> properties) { + + } + }; } @Test http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/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 04aa618..c128516 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 @@ -76,7 +76,8 @@ public class OpenSocialWidgetWrapperRenderer implements RegionWidgetWrapperRende " locked: %10$s," + " hideChrome: %11$s," + " subPage: {id: %12$s, name: '%13$s', isDefault: %14$s}," + - " properties: %15$s" + + " properties: %15$s," + + " regionProperties: %16$s," + "})});</script>"; private static final String MARKUP = "<!-- RegionWidget '%1$s' placeholder -->"; @@ -157,7 +158,8 @@ public class OpenSocialWidgetWrapperRenderer implements RegionWidgetWrapperRende pageId, pageName, isDefault, - JsonUtils.stringify(widget.getProperties()) + JsonUtils.stringify(widget.getProperties()), + JsonUtils.stringify(item.getRegion().getProperties()), ); } http://git-wip-us.apache.org/repos/asf/rave/blob/0c1ee0e8/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 b81e108..d113278 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 @@ -103,6 +103,7 @@ public class OpenSocialWidgetRendererTest { props.put("foo","bar"); Region region = new RegionImpl(REGION_ID); + region.setProperties(ImmutableMap.<String, Object>of("regionFoo", "regionBar")); region.setPage(subPage); RegionWidget rw = new RegionWidgetImpl(REGION_WIDGET_ID); rw.setCollapsed(VALID_COLLAPSED); @@ -127,7 +128,8 @@ public class OpenSocialWidgetRendererTest { " locked: " + VALID_LOCKED + "," + " hideChrome: " + VALID_HIDE_CHROME + "," + " subPage: {id: '" + VALID_SUBPAGE_ID + "', name: '" + VALID_SUBPAGE_NAME + "', isDefault: " + VALID_IS_DEFAULT_SUBPAGE + "}," + - " properties: {\"foo\":\"bar\"}" + + " properties: {\"foo\":\"bar\"}," + + " regionProperties: {\"regionFoo\":\"regionBar\"}," + "})" + "});</script>"; @@ -178,7 +180,8 @@ public class OpenSocialWidgetRendererTest { " locked: false," + " hideChrome: false," + " subPage: {id: null, name: '', isDefault: false}," + - " properties: null" + + " properties: null," + + " regionProperties: null," + "})" + "});</script>";
