Author: marijan
Date: Wed Jul  4 11:35:15 2012
New Revision: 1357231

URL: http://svn.apache.org/viewvc?rev=1357231&view=rev
Log:
RAVE-700 Provide basic PageDefinition filesystem storage using json or xml

- allow root fragments to be parent

Modified:
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/model/config/PageConfig.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/model/config/FilePageConfigDaoTest.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/example_configuration.xml

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/model/config/PageConfig.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/model/config/PageConfig.java?rev=1357231&r1=1357230&r2=1357231&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/model/config/PageConfig.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/model/config/PageConfig.java
 Wed Jul  4 11:35:15 2012
@@ -125,10 +125,8 @@ public class PageConfig {
         // initialize fragment kids first and merge parent components 
afterwards
         for (PageFragmentConfig pageFragment : pageFragments) {
             final String fragmentName = pageFragment.getName();
-            PageFragment fragment = new PageFragment(pageFragment.getPath(), 
fragmentName);
+            PageFragment fragment = createFragment(pageFragment);
             mergeFragmentChildren(fragment, pageFragment);
-
-
             getFragmentDefinitionsMap().put(fragmentName, fragment);
         }
 
@@ -139,17 +137,28 @@ public class PageConfig {
             if (StringUtils.isNotBlank(parent)) {
                 // lookup parent:
                 final PageDefinition pageDefinition = 
getPageDefinitionsMap().get(parent);
-                if (pageDefinition == null) {
-                    log.warn("Skipping populating of item: parent with name 
[{}]  could not be found for PageFragment with name  [{}].", parent, 
pageFragment.getName());
+                if (pageDefinition != null) {
+                    final PageFragment fragment = 
getFragmentDefinitionsMap().get(pageFragment.getName());
+                    fragment.setParent(pageDefinition);
+                    fragment.setId(String.format("%s%s", 
pageDefinition.getPath(), fragment.getId()));
+                    mergeFragment(fragment);
                     continue;
                 }
-                final PageFragment fragment = 
getFragmentDefinitionsMap().get(pageFragment.getName());
-                fragment.setParent(pageDefinition);
-                fragment.setId(String.format("%s%s", pageDefinition.getPath(), 
fragment.getId()));
-                mergeFragment(fragment);
+                // check if fragment is our parent
+                final PageFragment parentFragment = 
getFragmentDefinitionsMap().get(parent);
+
+                if (parentFragment != null) {
+                    final PageFragment fragment = 
getFragmentDefinitionsMap().get(pageFragment.getName());
+                    fragment.setParent(parentFragment);
+                    fragment.setId(String.format("%s%s", fragment.getPath(), 
parentFragment.getId()));
+                    mergeFragment(fragment);
+                    continue;
+                }
+                // we could not find parent reference
+                log.warn("Skipping populating of item: parent with name [{}]  
could not be found for PageFragment with name  [{}].", parent, 
pageFragment.getName());
             }
-        }
 
+        }
     }
 
     private void mergeFragmentChildren(PageFragment owner, PageFragmentConfig 
pageFragment) {

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/model/config/FilePageConfigDaoTest.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/model/config/FilePageConfigDaoTest.java?rev=1357231&r1=1357230&r2=1357231&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/model/config/FilePageConfigDaoTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/model/config/FilePageConfigDaoTest.java
 Wed Jul  4 11:35:15 2012
@@ -52,17 +52,25 @@ public class FilePageConfigDaoTest {
         assertEquals(1, pageDefinitions.size()); // make sure it is parsed 
properly
         // expected 2 page fragments
         final Collection<PageFragment> kids = config.getFragmentDefinitions();
-        assertEquals(2, kids.size());
+        assertEquals(3, kids.size());
         //our fragments should have parent page:
+        final Map<String, PageFragment> fragmentDefinitionsMap = 
config.getFragmentDefinitionsMap();
+        final PageFragment adminFragment = 
fragmentDefinitionsMap.get("adminPage");
         final PageDefinitionConfig standardPage = definitions.get(0);
         for (PageFragment kid : kids) {
             final PageFragment parent = kid.getParent();
             assertTrue("Expected valid parent, but found null", parent != 
null);
-            assertTrue(parent.getName().equals(standardPage.getName()));
+            // user admin extends adminPage
+            if (kid.getName().equals("userAdminPage")) {
+                assertEquals(parent.getName(), adminFragment.getName());
+            } else {
+                assertEquals(parent.getName(), standardPage.getName());
+            }
+
+
         }
 
-        final Map<String, PageFragment> fragmentDefinitionsMap = 
config.getFragmentDefinitionsMap();
-        final PageFragment adminFragment = 
fragmentDefinitionsMap.get("adminPage");
+
         final List<PageFragment> adminKids = adminFragment.getChildren();
         assertEquals(2, adminKids.size());
         // admin should have header from page definition
@@ -88,17 +96,16 @@ public class FilePageConfigDaoTest {
 
         assertTrue(adminFooter != null);
         assertEquals(1, adminFooter.getChildren().size());
-
-        log.info("config {}", config);
+        final PageFragment userAdminFragment = 
fragmentDefinitionsMap.get("userAdminPage");
+        assertEquals(3, userAdminFragment.getChildren().size());
 
     }
 
-
     @Test(expected = InvalidConfigurationException.class)
     public void testLoadConfigFail() throws Exception {
         PageConfigDao dao = new FilePageConfigDao();
         // this should throw InvalidConfigurationException exception
-        final PageConfig pageConfig = 
dao.loadConfig(FilePageConfigDao.CLASSPATH_PREFIX + 
"NONE_EXISTING_example_configuration.xml");
+        dao.loadConfig(FilePageConfigDao.CLASSPATH_PREFIX + 
"NONE_EXISTING_example_configuration.xml");
     }
 
 }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/example_configuration.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/example_configuration.xml?rev=1357231&r1=1357230&r2=1357231&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/example_configuration.xml
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/example_configuration.xml
 Wed Jul  4 11:35:15 2012
@@ -47,14 +47,34 @@
 
 
     <!--
-        ADMIN PAGE (extends STANDARD page)
+        USER ADMIN PAGE (extends STANDARD page)
     -->
-    <page-fragment name="adminPage" path="/admin" description="User 
administration pages" src="admin.jsp"
+    <page-fragment name="adminPage" path="/admin" description="Administration 
pages" src="admin.jsp"
                    parent="standard">
         <!-- @overrides footer-->
         <page-fragment name="footer" path="/footer" src="myFooter.jsp">
             <page-fragment name="footerController" 
class="com.test.FooterController"/>
         </page-fragment>
+    </page-fragment>
 
+    <!--
+        ADMIN PAGE (extends STANDARD page)
+    -->
+    <page-fragment name="userAdminPage" path="/admin/user" description="User 
administration pages" src="userAdmin.jsp"
+                   parent="adminPage">
+        <!-- @overrides footer-->
+        <page-fragment name="footer" path="/footer" src="myFooter.jsp">
+            <page-fragment name="footerController" 
class="com.test.FooterController"/>
+        </page-fragment>
+        <!-- @overrides admin header-->
+        <page-fragment name="header" path="/header">
+            <page-fragment name="headerController" 
class="com.test.UserLoginHeaderController" src="login.jsp"/>
+        </page-fragment>
+        <!-- add body-->
+        <page-fragment name="body" path="/body">
+            <page-fragment name="bodyController" class="com.test.UserBody" 
src="body.jsp"/>
+        </page-fragment>
     </page-fragment>
+
+
 </configuration>


Reply via email to