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$
+                }
+            }
+        }
+
+    }
 }