Author: mageshbk(a)jboss.com
Date: 2009-05-13 17:06:49 -0400 (Wed, 13 May 2009)
New Revision: 13366
Modified:
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/aspects/portlet/HttpHeaderInterceptor.java
Log:
[JBEPP-72] - Added provision for multi-valued Headers
Modified:
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/aspects/portlet/HttpHeaderInterceptor.java
===================================================================
---
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/aspects/portlet/HttpHeaderInterceptor.java 2009-05-13
20:59:35 UTC (rev 13365)
+++
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/aspects/portlet/HttpHeaderInterceptor.java 2009-05-13
21:06:49 UTC (rev 13366)
@@ -22,28 +22,24 @@
******************************************************************************/
package org.jboss.portal.core.aspects.portlet;
-import java.util.List;
+import java.util.Iterator;
import org.jboss.portal.common.util.MultiValuedPropertyMap;
-import org.jboss.portal.core.metadata.portlet.MarkupElement;
-import org.jboss.portal.core.portlet.info.MarkupHeaderInfo;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.impl.spi.AbstractServerContext;
-import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.FragmentResponse;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
-import org.jboss.portal.portlet.invocation.response.ResponseProperties;
import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
-import org.w3c.dom.Element;
-import javax.portlet.MimeResponse;
import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
/**
* @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @author <a href="mailto:mageshbk@jboss.com">Magesh Kumar B</a>
* @version $Revision: 11068 $
*/
public class HttpHeaderInterceptor extends CorePortletInterceptor
@@ -79,11 +75,8 @@
{
addCookie(invocation, cookie);
}
- for (String key: unsr.getProperties().getTransportHeaders().keySet())
- {
- String value = unsr.getProperties().getTransportHeaders().getValue(key);
- ((AbstractServerContext)
invocation.getServerContext()).getResponse().setHeader(key, value);
- }
+ setHeaders(unsr.getProperties().getTransportHeaders(),
+ ((AbstractServerContext)
invocation.getServerContext()).getResponse());
}
}
else if (response instanceof FragmentResponse)
@@ -95,17 +88,14 @@
{
addCookie(invocation, cookie);
}
- for (String key: fr.getProperties().getTransportHeaders().keySet())
- {
- String value = fr.getProperties().getTransportHeaders().getValue(key);
- ((AbstractServerContext)
invocation.getServerContext()).getResponse().setHeader(key, value);
- }
+ setHeaders(fr.getProperties().getTransportHeaders(),
+ ((AbstractServerContext)
invocation.getServerContext()).getResponse());
}
}
//
return response;
}
-
+
private void addCookie(PortletInvocation invocation, Cookie cookie)
{
if ((cookie.getPath() == null || "".equals(cookie.getPath().trim()))
&& defaultCookiePath != null)
@@ -114,4 +104,26 @@
}
((AbstractServerContext)
invocation.getServerContext()).getResponse().addCookie(cookie);
}
+
+ private void setHeaders(MultiValuedPropertyMap<String> map, HttpServletResponse
response)
+ {
+ for (String key: map.keySet())
+ {
+ // It might have already been added by another portlet or
+ // its the first time we are adding it so reset it with first value.
+ // The winner is the portlet in the last order of render phase.
+ response.setHeader(key, map.getValue(key));
+
+ if (map.size() > 1)
+ {
+ // If multiple values found just add them
+ String value;
+ for (Iterator<String> i = map.getValues(key).listIterator(1);
i.hasNext();)
+ {
+ value = i.next();
+ response.addHeader(key, value);
+ }
+ }
+ }
+ }
}
Show replies by date