Author: ard
Date: Tue Sep 11 12:45:18 2012
New Revision: 1383385

URL: http://svn.apache.org/viewvc?rev=1383385&view=rev
Log:
RAVE-695 added unit tests that verifies the behavior now implemented by the 
XmlPagesConfigManagerTest : It removes duplicate ROOT PageFragment's, but not 
for children

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/main/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManager.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/JaxbMappingsTest.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManagerTest.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/sameNameSiblings.xml
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/xml-pages-config-manager-test.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=1383385&r1=1383384&r2=1383385&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 12:45:18 2012
@@ -30,6 +30,12 @@ package org.apache.rave.portal.web.mvc.c
  *  {@link Route} and {@link PageFragment}s and about the enhancement like 
resolving
  *  the <code>extend</code> logic of the {@link PageFragment}s and {@link 
PageFragment}s of the
  * </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}
+ *    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>
  */
 public class EnhancedPagesConfigManager implements PagesConfigManager {
 

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManager.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManager.java?rev=1383385&r1=1383384&r2=1383385&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManager.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManager.java
 Tue Sep 11 12:45:18 2012
@@ -43,7 +43,11 @@ import org.springframework.core.io.Resou
 import org.springframework.core.io.ResourceLoader;
 
 /**
- * @version "$Id$"
+ * This {@link XmlPagesConfigManager} loads its page and route definitions 
from XML files. Although the xml configuration
+ * can contain same name siblings for <strong>ROOT</strong> {@link 
PageFragment}s, this {@link XmlPagesConfigManager}
+ * returns only <string>non</string> same name siblings for {@link 
org.apache.rave.portal.web.mvc.config.PagesConfig#getPages()}
+ * Duplicates are removed with a warning. Descendant {@link PageFragment}s for 
a root {@link PageFragment} can still
+ * contains SNS children
  */
 public class XmlPagesConfigManager implements PagesConfigManager, 
ResourceLoaderAware {
 
@@ -128,7 +132,11 @@ public class XmlPagesConfigManager imple
             }
             Map<String, PageFragment> pageDefinitionMap = new HashMap<String, 
PageFragment>();
             for (PageFragment pd : pageDefinitions.getPageFragments()) {
-                pageDefinitionMap.put(pd.getName(), pd);
+                PageFragment sns = pageDefinitionMap.put(pd.getName(), pd);
+                if (sns != null) {
+                    log.warn("Same name sibling root pageFragment '{}' found. 
SNS fragments are not allowed. This fragment" +
+                            " is removed from the page definitions.", 
sns.toString());
+                }
             }
             log.info("Loading configuration: {}", routesPath);
             InputStream is = null;

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/JaxbMappingsTest.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/JaxbMappingsTest.java?rev=1383385&r1=1383384&r2=1383385&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/JaxbMappingsTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/JaxbMappingsTest.java
 Tue Sep 11 12:45:18 2012
@@ -30,6 +30,7 @@ import org.apache.rave.portal.web.mvc.co
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -87,7 +88,7 @@ public class JaxbMappingsTest {
                 
assertEquals("org.apache.rave.unittest.NonExistingController",sub2sub1.getController());
                 assertNull(sub2sub1.getExtends());
                 assertNull(sub2sub1.getViewName());
-                assertNull(sub2sub1.getChildren());
+                assertNull(sub2sub1.getChildren());assertEquals("default", 
xmlPageDefinitions.getName());
             }
             
             /*
@@ -159,6 +160,30 @@ public class JaxbMappingsTest {
         final PageFragment fragment2 = 
xmlPageDefinitions.getPageFragments().get(0);
         assertTrue(fragment1.getName().equals(fragment2.getName()));
     }
+    
+    @Test 
+    public void testAbstractPageDefinition() {
+        String testSrc = "abstractPageDefinition.xml";
+        final XmlPageDefinitions xmlPageDefinitions = 
loadPageConfiguration(testSrc);
+        assertNotNull(xmlPageDefinitions);
+        assertEquals("default", xmlPageDefinitions.getName());
+        assertEquals(3, xmlPageDefinitions.getPageFragments().size());
+
+        final PageFragment abstractFrag = 
xmlPageDefinitions.getPageFragments().get(0);
+        assertEquals("abstract", abstractFrag.getName());
+        assertTrue(abstractFrag.isAbstract());
+
+
+        final PageFragment nonAbstract1 = 
xmlPageDefinitions.getPageFragments().get(1);
+        assertEquals("non-abstract1", nonAbstract1.getName());
+        assertFalse(nonAbstract1.isAbstract());
+
+        final PageFragment nonAbstract2 = 
xmlPageDefinitions.getPageFragments().get(2);
+        assertEquals("non-abstract2", nonAbstract2.getName());
+        assertFalse(nonAbstract2.isAbstract());
+    }
+
+
 
     public static XmlPageDefinitions loadPageConfiguration(String configPath) {
         InputStream is = null;

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManagerTest.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManagerTest.java?rev=1383385&r1=1383384&r2=1383385&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManagerTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/xml/XmlPagesConfigManagerTest.java
 Tue Sep 11 12:45:18 2012
@@ -11,6 +11,9 @@ import org.springframework.test.context.
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 @RunWith(SpringJUnit4ClassRunner.class)
 
@ContextConfiguration({"classpath:config/xml/xml-pages-config-manager-test.xml"})
@@ -24,5 +27,49 @@ public class XmlPagesConfigManagerTest {
         XmlPagesConfigManager xmlPagesConfigManager = 
(XmlPagesConfigManager)applicationContext.getBean("singleXmlPagesConfigManager");
         final Map<String,PageFragment> pages = 
xmlPagesConfigManager.getConfig().getPages();
         assertEquals(1, pages.size());
+        assertNotNull(pages.get("top"));
+        assertFalse(pages.get("top").isAbstract());
+    }
+
+
+    @Test
+    public void abstractXmlPagesConfigManager() throws Exception {
+        XmlPagesConfigManager xmlPagesConfigManager = 
(XmlPagesConfigManager)applicationContext.getBean("abstractXmlPagesConfigManager");
+        final Map<String,PageFragment> pages = 
xmlPagesConfigManager.getConfig().getPages();
+        assertEquals(3, pages.size());
+        assertTrue(pages.get("abstract").isAbstract());
+        assertFalse(pages.get("non-abstract1").isAbstract());
+        assertFalse(pages.get("non-abstract2").isAbstract());
+    }
+
+    @Test
+    public void snsXmlPagesConfigManager() throws Exception {
+        XmlPagesConfigManager xmlPagesConfigManager = 
(XmlPagesConfigManager)applicationContext.getBean("snsXmlPagesConfigManager");
+        // there are two ROOT pageFragments with name="top" and two ROOT 
fragments with name="news"
+        // ROOT fragments are merged.
+        final Map<String,PageFragment> pages = 
xmlPagesConfigManager.getConfig().getPages();
+        assertEquals(2, pages.size());
+        assertNotNull(pages.get("top"));
+        assertNotNull(pages.get("news"));
+
+        PageFragment top = pages.get("top");
+        // because the xml is as follows:
+        //    <pageFragment name="top" description="Page that is being 
extended by other pages"
+        //    controller="org.apache.rave.unittest.NonExistingController">
+        //      <pageFragment name="sub" />
+        //      <pageFragment name="sub" />
+        //      <pageFragment name="sub" />
+        //    </pageFragment>
+        //
+        //    <pageFragment name="top" description="Page that is being 
extended by other pages"
+        //    controller="org.apache.rave.unittest.NonExistingController">
+        //      <pageFragment name="sub" />
+        //      <pageFragment name="sub" />
+        //    </pageFragment>
+        //
+        // only the SECOND pageFragment will be kept because root page 
fragment SNS are already removed. The second has
+        // two SNS subs. These we still expect. Thus 2 subs and not 3
+
+        assertEquals(2, top.getChildren().size());
     }
 }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/sameNameSiblings.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/sameNameSiblings.xml?rev=1383385&r1=1383384&r2=1383385&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/sameNameSiblings.xml
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/sameNameSiblings.xml
 Tue Sep 11 12:45:18 2012
@@ -29,10 +29,9 @@
                    controller="org.apache.rave.unittest.NonExistingController">
     <pageFragment name="sub" />
     <pageFragment name="sub" />
-    <pageFragment name="sub" />
   </pageFragment>
 
-  <pageFragment name="fragment" />
-  <pageFragment name="fragment" />
+  <pageFragment name="news" />
+  <pageFragment name="news" />
 
 </pageDefinitions>
\ No newline at end of file

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/xml-pages-config-manager-test.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/xml-pages-config-manager-test.xml?rev=1383385&r1=1383384&r2=1383385&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/xml-pages-config-manager-test.xml
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/xml/xml-pages-config-manager-test.xml
 Tue Sep 11 12:45:18 2012
@@ -25,6 +25,12 @@
     <property name="pageDefinitionsPath" 
value="classpath:config/xml/singlePageDefinition.xml"/>
   </bean>
 
+
+  <bean id="abstractXmlPagesConfigManager" 
class="org.apache.rave.portal.web.mvc.config.xml.XmlPagesConfigManager">
+    <property name="routesPath" value="classpath:routes.xml"/>
+    <property name="pageDefinitionsPath" 
value="classpath:config/xml/abstractPageDefinition.xml"/>
+  </bean>
+
   <bean id="snsXmlPagesConfigManager" 
class="org.apache.rave.portal.web.mvc.config.xml.XmlPagesConfigManager">
     <property name="routesPath" value="classpath:routes.xml"/>
     <property name="pageDefinitionsPath" 
value="classpath:config/xml/sameNameSiblings.xml"/>


Reply via email to