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