Author: ate
Date: Fri Jul 6 23:58:46 2012
New Revision: 1358473
URL: http://svn.apache.org/viewvc?rev=1358473&view=rev
Log:
RAVE-698: more Spring HMVC framework plumbing
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
(with props)
Modified:
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
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java?rev=1358473&view=auto
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
(added)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
Fri Jul 6 23:58:46 2012
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.web.hmvc;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.web.servlet.DispatcherServlet;
+import org.springframework.web.servlet.ModelAndView;
+
+public class HmvcDispatcherServlet extends DispatcherServlet {
+
+ @Override
+ protected void render(ModelAndView mv, HttpServletRequest request,
HttpServletResponse response) throws Exception {
+ Map<String, ModelAndView> ccmvMap = (Map<String,
ModelAndView>)mv.getModelMap().get(HmvcHandlerMethod.MODEL_AND_VIEW);
+ if (ccmvMap != null) {
+ Map<String, Object> ccvrMap = new LinkedHashMap<String, Object>();
+
mv.getModelMap().addAttribute(HmvcHandlerMethod.VIEW_RESPONSE_STATE, ccvrMap);
+ for (String name : ccmvMap.keySet()) {
+ // TODO: wrap response to buffer and capture its view render
state
+ render(ccmvMap.get(name), request, response);
+ Object viewResponseState = null;
+ // TODO: retrieve viewResponseState from wrapped response
+ ccvrMap.put(name, viewResponseState);
+ }
+ }
+ super.render(mv, request, response);
+ }
+}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
------------------------------------------------------------------------------
svn:keywords = Id
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=1358473&r1=1358472&r2=1358473&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
Fri Jul 6 23:58:46 2012
@@ -25,6 +25,9 @@ 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";
+
protected Map<String, HmvcHandlerMethod> children;
private BeanFactory beanFactory;
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=1358473&r1=1358472&r2=1358473&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
Fri Jul 6 23:58:46 2012
@@ -16,44 +16,43 @@
*/
package org.apache.rave.portal.web.hmvc;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter;
+import
org.springframework.web.servlet.mvc.method.annotation.ForkedRequestMappingHandlerAdapter;
-public class HmvcHandlerMethodHandlerAdapter extends
AbstractHandlerMethodAdapter implements BeanFactoryAware, InitializingBean {
+public class HmvcHandlerMethodHandlerAdapter extends
ForkedRequestMappingHandlerAdapter {
protected boolean supportsInternal(HandlerMethod handlerMethod) {
return handlerMethod instanceof HmvcHandlerMethod;
}
@Override
- public void afterPropertiesSet() throws Exception {
- // TODO Auto-generated method stub
- }
-
- @Override
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- // TODO Auto-generated method stub
- }
-
- @Override
protected ModelAndView handleInternal(HttpServletRequest request,
HttpServletResponse response,
HandlerMethod handlerMethod) throws Exception {
HmvcHandlerMethod hm = (HmvcHandlerMethod)handlerMethod;
- // TODO
- return null;
- }
+ ModelAndView mv = super.handleInternal(request, response,
handlerMethod);
- @Override
- protected long getLastModifiedInternal(HttpServletRequest request,
HandlerMethod handlerMethod) {
- // TODO Auto-generated method stub
- return 0;
+ 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) {
+ cmvMap.put(name, cmv);
+ }
+ }
+
+ if (mv == null) {
+ mv = new ModelAndView();
+ }
+
+ mv.getModelMap().addAttribute(HmvcHandlerMethod.MODEL_AND_VIEW,
cmvMap);
+
+ return mv;
}
}