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