Author: mir
Date: Tue Feb  9 14:36:53 2010
New Revision: 908057

URL: http://svn.apache.org/viewvc?rev=908057&view=rev
Log:
CLEREZZA-108: parses the ACCEPT-header now only once (and all 
IllegalArgumentExceptions are caught at the right place)

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequest.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequestImpl.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/HttpHeadersImpl.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java?rev=908057&r1=908056&r2=908057&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
 Tue Feb  9 14:36:53 2010
@@ -132,8 +132,7 @@
                // get best writer
                List<MediaType> methodProducibleMediaTypesList = new 
ArrayList<MediaType>(
                                methodProducibleMediaTypes);
-               AcceptHeader acceptHeader = new 
AcceptHeader(request.getHeaders().get(
-                               HttpHeaders.ACCEPT));
+               AcceptHeader acceptHeader = request.getAcceptHeader();
                if (methodProducibleMediaTypesList.size() == 0) {
                        
methodProducibleMediaTypesList.add(MediaType.WILDCARD_TYPE);
                }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java?rev=908057&r1=908056&r2=908057&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
 Tue Feb  9 14:36:53 2010
@@ -103,8 +103,7 @@
 
                        Set<MethodAndInputType> invocableMethods = 
filterByConsumedType(
                                        httpMatchingMethods, request);
-                       AcceptHeader acceptHeader = new 
AcceptHeader(request.getHeaders()
-                                       .get(HttpHeaders.ACCEPT));
+                       AcceptHeader acceptHeader = request.getAcceptHeader();
                        SortedSet<MethodAndConsumedAndProducibleTypes> 
acceptableMethods = new TreeSet<MethodAndConsumedAndProducibleTypes>(
                                        filterByAcceptHeader(invocableMethods, 
acceptHeader));
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequest.java?rev=908057&r1=908056&r2=908057&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequest.java
 Tue Feb  9 14:36:53 2010
@@ -24,6 +24,7 @@
 import javax.ws.rs.core.MultivaluedMap;
 
 import org.apache.clerezza.jaxrs.extensions.HttpRequest;
+import org.apache.clerezza.triaxrs.util.AcceptHeader;
 import org.wymiwyg.wrhapi.Request;
 
 /**
@@ -51,6 +52,12 @@
        public MultivaluedMap<String, String> getHeaders();
 
        /**
+        * Returns the chosen accept header of the request
+        * @return the accept header
+        */
+       public AcceptHeader getAcceptHeader();
+
+       /**
         * Returns the body of the request.
         * 
         * @param <T>

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequestImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequestImpl.java?rev=908057&r1=908056&r2=908057&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequestImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/WebRequestImpl.java
 Tue Feb  9 14:36:53 2010
@@ -28,6 +28,7 @@
 import java.util.Set;
 
 import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Variant;
@@ -36,6 +37,7 @@
 import javax.ws.rs.ext.Providers;
 
 import org.apache.clerezza.triaxrs.providers.provided.JafMessageBodyReader;
+import org.apache.clerezza.triaxrs.util.AcceptHeader;
 import org.apache.clerezza.triaxrs.util.CaseInsensitiveMap;
 import org.wymiwyg.wrhapi.HandlerException;
 import org.wymiwyg.wrhapi.HeaderName;
@@ -49,11 +51,12 @@
  */
 public class WebRequestImpl implements WebRequest {
 
+       
        static class BodyKey {
                private Annotation[] transformationAnnotation;
                private Type genericType;
                private Class<?> type;
-
+               
                public BodyKey(Class<?> type, Type genericType,
                                Annotation[] transformationAnnotation) {
                        this.type = type;
@@ -110,6 +113,7 @@
        private Providers providers;
        private BodyKey bodyKey = null;
        private Object body = null;
+       private AcceptHeader acceptHeader = null;
 
        /**
         * Constructs a WebRequest with the specified request and using the
@@ -138,6 +142,15 @@
                return headers;
        }
 
+       @Override
+       public AcceptHeader getAcceptHeader() {
+               if (acceptHeader == null) {
+                       acceptHeader = new AcceptHeader(getHeaders()
+                                       .get(HttpHeaders.ACCEPT));
+               }
+               return acceptHeader;
+       }
+
        public <T> T getBodyObject(Class<T> type, Type genericType,
                        Annotation[] transformationAnnotation) {
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/HttpHeadersImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/HttpHeadersImpl.java?rev=908057&r1=908056&r2=908057&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/HttpHeadersImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/HttpHeadersImpl.java
 Tue Feb  9 14:36:53 2010
@@ -73,18 +73,7 @@
 
        @Override
        public List<MediaType> getAcceptableMediaTypes() {
-               List<MediaType> mediatypes = new ArrayList<MediaType>();
-               List<String> types = 
request.getHeaders().get(HttpHeaders.ACCEPT);
-               MediaTypeProvider mtp = new MediaTypeProvider();
-               
-               if(types == null){
-                       return null;
-               }
-               
-               for (String type : types) {
-                       mediatypes.add(mtp.fromString(type));
-               }
-               return mediatypes;
+               return request.getAcceptHeader().getEntries();
        }
 
        @Override


Reply via email to