You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by ro...@apache.org on 2010/03/30 06:41:02 UTC
svn commit: r928982 - in
/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common:
internal/providers/entity/ internal/providers/entity/xml/ utils/
Author: rott
Date: Tue Mar 30 04:41:02 2010
New Revision: 928982
URL: http://svn.apache.org/viewvc?rev=928982&view=rev
Log:
WINK-262: followup - consolidate duplicate code into utility method
Modified:
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/StringProvider.java
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/utils/ProviderUtils.java
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/StringProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/StringProvider.java?rev=928982&r1=928981&r2=928982&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/StringProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/StringProvider.java Tue Mar 30 04:41:02 2010
@@ -25,13 +25,10 @@ import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
@@ -97,28 +94,8 @@ public class StringProvider implements M
MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (httpHeaders != null && httpHeaders.get(HttpHeaders.CONTENT_TYPE) == null) {
- // only correct the MediaType if the MediaType was not explicitly
- // set
- logger
- .debug("Media Type not explicitly set on Response so going to correct charset parameter if necessary");//$NON-NLS-1$
- Map<String, String> parameters = mediaType.getParameters();
- if (parameters != null) {
- if (parameters.get("charset") == null) { //$NON-NLS-1$
- try {
- Map<String, String> params =
- new HashMap<String, String>(mediaType.getParameters());
- params.put("charset", "UTF-8"); //$NON-NLS-1$ $NON-NLS-2$
- httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, new MediaType(mediaType
- .getType(), mediaType.getSubtype(), params)); //$NON-NLS-1$
- logger.debug("Added charset=UTF-8 parameter to Content-Type HttpHeader"); //$NON-NLS-1$
- } catch (Exception e) {
- // this can happen in the Atom Model since we pass in an unmodifiable set
- logger.debug("Caught exception while trying to set the charset", e); //$NON-NLS-1$
- }
- }
- }
- }
+
+ ProviderUtils.setDefaultCharsetOnMediaTypeHeader(httpHeaders, mediaType);
logger.debug("Writing {} to stream using {}", t, getClass().getName()); //$NON-NLS-1$
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java?rev=928982&r1=928981&r2=928982&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java Tue Mar 30 04:41:02 2010
@@ -54,6 +54,7 @@ import javax.xml.stream.XMLStreamReader;
import org.apache.wink.common.internal.i18n.Messages;
import org.apache.wink.common.internal.utils.GenericsUtils;
+import org.apache.wink.common.utils.ProviderUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -128,29 +129,8 @@ public abstract class AbstractJAXBCollec
MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (httpHeaders != null && httpHeaders.get(HttpHeaders.CONTENT_TYPE) == null) {
- // only correct the MediaType if the MediaType was not explicitly
- // set
- logger
- .debug("Media Type not explicitly set on Response so going to correct charset parameter if necessary");//$NON-NLS-1$
- Map<String, String> parameters = mediaType.getParameters();
- if (parameters != null) {
- if (parameters.get("charset") == null) { //$NON-NLS-1$
- try {
- Map<String, String> params =
- new HashMap<String, String>(mediaType.getParameters());
- params.put("charset", "UTF-8"); //$NON-NLS-1$ $NON-NLS-2$
- httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, new MediaType(mediaType
- .getType(), mediaType.getSubtype(), params)); //$NON-NLS-1$
- logger.debug("Added charset=UTF-8 parameter to Content-Type HttpHeader"); //$NON-NLS-1$
- } catch (Exception e) {
- // this can happen in the Atom Model since we pass in an
- // unmodifiable set
- logger.debug("Caught exception while trying to set the charset", e); //$NON-NLS-1$
- }
- }
- }
- }
+
+ ProviderUtils.setDefaultCharsetOnMediaTypeHeader(httpHeaders, mediaType);
try {
Class<?> theType = getParameterizedTypeClass(type, genericType, false);
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java?rev=928982&r1=928981&r2=928982&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java Tue Mar 30 04:41:02 2010
@@ -124,29 +124,8 @@ public class JAXBElementXmlProvider exte
MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (httpHeaders != null && httpHeaders.get(HttpHeaders.CONTENT_TYPE) == null) {
- // only correct the MediaType if the MediaType was not explicitly
- // set
- logger
- .debug("Media Type not explicitly set on Response so going to correct charset parameter if necessary");//$NON-NLS-1$
- Map<String, String> parameters = mediaType.getParameters();
- if (parameters != null) {
- if (parameters.get("charset") == null) { //$NON-NLS-1$
- try {
- Map<String, String> params =
- new HashMap<String, String>(mediaType.getParameters());
- params.put("charset", "UTF-8"); //$NON-NLS-1$ $NON-NLS-2$
- httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, new MediaType(mediaType
- .getType(), mediaType.getSubtype(), params)); //$NON-NLS-1$
- logger.debug("Added charset=UTF-8 parameter to Content-Type HttpHeader"); //$NON-NLS-1$
- } catch (Exception e) {
- // this can happen in the Atom Model since we pass in an
- // unmodifiable set
- logger.debug("Caught exception while trying to set the charset", e); //$NON-NLS-1$
- }
- }
- }
- }
+
+ ProviderUtils.setDefaultCharsetOnMediaTypeHeader(httpHeaders, mediaType);
try {
Class<?> declaredType = t.getDeclaredType();
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java?rev=928982&r1=928981&r2=928982&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java Tue Mar 30 04:41:02 2010
@@ -46,6 +46,7 @@ import javax.xml.bind.annotation.XmlRoot
import javax.xml.transform.stream.StreamSource;
import org.apache.wink.common.internal.i18n.Messages;
+import org.apache.wink.common.utils.ProviderUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -121,29 +122,8 @@ public class JAXBXmlProvider extends Abs
MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (httpHeaders != null && httpHeaders.get(HttpHeaders.CONTENT_TYPE) == null) {
- // only correct the MediaType if the MediaType was not explicitly
- // set
- logger
- .debug("Media Type not explicitly set on Response so going to correct charset parameter if necessary");//$NON-NLS-1$
- Map<String, String> parameters = mediaType.getParameters();
- if (parameters != null) {
- if (parameters.get("charset") == null) { //$NON-NLS-1$
- try {
- Map<String, String> params =
- new HashMap<String, String>(mediaType.getParameters());
- params.put("charset", "UTF-8"); //$NON-NLS-1$ $NON-NLS-2$
- httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, new MediaType(mediaType
- .getType(), mediaType.getSubtype(), params)); //$NON-NLS-1$
- logger.debug("Added charset=UTF-8 parameter to Content-Type HttpHeader"); //$NON-NLS-1$
- } catch (Exception e) {
- // this can happen in the Atom Model since we pass in an
- // unmodifiable set
- logger.debug("Caught exception while trying to set the charset", e); //$NON-NLS-1$
- }
- }
- }
- }
+
+ ProviderUtils.setDefaultCharsetOnMediaTypeHeader(httpHeaders, mediaType);
try {
if (isJAXBObject(type)) {
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/utils/ProviderUtils.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/utils/ProviderUtils.java?rev=928982&r1=928981&r2=928982&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/utils/ProviderUtils.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/utils/ProviderUtils.java Tue Mar 30 04:41:02 2010
@@ -32,7 +32,10 @@ import java.io.Writer;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
@@ -40,8 +43,12 @@ import javax.ws.rs.ext.MessageBodyWriter
import javax.ws.rs.ext.Providers;
import org.apache.wink.common.internal.MultivaluedMapImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class ProviderUtils {
+
+ private static final Logger logger = LoggerFactory.getLogger(ProviderUtils.class);
public static String getCharsetOrNull(MediaType m) {
String name = (m == null) ? null : m.getParameters().get("charset"); //$NON-NLS-1$
@@ -171,4 +178,23 @@ public class ProviderUtils {
}
return reader.readFrom(type, genericType, new Annotation[0], mediaType, httpHeaders, is);
}
+
+ public static void setDefaultCharsetOnMediaTypeHeader(MultivaluedMap<String, Object> httpHeaders, MediaType mediaType) {
+ if (httpHeaders != null && httpHeaders.get(HttpHeaders.CONTENT_TYPE) == null) {
+ // only correct the MediaType if the MediaType was not explicitly set
+ logger.debug("Media Type not explicitly set on Response so going to correct charset parameter if necessary"); //$NON-NLS-1$
+ if (getCharsetOrNull(mediaType) == null) { //$NON-NLS-1$
+ try {
+ Map<String, String> params = new HashMap<String, String>(mediaType.getParameters());
+ params.put("charset", "UTF-8"); //$NON-NLS-1$ $NON-NLS-2$
+ httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, new MediaType(mediaType
+ .getType(), mediaType.getSubtype(), params)); //$NON-NLS-1$
+ logger.debug("Added charset=UTF-8 parameter to Content-Type HttpHeader"); //$NON-NLS-1$
+ } catch (Exception e) {
+ logger.debug("Caught exception while trying to set the charset", e); //$NON-NLS-1$
+ }
+ }
+ }
+
+ }
}