Author: ard
Date: Tue Sep 11 14:42:10 2012
New Revision: 1383436
URL: http://svn.apache.org/viewvc?rev=1383436&view=rev
Log:
RAVE-697 initial pageFragment enhancers and added unit tests
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManager.java
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/noExtensionsPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/singlePageExtensionPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/abstractPageDefinition.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/singlePageDefinition.xml
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManager.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManager.java?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManager.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManager.java
Tue Sep 11 14:42:10 2012
@@ -18,6 +18,16 @@
*/
package org.apache.rave.portal.web.mvc.config;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.rave.portal.web.mvc.config.enhancers.PagesConfigEnhancer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* <p>
* This {@link EnhancedPagesConfigManager} is about enhancing and validating
{@link PageFragment}s and {@link PagesConfig}s.
@@ -32,26 +42,89 @@ package org.apache.rave.portal.web.mvc.c
* </p>
* <p>
* The returned {@link PagesConfig} returns for {@link
org.apache.rave.portal.web.mvc.config.PagesConfig#getPages()}
- * only {@link PageFragment}s that are <strong>entirely</strong> concreet :
In other words, wheew the {@link PageFragment}
+ * only {@link PageFragment}s that are <strong>entirely</strong> concrete :
In other words, when the {@link PageFragment}
* from the backing <code>delegatee</code> {@link PagesConfigManager} can
be abstract or one of its descendants,
* this cannot be the case for the {@link PageFragment}s returned from this
{@link EnhancedPagesConfigManager}.
* </p>
+ * <p>
+ * Also, this {@link EnhancedPagesConfigManager} won't return any SAME
NAME SIBLINGS for the
+ * {@link org.apache.rave.portal.web.mvc.config.PagesConfig#getPages()} :
Thus, the entire {@link PageFragment}
+ * composite structure won't have any children with duplicate names {@link
org.apache.rave.portal.web.mvc.config.PageFragment#getName()}
+ *
+ * </p>
*/
public class EnhancedPagesConfigManager implements PagesConfigManager {
+
+ private final static Logger log =
LoggerFactory.getLogger(EnhancedPagesConfigManager.class);
+
private PagesConfigManager delegatee;
+ private List<PagesConfigEnhancer> enhancers;
+
public EnhancedPagesConfigManager(PagesConfigManager delegatee) {
this.delegatee = delegatee;
}
+ public void setEnhancers(final List<PagesConfigEnhancer> enhancers) {
+ this.enhancers = enhancers;
+ }
+
@Override
public PagesConfig getConfig() throws InvalidConfigurationException {
- return delegatee.getConfig();
+ if (enhancers == null) {
+ return delegatee.getConfig();
+ }
+
+ PagesConfig config = delegatee.getConfig();
+ for (PagesConfigEnhancer enhancer : enhancers) {
+ config = enhancer.enhance(config);
+ }
+ return config;
}
@Override
public long lastModified() {
return delegatee.lastModified();
}
+
+
+
+ public class PageFragmentImpl implements PageFragment {
+
+ @Override
+ public String getViewName() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public String getName() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public String getDescription() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public String getController() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public String getExtends() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public boolean isAbstract() {
+ return false; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ @Override
+ public List<PageFragment> getChildren() {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+ }
}
\ No newline at end of file
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
Tue Sep 11 14:42:10 2012
@@ -54,6 +54,27 @@ public class EnhancedPagesConfigManagerT
assertEquals(3, pageDefinition.getChildren().size());
}
+ @Test
+ public void snsEnhancedPageRoutesManager() throws Exception {
+
+ EnhancedPagesConfigManager snsRemovedEnhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("snsRemovingEnhancedPagesConfigManager");
+
+ final Map<String,PageFragment> pages =
snsRemovedEnhancedPagesConfigManager.getConfig().getPages();
+ // although two root pageFragments with name 'top' we only expect one
of them (the second!)
+ assertEquals(1, pages.size());
+
+ final PageFragment pageDefinition = pages.get("top");
+ assertEquals("top", pageDefinition.getName());
+
+
+ // the second TOP pageFragment contains TWO fragments with name 'sub'
: Since the snsRemovingEnhancedPagesConfigManager
+ // does contain the needed SNS remover enhancer, we now expect NO SNS
PageFragments
+ assertEquals(1, pageDefinition.getChildren().size());
+ assertEquals("sub", pageDefinition.getChildren().get(0).getName());
+
+
+ }
+
@Test
public void singlePageExtensionPageRoutesManager() throws Exception {
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
Tue Sep 11 14:42:10 2012
@@ -20,6 +20,15 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
+ <bean id="pageEnhancers"
class="org.springframework.beans.factory.config.ListFactoryBean">
+ <property name="sourceList">
+ <list>
+ <bean
class="org.apache.rave.portal.web.mvc.config.enhancers.SnsFragmentsRemoverEnhancer"/>
+ <bean
class="org.apache.rave.portal.web.mvc.config.enhancers.ExtendsEnhancer"/>
+ <bean
class="org.apache.rave.portal.web.mvc.config.enhancers.AbstractFragmentsRemoverEnhancer"/>
+ </list>
+ </property>
+ </bean>
<bean id="noExtensionsEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
<constructor-arg>
@@ -30,6 +39,17 @@
</constructor-arg>
</bean>
+ <bean id="snsRemovingEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+ <constructor-arg>
+ <bean
class="org.apache.rave.portal.web.mvc.config.xml.XmlPagesConfigManager">
+ <property name="routesPath" value="classpath:routes.xml"/>
+ <property name="pageDefinitionsPath"
value="classpath:config/testenhancingmappings/noExtensionsButSNSPageDefinitions.xml"/>
+ </bean>
+ </constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
+ </bean>
+
+
<bean id="singlePageExtensionEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
<constructor-arg>
<bean
class="org.apache.rave.portal.web.mvc.config.xml.XmlPagesConfigManager">
@@ -37,6 +57,7 @@
<property name="pageDefinitionsPath"
value="classpath:config/testenhancingmappings/singlePageExtensionPageDefinitions.xml"/>
</bean>
</constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
</bean>
<bean id="hierarchicalMultiplePageExtensionEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
@@ -46,6 +67,7 @@
<property name="pageDefinitionsPath"
value="classpath:config/hierarchicalMultiplePageExtension.xml"/>
</bean>
</constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
</bean>
<bean id="complexExtensionsEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
@@ -55,6 +77,7 @@
<property name="pageDefinitionsPath"
value="classpath:config/complexExtensionsPageRoutesManager.xml"/>
</bean>
</constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
</bean>
<bean id="recursiveExtensionsEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
@@ -64,6 +87,7 @@
<property name="pageDefinitionsPath"
value="classpath:config/recursiveExtensionsPageRoutesManager.xml"/>
</bean>
</constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
</bean>
<bean id="pageFragmentExtensionsEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
@@ -73,6 +97,7 @@
<property name="pageDefinitionsPath"
value="classpath:config/pageFragmentExtensionsPageRoutesManager.xml"/>
</bean>
</constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
</bean>
</beans>
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/noExtensionsPageDefinitions.xml
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/noExtensionsPageDefinitions.xml?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/noExtensionsPageDefinitions.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/noExtensionsPageDefinitions.xml
Tue Sep 11 14:42:10 2012
@@ -18,9 +18,6 @@
under the License.
-->
<pageDefinitions name="default">
- <!--
- STANDARD PAGE (HAS NO PARENT)
- -->
<pageFragment name="top" description="Page that is being extended by other
pages"
controller="org.apache.rave.unittest.NonExistingController">
<pageFragment name="sub1-nocontroller"/>
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/singlePageExtensionPageDefinitions.xml
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/singlePageExtensionPageDefinitions.xml?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/singlePageExtensionPageDefinitions.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/singlePageExtensionPageDefinitions.xml
Tue Sep 11 14:42:10 2012
@@ -18,9 +18,6 @@
under the License.
-->
<pageDefinitions name="default">
- <!--
- STANDARD PAGE (HAS NO PARENT)
- -->
<pageFragment name="standard" description="Page that is being extended by
other pages"
controller="org.apache.rave.unittest.NonExistingController">
<pageFragment name="sub1-nocontroller"/>
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/abstractPageDefinition.xml
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/abstractPageDefinition.xml?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/abstractPageDefinition.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/abstractPageDefinition.xml
Tue Sep 11 14:42:10 2012
@@ -18,9 +18,6 @@
under the License.
-->
<pageDefinitions name="default">
- <!--
- STANDARD PAGE (HAS NO PARENT)
- -->
<pageFragment abstract="true" name="abstract" description="Page that is
being extended by other pages"
controller="org.apache.rave.unittest.NonExistingController">
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/singlePageDefinition.xml
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/singlePageDefinition.xml?rev=1383436&r1=1383435&r2=1383436&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/singlePageDefinition.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/singlePageDefinition.xml
Tue Sep 11 14:42:10 2012
@@ -18,9 +18,6 @@
under the License.
-->
<pageDefinitions name="default">
- <!--
- STANDARD PAGE (HAS NO PARENT)
- -->
<pageFragment name="top" description="Page that is being extended by other
pages"
controller="org.apache.rave.unittest.NonExistingController">
<pageFragment name="sub1-nocontroller"/>