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