Author: thomas.heute(a)jboss.com
Date: 2009-07-29 06:38:29 -0400 (Wed, 29 Jul 2009)
New Revision: 13613
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceResponseImpl.java
Log:
JBPORTAL-2345: ResourceResponse.setContentLength throws UnsupportedOperationException
JBPORTAL-2346: JBPC 2.0 : ResourceResponse.setCharacterEncoding always throws
UnsupportedOperationException
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceResponseImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceResponseImpl.java 2009-07-29
10:35:41 UTC (rev 13612)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceResponseImpl.java 2009-07-29
10:38:29 UTC (rev 13613)
@@ -22,6 +22,9 @@
******************************************************************************/
package org.jboss.portal.portlet.impl.jsr168.api;
+import org.jboss.portal.common.net.media.ContentType;
+import org.jboss.portal.common.net.media.MediaType;
+import org.jboss.portal.common.net.media.Parameter;
import org.jboss.portal.portlet.invocation.ResourceInvocation;
import org.jboss.portal.portlet.invocation.response.ContentResponse;
import org.jboss.portal.portlet.invocation.response.ResponseProperties;
@@ -30,6 +33,9 @@
import javax.portlet.ResourceResponse;
import javax.portlet.PortletURL;
+
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -53,17 +59,53 @@
public void setLocale(Locale locale)
{
- throw new UnsupportedOperationException();
+ // TODO: setLocale should also set the character encoding according to the mapping
done in web.xml
+
+ if (locale == null)
+ {
+ throw new IllegalArgumentException("Locale cannot be null");
+ }
+ if ("".equals(locale.getCountry()))
+ {
+ addProperty("Content-Language", locale.getLanguage());
+ }
+ else
+ {
+ addProperty("Content-Language", locale.getLanguage() + "-"
+ locale.getCountry());
+ }
}
public void setCharacterEncoding(String s)
{
- throw new UnsupportedOperationException();
+ List<Parameter> parameters = new ArrayList<Parameter>();
+ MediaType mediaType = null;
+
+ String contentTypeString = getContentType();
+ if (contentTypeString != null)
+ {
+ ContentType contentType = ContentType.create(contentTypeString);
+ mediaType = contentType.getMediaType();
+ for (Parameter parameter : contentType.getParameters())
+ {
+ if (!parameter.getName().trim().toLowerCase().equals("charset"))
+ {
+ parameters.add(parameter);
+ }
+ }
+ }
+ else
+ {
+ // Default to "text/html"
+ mediaType = MediaType.TEXT_HTML;
+ }
+ parameters.add(new Parameter("charset", s));
+
+ setContentType(new ContentType(mediaType, parameters).getValue());
}
public void setContentLength(int i)
{
- throw new UnsupportedOperationException();
+ addProperty("Content-Length", "" + i);
}
public PortletURL createActionURL()
Show replies by date