You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2013/10/22 22:13:09 UTC
svn commit: r1534764 - in
/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago:
internal/util/ResponseUtils.java util/ApplyRequestValuesCallback.java
Author: lofwyr
Date: Tue Oct 22 20:13:09 2013
New Revision: 1534764
URL: http://svn.apache.org/r1534764
Log:
TOBAGO-633: Portlet support
- working on portlet support
Modified:
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/ResponseUtils.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ApplyRequestValuesCallback.java
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/ResponseUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/ResponseUtils.java?rev=1534764&r1=1534763&r2=1534764&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/ResponseUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/ResponseUtils.java Tue Oct 22 20:13:09 2013
@@ -22,11 +22,12 @@ package org.apache.myfaces.tobago.intern
import org.apache.myfaces.tobago.context.ClientProperties;
import org.apache.myfaces.tobago.context.UserAgent;
import org.apache.myfaces.tobago.internal.config.ContentSecurityPolicy;
+import org.apache.myfaces.tobago.portlet.PortletUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
+import javax.portlet.MimeResponse;
import javax.servlet.http.HttpServletResponse;
public class ResponseUtils {
@@ -38,11 +39,11 @@ public class ResponseUtils {
}
public static void ensureNoCacheHeader(FacesContext facesContext) {
- // TODO PortletRequest
- ExternalContext externalContext = facesContext.getExternalContext();
- if (externalContext.getResponse() instanceof HttpServletResponse) {
- HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
- ensureNoCacheHeader(response);
+ Object response = facesContext.getExternalContext().getResponse();
+ if (response instanceof HttpServletResponse) {
+ ensureNoCacheHeader((HttpServletResponse)response);
+ } else if (PortletUtils.isPortletApiAvailable() && response instanceof MimeResponse) {
+ ensureNoCacheHeader((MimeResponse)response);
}
}
@@ -53,11 +54,17 @@ public class ResponseUtils {
response.setDateHeader("max-age", 0);
}
+ public static void ensureNoCacheHeader(MimeResponse response) {
+ // TODO validate this
+ response.getCacheControl().setExpirationTime(0);
+ }
+
public static void ensureContentTypeHeader(FacesContext facesContext, String contentType) {
- // TODO PortletRequest
- if (facesContext.getExternalContext().getResponse() instanceof HttpServletResponse) {
- HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
- ensureContentTypeHeader(response, contentType);
+ final Object response = facesContext.getExternalContext().getResponse();
+ if (response instanceof HttpServletResponse) {
+ ensureContentTypeHeader((HttpServletResponse) response, contentType);
+ } else if (PortletUtils.isPortletApiAvailable() && response instanceof MimeResponse) {
+ ensureContentTypeHeader((MimeResponse) response, contentType);
}
}
@@ -65,7 +72,7 @@ public class ResponseUtils {
if (!response.containsHeader("Content-Type")) {
response.setContentType(contentType);
} else {
- String responseContentType = response.getContentType();
+ final String responseContentType = response.getContentType();
if (!StringUtils.equalsIgnoreCaseAndWhitespace(responseContentType, contentType)) {
response.setContentType(contentType);
if (LOG.isDebugEnabled()) {
@@ -76,10 +83,22 @@ public class ResponseUtils {
}
}
+ public static void ensureContentTypeHeader(MimeResponse response, String contentType) {
+ final String responseContentType = response.getContentType();
+ if (!StringUtils.equalsIgnoreCaseAndWhitespace(responseContentType, contentType)) {
+ response.setContentType(contentType);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Response already contains Header Content-Type '" + responseContentType
+ + "'. Overwriting with '" + contentType + "'");
+ }
+ }
+ }
+
public static void ensureContentSecurityPolicyHeader(
FacesContext facesContext, ContentSecurityPolicy contentSecurityPolicy) {
- // TODO PortletRequest
- if (facesContext.getExternalContext().getResponse() instanceof HttpServletResponse) {
+ final Object response = facesContext.getExternalContext().getResponse();
+ if (response instanceof HttpServletResponse) {
+ final HttpServletResponse servletResponse = (HttpServletResponse) response;
final UserAgent userAgent = ClientProperties.getInstance(facesContext).getUserAgent();
final String[] cspHeaders;
switch (contentSecurityPolicy.getMode()) {
@@ -102,9 +121,11 @@ public class ResponseUtils {
}
String value = builder.toString();
for (String cspHeader : cspHeaders) {
- final HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
- response.setHeader(cspHeader, value);
+ servletResponse.setHeader(cspHeader, value);
}
+ } else if (PortletUtils.isPortletApiAvailable() && response instanceof MimeResponse) {
+ // TODO Portlet
+ LOG.warn("CSP not implemented for Portlet!");
}
}
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ApplyRequestValuesCallback.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ApplyRequestValuesCallback.java?rev=1534764&r1=1534763&r2=1534764&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ApplyRequestValuesCallback.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ApplyRequestValuesCallback.java Tue Oct 22 20:13:09 2013
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
+import javax.portlet.PortletResponse;
import javax.servlet.http.HttpServletResponse;
public class ApplyRequestValuesCallback implements TobagoCallback {
@@ -46,9 +47,11 @@ public class ApplyRequestValuesCallback
if (immediate != null && immediate) {
Boolean update = (Boolean) reload.getAttributes().get(Attributes.UPDATE);
if (update != null && !update) {
- if (context.getExternalContext().getResponse() instanceof HttpServletResponse) {
- ((HttpServletResponse) context.getExternalContext().getResponse())
- .setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+ final Object response = context.getExternalContext().getResponse();
+ if (response instanceof HttpServletResponse) {
+ ((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+ } else if (response instanceof PortletResponse) {
+ // TBD: Portlet: what is to do here?
}
context.responseComplete();
return;