You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by nf...@apache.org on 2009/07/06 08:27:54 UTC

svn commit: r791392 - /incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java

Author: nfischer
Date: Mon Jul  6 06:27:54 2009
New Revision: 791392

URL: http://svn.apache.org/viewvc?rev=791392&view=rev
Log:
[WINK-19] - fix for ResponseBuilderImpl variants

Modified:
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java?rev=791392&r1=791391&r2=791392&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/ResponseImpl.java Mon Jul  6 06:27:54 2009
@@ -90,7 +90,7 @@
 
         @Override
         public ResponseBuilder cacheControl(CacheControl cacheControl) {
-            return putSingleRemoveNull(HttpHeaders.CACHE_CONTROL, cacheControl);
+            return singleHeader(HttpHeaders.CACHE_CONTROL, cacheControl);
         }
 
         @Override
@@ -100,16 +100,17 @@
 
         @Override
         public ResponseBuilder contentLocation(URI location) {
-            return putSingleRemoveNull(HttpHeaders.CONTENT_LOCATION, location);
+            return singleHeader(HttpHeaders.CONTENT_LOCATION, location);
         }
 
         @Override
         public ResponseBuilder cookie(NewCookie... cookies) {
-            if (cookies == null)
+            if (cookies == null) {
                 metadata.remove(HttpHeaders.SET_COOKIE);
-            else {
-                for (NewCookie cooky : cookies)
-                    metadata.add(HttpHeaders.SET_COOKIE, cooky);
+            } else {
+                for (NewCookie cookie : cookies) {
+                    header(HttpHeaders.SET_COOKIE, cookie);
+                }
             }
             return this;
         }
@@ -122,32 +123,37 @@
 
         @Override
         public ResponseBuilder expires(Date expires) {
-            return putSingleRemoveNull(HttpHeaders.EXPIRES, expires);
+            return singleHeader(HttpHeaders.EXPIRES, expires);
         }
 
         @Override
         public ResponseBuilder header(String name, Object value) {
-            return putSingleRemoveNull(name, value);
+            if (value == null) {
+                metadata.remove(name);
+            } else {
+                metadata.add(name, value);
+            }
+            return this;
         }
 
         @Override
         public ResponseBuilder language(String language) {
-            return putSingleRemoveNull(HttpHeaders.CONTENT_LANGUAGE, language);
+            return singleHeader(HttpHeaders.CONTENT_LANGUAGE, language);
         }
 
         @Override
         public ResponseBuilder language(Locale language) {
-            return putSingleRemoveNull(HttpHeaders.CONTENT_LANGUAGE, language);
+            return singleHeader(HttpHeaders.CONTENT_LANGUAGE, language);
         }
 
         @Override
         public ResponseBuilder lastModified(Date lastModified) {
-            return putSingleRemoveNull(HttpHeaders.LAST_MODIFIED, lastModified);
+            return singleHeader(HttpHeaders.LAST_MODIFIED, lastModified);
         }
 
         @Override
         public ResponseBuilder location(URI location) {
-            return putSingleRemoveNull(HttpHeaders.LOCATION, location);
+            return singleHeader(HttpHeaders.LOCATION, location);
         }
 
         @Override
@@ -158,35 +164,38 @@
 
         @Override
         public ResponseBuilder tag(EntityTag tag) {
-            return putSingleRemoveNull(HttpHeaders.ETAG, tag);
+            return singleHeader(HttpHeaders.ETAG, tag);
         }
 
         @Override
         public ResponseBuilder tag(String tag) {
-            return putSingleRemoveNull(HttpHeaders.ETAG, tag);
+            return singleHeader(HttpHeaders.ETAG, tag);
         }
 
         @Override
         public ResponseBuilder type(MediaType type) {
-            return putSingleRemoveNull(HttpHeaders.CONTENT_TYPE, type);
+            return singleHeader(HttpHeaders.CONTENT_TYPE, type);
         }
 
         @Override
         public ResponseBuilder type(String type) {
-            return putSingleRemoveNull(HttpHeaders.CONTENT_TYPE, type);
+            return singleHeader(HttpHeaders.CONTENT_TYPE, type);
+        }
+        
+        public ResponseBuilder encoding(String encoding) {
+            return singleHeader(HttpHeaders.CONTENT_ENCODING, encoding);
         }
 
         @Override
         public ResponseBuilder variant(Variant variant) {
             if (variant != null) {
                 language(variant.getLanguage());
-                putSingleRemoveNull(HttpHeaders.ACCEPT_ENCODING, variant.getEncoding());
+                encoding(variant.getEncoding());
                 type(variant.getMediaType());
             } else {
-
-                putSingleRemoveNull(HttpHeaders.CONTENT_LANGUAGE, null);
-                putSingleRemoveNull(HttpHeaders.ACCEPT_ENCODING, null);
-                putSingleRemoveNull(HttpHeaders.CONTENT_TYPE, null);
+                language((String)null);
+                encoding(null);
+                type((String)null);
             }
             return this;
         }
@@ -194,32 +203,40 @@
         @Override
         public ResponseBuilder variants(List<Variant> variants) {
             if (variants == null) {
-                putSingleRemoveNull(HttpHeaders.VARY, null);
+                header(HttpHeaders.VARY, null);
                 return this;
             }
+            
+            if (variants.isEmpty()) {
+                return this;
+            }
+            
             boolean encoding = false;
             boolean lang = false;
-            boolean medyatype = false;
+            boolean mediatype = false;
 
             for (Variant v : variants) {
                 encoding = encoding || (v.getEncoding() != null);
                 lang = lang || (v.getLanguage() != null);
-                medyatype = medyatype || (v.getMediaType() != null);
+                mediatype = mediatype || (v.getMediaType() != null);
             }
             StringBuilder sb = new StringBuilder();
-            conditionalAppend(sb, encoding, HttpHeaders.ACCEPT_ENCODING);
+            conditionalAppend(sb, mediatype, HttpHeaders.ACCEPT);
             conditionalAppend(sb, lang, HttpHeaders.ACCEPT_LANGUAGE);
-            conditionalAppend(sb, medyatype, HttpHeaders.CONTENT_TYPE);
-            putSingleRemoveNull(HttpHeaders.VARY, sb.toString());
+            conditionalAppend(sb, encoding, HttpHeaders.ACCEPT_ENCODING);
+            if (sb.length() > 0) {
+                header(HttpHeaders.VARY, sb.toString());
+            }
             return this;
         }
 
         ///////////////////// helper methods ////////////////////////
-        public ResponseBuilder putSingleRemoveNull(String key, Object value) {
-            if (value == null)
+        private ResponseBuilder singleHeader(String key, Object value) {
+            if (value == null) {
                 metadata.remove(key);
-            else
+            } else {
                 metadata.putSingle(key, value);
+            }
             return this;
         }