Author: marijan
Date: Wed Aug 15 13:14:05 2012
New Revision: 1373386

URL: http://svn.apache.org/viewvc?rev=1373386&view=rev
Log:
RAVE-695 Create new rave-jcr-ocm module providing JCR based Object Content 
Mapping (OCM) support

- add possibility to override view

Added:
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
   (with props)
Modified:
    
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java
    
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java
    
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java

Modified: 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java
 (original)
+++ 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java
 Wed Aug 15 13:14:05 2012
@@ -42,6 +42,7 @@ public class FilePageFragment implements
     private String path;
     private String displayName;
     private String description;
+    private String viewName;
 
     private String controller;
     private List<PageFragment> children;
@@ -71,6 +72,18 @@ public class FilePageFragment implements
         this.reference = reference;
     }
 
+    @XmlAttribute(name = "viewname")
+    @Override
+    public String getViewName() {
+        return viewName;
+    }
+
+    @Override
+    public void setViewName(String viewName) {
+        this.viewName = viewName;
+    }
+
+
     @XmlAttribute
     @Override
     public String getPath() {

Modified: 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java
 (original)
+++ 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java
 Wed Aug 15 13:14:05 2012
@@ -56,6 +56,8 @@ public class JcrPageFragment implements 
     private String description;
     @Field(jcrType = "String")
     private String controller;
+    @Field(jcrType = "String")
+    private String viewName;
 
 
     @Field(jcrName = "raveconfig:name", jcrType = "String")
@@ -71,6 +73,16 @@ public class JcrPageFragment implements 
         return path;
     }
 
+    @Override
+    public String getViewName() {
+        return viewName;
+    }
+
+    @Override
+    public void setViewName(String viewName) {
+        this.viewName = viewName;
+    }
+
     public void setPath(String path) {
         this.path = path;
     }

Modified: 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java
 (original)
+++ 
rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java
 Wed Aug 15 13:14:05 2012
@@ -31,6 +31,20 @@ public interface PageFragment {
 
 
     /**
+     * Returns view name
+     *
+     * @return view name or null if not set
+     */
+    String getViewName();
+
+    /**
+     * Sets view name
+     *
+     * @param viewName name of the view
+     */
+    void setViewName(String viewName);
+
+    /**
      * Sets Node path
      *
      * @param path path node is saved to

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
 Wed Aug 15 13:14:05 2012
@@ -25,11 +25,12 @@ import org.springframework.web.method.Ha
 
 public class HmvcHandlerMethod extends HandlerMethod {
 
-    public static final String VIEW_RESPONSE_STATE = 
HmvcHandlerMethod.class.getName()+".ViewResponseState";
-    public static final String MODEL_AND_VIEW = 
HmvcHandlerMethod.class.getName()+".ModelAndView";
+    public static final String VIEW_RESPONSE_STATE = 
HmvcHandlerMethod.class.getName() + ".ViewResponseState";
+    public static final String MODEL_AND_VIEW = 
HmvcHandlerMethod.class.getName() + ".ModelAndView";
 
     protected Map<String, HmvcHandlerMethod> children;
     private BeanFactory beanFactory;
+    private String viewName;
 
     public HmvcHandlerMethod(Object bean, Method method, Map<String, 
HmvcHandlerMethod> children) {
         super(bean, method);
@@ -40,11 +41,11 @@ public class HmvcHandlerMethod extends H
         super(beanName, beanFactory, method);
         this.children = children;
     }
-    
+
     @Override
     public HmvcHandlerMethod createWithResolvedBean() {
         if (getBean() instanceof String) {
-            return new 
HmvcHandlerMethod(beanFactory.getBean((String)getBean()),getMethod(), children);
+            return new HmvcHandlerMethod(beanFactory.getBean((String) 
getBean()), getMethod(), children);
         }
         return this;
     }
@@ -52,8 +53,16 @@ public class HmvcHandlerMethod extends H
     public HmvcHandlerMethod getChild(String name) {
         return children.get(name);
     }
-    
+
     public Set<String> getChildrenNames() {
         return children.keySet();
     }
+
+    public String getViewName() {
+        return viewName;
+    }
+
+    public void setViewName(String viewName) {
+        this.viewName = viewName;
+    }
 }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
 Wed Aug 15 13:14:05 2012
@@ -22,6 +22,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.ModelAndView;
 import 
org.springframework.web.servlet.mvc.method.annotation.ForkedRequestMappingHandlerAdapter;
@@ -30,17 +31,22 @@ public class HmvcHandlerMethodHandlerAda
 
     @Override
     protected ModelAndView handleInternal(HttpServletRequest request, 
HttpServletResponse response,
-            HandlerMethod handlerMethod) throws Exception {
+                                          HandlerMethod handlerMethod) throws 
Exception {
         ModelAndView mv = super.handleInternal(request, response, 
handlerMethod);
 
         if (handlerMethod instanceof HmvcHandlerMethod) {
-            HmvcHandlerMethod hm = (HmvcHandlerMethod)handlerMethod;
+            HmvcHandlerMethod hm = (HmvcHandlerMethod) handlerMethod;
 
-            Map<String, ModelAndView> cmvMap = new 
LinkedHashMap<String,ModelAndView>();
+            Map<String, ModelAndView> cmvMap = new LinkedHashMap<String, 
ModelAndView>();
             for (String name : hm.getChildrenNames()) {
                 HmvcHandlerMethod chm = hm.getChild(name);
                 ModelAndView cmv = handleInternal(request, response, chm);
                 if (cmv != null) {
+                    // override view name (if set):
+                    final String viewName = chm.getViewName();
+                    if (StringUtils.isNotBlank(viewName)) {
+                        cmv.setViewName(viewName);
+                    }
                     cmvMap.put(name, cmv);
                 }
             }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java
 Wed Aug 15 13:14:05 2012
@@ -115,7 +115,9 @@ public class HmvcHandlerMethodMappingByC
                 }
             }
         }
-        return new HmvcHandlerMethod(handler, method, controllerMethods);
+        final HmvcHandlerMethod handlerMethod = new HmvcHandlerMethod(handler, 
method, controllerMethods);
+        handlerMethod.setViewName(fragment.getViewName());
+        return handlerMethod;
     }
 
 

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java?rev=1373386&r1=1373385&r2=1373386&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
 Wed Aug 15 13:14:05 2012
@@ -40,6 +40,7 @@ import org.springframework.web.servlet.H
 import org.springframework.web.servlet.HandlerMapping;
 import org.springframework.web.servlet.ModelAndView;
 
+import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 import static org.springframework.test.web.ModelAndViewAssert.assertViewName;
 
@@ -86,8 +87,15 @@ public class HmvcHandlerMethodMappingByC
         assertTrue("Expected footer", childrenNames.contains("footer"));
         final HmvcHandlerMethod child = handlerMethod.getChild("body");
         final Set<String> bodyKids = child.getChildrenNames();
-        assertTrue("body should have zero childen", bodyKids.size() == 0);
+        assertTrue("body should have zero children", bodyKids.size() == 0);
         assertViewName(mav, "hmvc/mypage");
+        @SuppressWarnings("unchecked")
+        final Map<String, ModelAndView> childModels = (Map<String, 
ModelAndView>) mav.getModelMap().get(HmvcHandlerMethod.MODEL_AND_VIEW);
+        assertTrue(childModels != null);
+        final ModelAndView head = childModels.get("head");
+        assertTrue(head != null);
+        assertEquals("Expected view override", "hmvc/override/myheader", 
head.getViewName());
+
     }
 
 

Added: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml?rev=1373386&view=auto
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
 (added)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
 Wed Aug 15 13:14:05 2012
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+<configuration name="default">
+
+  <page-definition name="myPage" path="/mypage2" description="My Page" 
displayname="My page" 
controller="org.apache.rave.portal.web.hmvc.example.MyPageController">
+    <page-fragment name="head" path="myHeader" 
controller="org.apache.rave.portal.web.hmvc.example.MyHeaderController" 
viewname="hmvc/override/myheader"/>
+    <page-fragment name="body" path="myBody" 
controller="org.apache.rave.portal.web.hmvc.example.MyContentController"/>
+    <page-fragment name="footer" path="myFooter" 
controller="org.apache.rave.portal.web.hmvc.example.MyFooterController"/>
+  </page-definition>
+
+</configuration>

Propchange: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/page-configuration.xml
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to