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"/>


Reply via email to