Author: marijan
Date: Thu Jul 19 09:12:51 2012
New Revision: 1363268
URL: http://svn.apache.org/viewvc?rev=1363268&view=rev
Log:
git merge wrapper_skeleton
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java
(contents, props changed)
- copied, changed from r1361937,
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcResponseHolder.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java
(contents, props changed)
- copied, changed from r1361937,
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
(with props)
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
(with props)
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
(with props)
Removed:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcResponseHolder.java
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/tags/IncludeComponentTag.java
rave/sandbox/content-services/rave-web-hmvc/src/main/resources/META-INF/hmvc.tld
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java
Thu Jul 19 09:12:51 2012
@@ -26,6 +26,9 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CController {
- String name();
- Class<?> type();
+ String name();
+
+ String value() default "";
+
+ Class<?> type();
}
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java
Thu Jul 19 09:12:51 2012
@@ -29,5 +29,7 @@ import org.springframework.stereotype.Co
@Documented
@Controller
public @interface HController {
- CController[] value() default {};
+ CController[] controllers() default {};
+
+ String value() default "";
}
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java
Thu Jul 19 09:12:51 2012
@@ -87,8 +87,8 @@ public class HmvcHandlerMethodMapping ex
Class<?> handlerType = getBeanType(handler);
HController hcontroller = AnnotationUtils.findAnnotation(handlerType,
HController.class);
Map<String, HmvcHandlerMethod> ccontrollerMethods = new
HashMap<String, HmvcHandlerMethod>();
- if (!ObjectUtils.isEmpty(hcontroller.value())) {
- for (CController cc : hcontroller.value()) {
+ if (!ObjectUtils.isEmpty(hcontroller.controllers())) {
+ for (CController cc : hcontroller.controllers()) {
Method ccrenderMethod = getCCRenderMethod(cc.type());
if (ccrenderMethod != null) {
// should do this better, caching etc.
@@ -102,7 +102,7 @@ public class HmvcHandlerMethodMapping ex
}
}
}
- Object handlerBean = null;
+ Object handlerBean;
if (handler instanceof String) {
try {
handlerBean = handlerType.newInstance();
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
Thu Jul 19 09:12:51 2012
@@ -20,9 +20,9 @@ import org.apache.rave.portal.web.hmvc.C
import org.apache.rave.portal.web.hmvc.CController;
import org.apache.rave.portal.web.hmvc.HController;
-@HController({
- @CController(name="menu", type=MyMenuController.class),
- @CController(name="content", type=MyContentController.class)
+@HController(controllers = {
+ @CController(name = "menu", type = MyMenuController.class),
+ @CController(name = "content", type = MyContentController.class)
})
public class MyBodyController {
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
Thu Jul 19 09:12:51 2012
@@ -20,16 +20,16 @@ import org.apache.rave.portal.web.hmvc.C
import org.apache.rave.portal.web.hmvc.HController;
import org.springframework.web.bind.annotation.RequestMapping;
-@HController({
- @CController(name="head", type=MyHeaderController.class),
- @CController(name="body", type=MyBodyController.class),
- @CController(name="footer", type=MyFooterController.class)
+@HController(controllers = {
+ @CController(name = "head", type = MyHeaderController.class),
+ @CController(name = "body", type = MyBodyController.class),
+ @CController(name = "footer", type = MyFooterController.class)
})
@RequestMapping("/mypage")
public class MyPageController {
@RequestMapping
public String render() {
- return "mypage";
+ return "mypage";
}
}
Copied:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java
(from r1361937,
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcResponseHolder.java)
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java?p2=rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java&p1=rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcResponseHolder.java&r1=1361937&r2=1363268&rev=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcResponseHolder.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java
Thu Jul 19 09:12:51 2012
@@ -17,19 +17,33 @@
* under the License.
*/
-package org.apache.rave.portal.web.hmvc;
+package org.apache.rave.portal.web.hmvc.filter;
+import java.io.IOException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.rave.portal.web.hmvc.support.HmvcServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.web.filter.OncePerRequestFilter;
/**
- * Wraps HttpRequest, so we can capture sub-components output.
- *
* @version "$Id$"
*/
-public class HmvcResponseHolder {
+public class HmvcFilter extends OncePerRequestFilter {
+
+ private static Logger log = LoggerFactory.getLogger(HmvcFilter.class);
- private static Logger log =
LoggerFactory.getLogger(HmvcResponseHolder.class);
- private boolean flushed;
+ @Override
+ protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain) throws ServletException,
IOException {
+ log.info("@HMVC-FILTER");
+ HmvcServletRequest servletRequest = new HmvcServletRequest(request);
+ servletRequest.addHeader("hmvc", "true");
+ filterChain.doFilter(request, response);
+ }
}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/filter/HmvcFilter.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java
(from r1361937,
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/servlet/HmvcDispatcherServlet.java?p2=rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java&p1=rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java&r1=1361937&r2=1363268&rev=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcDispatcherServlet.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java
Thu Jul 19 09:12:51 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.rave.portal.web.hmvc;
+package org.apache.rave.portal.web.hmvc.servlet;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -22,11 +22,15 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.rave.portal.web.hmvc.HmvcHandlerMethod;
+import org.apache.rave.portal.web.hmvc.support.HmvcServletRequest;
+import org.apache.rave.portal.web.hmvc.support.HmvcServletResponse;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ModelAndView;
public class HmvcDispatcherServlet extends DispatcherServlet {
+
private static final long serialVersionUID = 1L;
@Override
@@ -37,13 +41,14 @@ public class HmvcDispatcherServlet exten
Map<String, Object> ccvrMap = new LinkedHashMap<String, Object>();
mv.getModelMap().addAttribute(HmvcHandlerMethod.VIEW_RESPONSE_STATE, ccvrMap);
for (Map.Entry<String, ModelAndView> entry : ccmvMap.entrySet()) {
- // TODO: wrap response to buffer and capture its view render
state
- render(entry.getValue(), request, response);
- Object viewResponseState = null;
- // TODO: retrieve viewResponseState from wrapped response
- ccvrMap.put(entry.getKey(), viewResponseState);
+ HttpServletRequest servletRequest = new
HmvcServletRequest(request);
+ HmvcServletResponse servletResponse = new
HmvcServletResponse(response);
+ render(entry.getValue(), servletRequest, servletResponse);
+ ccvrMap.put(entry.getKey(),
servletResponse.getResponseHolder());
}
}
- super.render(mv, request, response);
+ HttpServletRequest servletRequest = new HmvcServletRequest(request);
+ HttpServletResponse servletResponse = new
HmvcServletResponse(response);
+ super.render(mv, servletRequest, servletResponse);
}
}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/servlet/HmvcDispatcherServlet.java
------------------------------------------------------------------------------
svn:keywords = Id
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java?rev=1363268&view=auto
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
(added)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
Thu Jul 19 09:12:51 2012
@@ -0,0 +1,132 @@
+/*
+ * 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.support;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Request wrapper used within HMVC framework.
+ *
+ * @version "$Id$"
+ */
+public class HmvcServletRequest extends HttpServletRequestWrapper {
+
+
+ private static final Logger log =
LoggerFactory.getLogger(HmvcServletRequest.class);
+ private String componentRequestUri;
+ private boolean component;
+ private Map<String, String> headers;
+
+ /**
+ * Constructs a request object wrapping the given request.
+ *
+ * @throws IllegalArgumentException if the request is null
+ */
+ public HmvcServletRequest(HttpServletRequest request) {
+ super(request);
+ headers = new HashMap<String, String>();
+ }
+
+ @Override
+ public String getMethod() {
+ return super.getMethod();
+ }
+
+
+ public void setComponentRequestUri(final String uri) {
+ component = true;
+ componentRequestUri = uri;
+ }
+
+
+ public boolean isComponent() {
+ return component;
+ }
+
+ public void setComponent(boolean component) {
+ this.component = component;
+ }
+
+ @Override
+ public String getRequestURI() {
+ if (component) {
+ log.info("Requesting component rendering for uri {}",
componentRequestUri);
+ return componentRequestUri;
+ }
+ return super.getRequestURI();
+ }
+
+
+ @Override
+ public StringBuffer getRequestURL() {
+ if (component) {
+ final StringBuffer requestURL = super.getRequestURL();
+ final String replace =
requestURL.toString().replace(super.getRequestURI(), getRequestURI());
+ log.info("replace {}", replace);
+ return new StringBuffer(replace);
+ }
+ return super.getRequestURL();
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Enumeration getHeaderNames() {
+ HttpServletRequest request = (HttpServletRequest) getRequest();
+ Collection<String> list = new ArrayList<String>();
+ for (Enumeration e = request.getHeaderNames(); e.hasMoreElements(); ) {
+ list.add(e.nextElement().toString());
+ }
+
+ for (String s : headers.keySet()) {
+ list.add(s);
+ }
+ return Collections.enumeration(list);
+ }
+
+ /**
+ * Adds value to header map
+ *
+ * @param name key
+ * @param value value
+ */
+ public void addHeader(String name, String value) {
+ headers.put(name, value);
+ }
+
+ @Override
+ public String getHeader(String name) {
+ final String value = headers.get(name);
+ if (value != null) {
+ return value;
+ }
+ return ((HttpServletRequest) getRequest()).getHeader(name);
+ }
+}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletRequest.java
------------------------------------------------------------------------------
svn:keywords = Id
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java?rev=1363268&view=auto
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
(added)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
Thu Jul 19 09:12:51 2012
@@ -0,0 +1,77 @@
+/*
+ * 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.support;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @version "$Id$"
+ */
+public class HmvcServletResponse extends HttpServletResponseWrapper {
+
+ private static Logger log =
LoggerFactory.getLogger(HmvcServletResponse.class);
+
+
+ private final ResponseHolder responseHolder;
+
+
+ /**
+ * Constructs a response adaptor wrapping the given response.
+ *
+ * @throws IllegalArgumentException if the response is null
+ */
+ public HmvcServletResponse(HttpServletResponse response) {
+ super(response);
+ responseHolder = new ResponseHolder(response);
+ }
+
+
+ public ResponseHolder getResponseHolder() {
+ return responseHolder;
+ }
+
+
+ @Override
+ public void flushBuffer() throws IOException {
+ responseHolder.flushBuffer();
+ }
+
+ @Override
+ public ServletOutputStream getOutputStream() throws IOException {
+ ServletOutputStream outputStream = responseHolder.getOutputStream();
+ return outputStream != null ? outputStream : super.getOutputStream();
+ }
+
+ @Override
+ public PrintWriter getWriter() throws IOException {
+ PrintWriter writer = responseHolder.getWriter();
+ return writer != null ? writer : super.getWriter();
+ }
+
+
+}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/HmvcServletResponse.java
------------------------------------------------------------------------------
svn:keywords = Id
Added:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java?rev=1363268&view=auto
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
(added)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
Thu Jul 19 09:12:51 2012
@@ -0,0 +1,115 @@
+/*
+ * 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.support;
+
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @version "$Id$"
+ */
+public class ResponseHolder {
+
+ private static Logger log = LoggerFactory.getLogger(ResponseHolder.class);
+
+ /**
+ * Flag which indicates response is flushed
+ */
+ private boolean responseFlushed;
+
+ protected ByteArrayOutputStream byteOutputBuffer;
+ private CharArrayWriterBuffer charBuffer;
+ private ServletOutputStream outputStream;
+ private PrintWriter printWriter;
+ private boolean closed;
+ private boolean commited;
+ private int contentLength;
+ private final HttpServletResponse response;
+
+
+ public ResponseHolder(HttpServletResponse response) {
+ this.response = response;
+ }
+
+
+ public void flushBuffer() throws IOException {
+ if (!closed) {
+ responseFlushed = true;
+ }
+
+
+ }
+
+ public PrintWriter getWriter() throws IOException {
+
+ charBuffer = new CharArrayWriterBuffer();
+ printWriter = new PrintWriter(charBuffer);
+ return printWriter;
+ }
+
+
+ public ServletOutputStream getOutputStream() throws IOException {
+
+ if (outputStream == null) {
+ if (printWriter != null) {
+ throw new IllegalStateException("getWriter() has already been
called on this response");
+ }
+ byteOutputBuffer = new ByteArrayOutputStream();
+ outputStream = new ServletOutputStream() {
+ @Override
+ public void write(int b) throws IOException {
+ if (!closed) {
+ byteOutputBuffer.write(b);
+ if (contentLength > -1 && byteOutputBuffer.size() >=
contentLength) {
+ commited = true;
+ closed = true;
+ }
+ }
+ }
+ };
+ }
+ return outputStream;
+ }
+
+
+
//*************************************************************************************
+ // HELP CLASSES
+
//*************************************************************************************
+
+ private static class CharArrayWriterBuffer extends CharArrayWriter {
+ private char[] getBuffer() {
+ return buf;
+ }
+
+ private int getCount() {
+ return count;
+ }
+ }
+
+
+}
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/support/ResponseHolder.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/tags/IncludeComponentTag.java
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/tags/IncludeComponentTag.java?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/tags/IncludeComponentTag.java
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/tags/IncludeComponentTag.java
Thu Jul 19 09:12:51 2012
@@ -21,16 +21,17 @@ package org.apache.rave.portal.web.hmvc.
import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
+import org.apache.rave.portal.web.hmvc.support.HmvcServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
+ * Produces (render/markup) output of a HMVC component into page included
+ *
* @version "$Id$"
*/
public class IncludeComponentTag extends TagSupport {
@@ -49,15 +50,23 @@ public class IncludeComponentTag extends
@Override
public int doEndTag() throws JspException {
- HttpServletRequest request = (HttpServletRequest)
pageContext.getRequest();
- HttpServletResponse response = (HttpServletResponse)
pageContext.getResponse();
+
+ HmvcServletResponse response = (HmvcServletResponse)
pageContext.getResponse();
+ if (response == null) {
+ if (log.isDebugEnabled()) {
+ log.error("Response was null");
+ }
+ return EVAL_PAGE;
+ }
try {
JspWriter writer = pageContext.getOut();
writer.flush();
-
} catch (IOException e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error including component: " + ref, e);
+ }
}
ref = null;
Modified:
rave/sandbox/content-services/rave-web-hmvc/src/main/resources/META-INF/hmvc.tld
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/resources/META-INF/hmvc.tld?rev=1363268&r1=1363267&r2=1363268&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/main/resources/META-INF/hmvc.tld
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/main/resources/META-INF/hmvc.tld
Thu Jul 19 09:12:51 2012
@@ -17,34 +17,31 @@
specific language governing permissions and limitations
under the License.
-->
-
-<taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.1"
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- >
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ version="2.0">
+ <description>Rave Core Tag Library</description>
<tlib-version>1.0</tlib-version>
- <jsp-version>1.2</jsp-version>
<short-name>hmvc-tags</short-name>
<uri>http://www.apache-rave.org/jsp/core</uri>
- <description>Rave Core Tag Library</description>
-
<tag>
+ <description>Include component output</description>
<name>include</name>
-
<tag-class>org.apache.rave.portal.controller.tags.IncludeComponentTag</tag-class>
+
<tag-class>org.apache.rave.portal.web.hmvc.tags.IncludeComponentTag</tag-class>
<body-content>empty</body-content>
- <description>Include component output</description>
<attribute>
+ <description>The name of the component we are including</description>
<name>ref</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
- <description>The name of the component</description>
</attribute>
- <example><![CDATA[
-
- TODO
- ]]></example>
+ <example>
+ <![CDATA[
+ <rave ref="footer" />
+ ]]>
+ </example>
</tag>
-
-
</taglib>
\ No newline at end of file