You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2008/07/01 20:41:29 UTC
svn commit: r673167 [4/6] - in /cxf/trunk: parent/ rt/frontend/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend...
Copied: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSUtils.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?p2=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSUtils.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Tue Jul 1 11:41:24 2008
@@ -17,16 +17,15 @@
* under the License.
*/
-package org.apache.cxf.jaxrs;
+package org.apache.cxf.jaxrs.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.net.URLDecoder;
import java.util.ArrayList;
@@ -47,127 +46,58 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.ConsumeMime;
+import javax.ws.rs.CookieParam;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.HeaderParam;
-import javax.ws.rs.HttpMethod;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.PathParam;
import javax.ws.rs.ProduceMime;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWorkers;
import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.util.PrimitiveUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.jaxrs.impl.HttpHeadersImpl;
+import org.apache.cxf.jaxrs.impl.MessageBodyWorkersImpl;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
+import org.apache.cxf.jaxrs.impl.RequestImpl;
+import org.apache.cxf.jaxrs.impl.SecurityContextImpl;
+import org.apache.cxf.jaxrs.impl.UriInfoImpl;
import org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.jaxrs.model.OperationResourceInfoComparator;
import org.apache.cxf.jaxrs.model.URITemplate;
-import org.apache.cxf.jaxrs.provider.HttpHeadersImpl;
-import org.apache.cxf.jaxrs.provider.PathSegmentImpl;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
-import org.apache.cxf.jaxrs.provider.RequestImpl;
-import org.apache.cxf.jaxrs.provider.SecurityContextImpl;
-import org.apache.cxf.jaxrs.provider.UriInfoImpl;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
public final class JAXRSUtils {
public static final MediaType ALL_TYPES = new MediaType();
private static final Logger LOG = LogUtils.getL7dLogger(JAXRSUtils.class);
+ //private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSUtils.class);
private JAXRSUtils() {
}
- public static String getHttpMethodValue(Method m) {
- for (Annotation a : m.getAnnotations()) {
- HttpMethod httpM = a.annotationType().getAnnotation(HttpMethod.class);
- if (httpM != null) {
- return httpM.value();
- }
- }
- // TODO : make it shorter
- for (Class<?> i : m.getDeclaringClass().getInterfaces()) {
- try {
- Method interfaceMethod = i.getMethod(m.getName(), m.getParameterTypes());
- if (interfaceMethod != null) {
- return getHttpMethodValue(interfaceMethod);
- }
- } catch (NoSuchMethodException ex) {
- //ignore
- }
- }
- Class<?> superC = m.getDeclaringClass().getSuperclass();
- if (superC != null) {
- try {
- Method cMethod = superC.getMethod(m.getName(), m.getParameterTypes());
- if (cMethod != null) {
- return getHttpMethodValue(cMethod);
- }
- } catch (NoSuchMethodException ex) {
- //ignore
- }
- }
-
- return null;
- }
-
- public static Annotation getMethodAnnotation(Method m,
- Class<? extends Annotation> aClass) {
- Annotation a = m.getAnnotation(aClass);
- if (a != null) {
- return a;
- }
-
- for (Class<?> i : m.getDeclaringClass().getInterfaces()) {
- a = getClassMethodAnnotation(m, i, aClass);
- if (a != null) {
- return a;
- }
- }
- Class<?> superC = m.getDeclaringClass().getSuperclass();
- if (superC != null) {
- return getClassMethodAnnotation(m, superC, aClass);
- }
-
- return null;
- }
-
- private static Annotation getClassMethodAnnotation(Method m,
- Class<?> c,
- Class<? extends Annotation> aClass) {
- try {
- Method interfaceMethod = c.getMethod(m.getName(), m.getParameterTypes());
- if (interfaceMethod != null) {
- return getMethodAnnotation(interfaceMethod, aClass);
- }
- } catch (NoSuchMethodException ex) {
- //ignore
- }
- return null;
- }
-
- public static Annotation getClassAnnotation(Class<?> c,
- Class<? extends Annotation> aClass) {
- if (c == null) {
- return null;
- }
- Annotation p = c.getAnnotation(aClass);
- if (p != null) {
- return p;
- }
- return getClassAnnotation(c.getSuperclass(), aClass);
- }
-
public static List<PathSegment> getPathSegments(String thePath, boolean decode) {
String[] segments = thePath.split("/");
List<PathSegment> theList = new ArrayList<PathSegment>();
@@ -182,7 +112,7 @@
public static List<MediaType> getMediaTypes(String[] values) {
List<MediaType> supportedMimeTypes = new ArrayList<MediaType>(values.length);
for (int i = 0; i < values.length; i++) {
- supportedMimeTypes.add(MediaType.parse(values[i]));
+ supportedMimeTypes.add(MediaType.valueOf(values[i]));
}
return supportedMimeTypes;
}
@@ -190,33 +120,88 @@
public static ClassResourceInfo findSubResourceClass(ClassResourceInfo resource,
Class subResourceClassType) {
for (ClassResourceInfo subCri : resource.getSubClassResourceInfo()) {
- if (subCri.getResourceClass() == subResourceClassType) {
+ if (subCri.getResourceClass().isAssignableFrom(subResourceClassType)) {
return subCri;
}
}
return null;
}
- public static OperationResourceInfo findTargetResourceClass(List<ClassResourceInfo> resources,
- String path,
- String httpMethod,
- MultivaluedMap<String, String> values,
- String requestContentType,
- String acceptContentTypes) {
+
+ @SuppressWarnings("unchecked")
+ public static void handleSetters(ClassResourceInfo cri,
+ Object requestObject,
+ Message message) {
+ InjectionUtils.injectContextMethods(requestObject, cri, message);
+ // Param methods
+ String relativePath = (String)message.get(JAXRSInInterceptor.RELATIVE_PATH);
+ MultivaluedMap<String, String> values =
+ (MultivaluedMap<String, String>)message.get(URITemplate.TEMPLATE_PARAMETERS);
+ for (Method m : cri.getParameterMethods()) {
+ Object o = createHttpParameterValue(m.getAnnotations(),
+ m.getParameterTypes()[0],
+ m.getGenericParameterTypes()[0],
+ message,
+ values,
+ relativePath,
+ cri);
+ if (o != null) {
+ InjectionUtils.injectThroughMethod(requestObject, m, o);
+ }
+ }
+ // Param fields
+ for (Field f : cri.getParameterFields()) {
+ Object o = createHttpParameterValue(f.getAnnotations(),
+ f.getType(),
+ f.getGenericType(),
+ message,
+ values,
+ relativePath,
+ cri);
+ if (o != null) {
+ InjectionUtils.injectFieldValue(f, requestObject, o);
+ }
+ }
+
+ }
+
+ public static ClassResourceInfo selectResourceClass(List<ClassResourceInfo> resources,
+ String path,
+ MultivaluedMap<String, String> values) {
+
+ if (resources.size() == 1) {
+ return resources.get(0).getURITemplate().match(path, values)
+ ? resources.get(0) : null;
+ }
+
+ SortedMap<ClassResourceInfo, MultivaluedMap<String, String>> candidateList =
+ new TreeMap<ClassResourceInfo, MultivaluedMap<String, String>>(
+ new Comparator<ClassResourceInfo>() {
+
+ public int compare(ClassResourceInfo cr1, ClassResourceInfo cr2) {
+ int g1 = cr1.getURITemplate().getNumberOfGroups();
+ int g2 = cr2.getURITemplate().getNumberOfGroups();
+ // descending order
+ return g1 < g2 ? 1 : g1 > g2 ? -1 : 0;
+ }
+
+ });
for (ClassResourceInfo resource : resources) {
- URITemplate uriTemplate = resource.getURITemplate();
MultivaluedMap<String, String> map = new MetadataMap<String, String>();
- if (uriTemplate.match(path, map)) {
- String subResourcePath = map.getFirst(URITemplate.FINAL_MATCH_GROUP);
- OperationResourceInfo ori = findTargetMethod(resource, subResourcePath, httpMethod, map,
- requestContentType, acceptContentTypes);
- if (ori != null) {
- values.putAll(map);
- return ori;
- }
+ if (resource.getURITemplate().match(path, map)) {
+ candidateList.put(resource, map);
}
}
+
+ if (!candidateList.isEmpty()) {
+ Map.Entry<ClassResourceInfo, MultivaluedMap<String, String>> firstEntry =
+ candidateList.entrySet().iterator().next();
+ values.putAll(firstEntry.getValue());
+ return firstEntry.getKey();
+ }
+
+
return null;
}
@@ -225,21 +210,19 @@
String httpMethod,
MultivaluedMap<String, String> values,
String requestContentType,
- String acceptContentTypes) {
+ List<MediaType> acceptContentTypes) {
SortedMap<OperationResourceInfo, MultivaluedMap<String, String>> candidateList =
new TreeMap<OperationResourceInfo, MultivaluedMap<String, String>>(
new OperationResourceInfoComparator());
MediaType requestType = requestContentType == null
- ? ALL_TYPES : MediaType.parse(requestContentType);
- List<MediaType> acceptTypes = JAXRSUtils.sortMediaTypes(acceptContentTypes);
-
- for (MediaType acceptType : acceptTypes) {
+ ? ALL_TYPES : MediaType.valueOf(requestContentType);
+ for (MediaType acceptType : acceptContentTypes) {
for (OperationResourceInfo ori : resource.getMethodDispatcher().getOperationResourceInfos()) {
URITemplate uriTemplate = ori.getURITemplate();
MultivaluedMap<String, String> map = cloneMap(values);
if (uriTemplate != null && uriTemplate.match(path, map)) {
- if (ori.isSubResourceLocator() && matchMimeTypes(requestType, acceptType, ori)) {
+ if (ori.isSubResourceLocator()) {
candidateList.put(ori, map);
} else if (ori.getHttpMethod().equalsIgnoreCase(httpMethod)
&& matchMimeTypes(requestType, acceptType, ori)) {
@@ -273,40 +256,11 @@
: getMediaTypes(pm.value());
}
- private static class OperationResourceInfoComparator implements Comparator<OperationResourceInfo> {
- public int compare(OperationResourceInfo e1, OperationResourceInfo e2) {
-
- List<MediaType> mimeType1 =
- getConsumeTypes(e1.getMethod().getAnnotation(ConsumeMime.class));
- List<MediaType> mimeType2 =
- getConsumeTypes(e2.getMethod().getAnnotation(ConsumeMime.class));
-
- // TODO: we actually need to check all consume and produce types here ?
- int result = JAXRSUtils.compareMediaTypes(mimeType1.get(0),
- mimeType2.get(0));
- if (result == 0) {
- //use the media type of output data as the secondary key.
- List<MediaType> mimeTypeP1 =
- getProduceTypes(e1.getMethod().getAnnotation(ProduceMime.class));
-
- List<MediaType> mimeTypeP2 =
- getProduceTypes(e2.getMethod().getAnnotation(ProduceMime.class));
-
- return JAXRSUtils.compareMediaTypes(mimeTypeP1.get(0),
- mimeTypeP2.get(0));
- } else {
- return result;
- }
-
- }
-
- }
-
public static int compareMediaTypes(MediaType mt1, MediaType mt2) {
if (mt1.equals(mt2)) {
- float q1 = getMediaTypeQualityFactor(mt1);
- float q2 = getMediaTypeQualityFactor(mt2);
+ float q1 = getMediaTypeQualityFactor(mt1.getParameters().get("q"));
+ float q2 = getMediaTypeQualityFactor(mt2.getParameters().get("q"));
int result = Float.compare(q1, q2);
return result == 0 ? result : ~result;
}
@@ -330,8 +284,7 @@
}
- private static float getMediaTypeQualityFactor(MediaType mt) {
- String q = mt.getParameters().get("q");
+ public static float getMediaTypeQualityFactor(String q) {
if (q == null) {
return 1;
}
@@ -352,7 +305,7 @@
Message message) {
- Method method = ori.getMethod();
+ Method method = ori.getAnnotatedMethod();
Class[] parameterTypes = method.getParameterTypes();
Type[] genericParameterTypes = method.getGenericParameterTypes();
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
@@ -374,7 +327,7 @@
private static Object processParameter(Class<?> parameterClass,
Type parameterType,
- Annotation[] parameterAnnotations,
+ Annotation[] parameterAnns,
MultivaluedMap<String, String> values,
Message message,
OperationResourceInfo ori) {
@@ -382,8 +335,9 @@
String path = (String)message.get(JAXRSInInterceptor.RELATIVE_PATH);
- if ((parameterAnnotations == null || parameterAnnotations.length == 0)
- && ("PUT".equals(ori.getHttpMethod()) || "POST".equals(ori.getHttpMethod()))) {
+ if (parameterAnns == null || parameterAnns.length == 0) {
+ // we can't really limit it to just PUT and POST
+
String contentType = (String)message.get(Message.CONTENT_TYPE);
if (contentType == null) {
@@ -392,48 +346,89 @@
}
return readFromMessageBody(parameterClass,
- is,
- MediaType.parse(contentType),
- ori.getConsumeTypes());
- } else if (parameterAnnotations[0].annotationType() == Context.class
- && ori.getClassResourceInfo().isRoot()) {
- return createHttpContextValue(message, parameterClass);
- } else if (parameterAnnotations[0].annotationType() == PathParam.class) {
- return readFromUriParam((PathParam)parameterAnnotations[0], parameterClass, parameterType,
- parameterAnnotations, path, values);
- }
-
- Object result = null;
-
- // TODO : deal with @DefaultValues
- if (parameterAnnotations[0].annotationType() == QueryParam.class) {
- result = readQueryString((QueryParam)parameterAnnotations[0], parameterClass, message, null);
- } else if (parameterAnnotations[0].annotationType() == MatrixParam.class) {
- result = processMatrixParam(message, ((MatrixParam)parameterAnnotations[0]).value(),
- parameterClass, null);
- } else if (parameterAnnotations[0].annotationType() == HeaderParam.class) {
- result = processHeaderParam(message, ((HeaderParam)parameterAnnotations[0]).value(),
- parameterClass, null);
+ parameterType,
+ parameterAnns,
+ is,
+ MediaType.valueOf(contentType),
+ ori.getConsumeTypes(),
+ message);
+ } else if (parameterAnns[0].annotationType() == Context.class) {
+ return createContextValue(message, parameterType, parameterClass);
+ } else {
+
+ return createHttpParameterValue(parameterAnns,
+ parameterClass,
+ parameterType,
+ message,
+ values,
+ path,
+ ori.getClassResourceInfo());
+ }
+ }
+
+ private static Object createHttpParameterValue(Annotation[] anns,
+ Class<?> parameterClass,
+ Type genericParam,
+ Message message,
+ MultivaluedMap<String, String> values,
+ String path,
+ ClassResourceInfo cri) {
+
+ boolean isEncoded = AnnotationUtils.isEncoded(anns, cri);
+
+ PathParam pathParam = AnnotationUtils.getAnnotation(anns, PathParam.class);
+ if (pathParam != null) {
+ return readFromUriParam(pathParam, parameterClass, genericParam, path,
+ values, !isEncoded);
+ }
+
+ DefaultValue defaultAnn = AnnotationUtils.getAnnotation(anns, DefaultValue.class);
+ String defaultValue = defaultAnn != null ? defaultAnn.value() : null;
+
+ QueryParam qp = AnnotationUtils.getAnnotation(anns, QueryParam.class);
+ if (qp != null) {
+ return readQueryString(qp, parameterClass, genericParam, message,
+ defaultValue, !isEncoded);
+ }
+
+ MatrixParam mp = AnnotationUtils.getAnnotation(anns, MatrixParam.class);
+ if (mp != null) {
+ return processMatrixParam(message, mp.value(), parameterClass, genericParam,
+ defaultValue, !isEncoded);
+ }
+
+ CookieParam cookie = AnnotationUtils.getAnnotation(anns, CookieParam.class);
+ if (cookie != null) {
+ return processCookieParam(message, cookie.value(), parameterClass, genericParam, defaultValue);
+ }
+
+ HeaderParam hp = AnnotationUtils.getAnnotation(anns, HeaderParam.class);
+ if (hp != null) {
+ return processHeaderParam(message, hp.value(), parameterClass, genericParam, defaultValue);
}
- return result;
+ return null;
}
private static Object processMatrixParam(Message m, String key,
- Class<?> pClass, String defaultValue) {
+ Class<?> pClass, Type genericType,
+ String defaultValue,
+ boolean decode) {
List<PathSegment> segments = JAXRSUtils.getPathSegments(
- (String)m.get(Message.PATH_INFO), true);
- String value = null;
+ (String)m.get(Message.PATH_INFO), decode);
if (segments.size() > 0) {
MultivaluedMap<String, String> params =
segments.get(segments.size() - 1).getMatrixParameters();
List<String> values = params.get(key);
- if (values != null && values.size() > 0) {
- value = values.get(0);
- }
+ return InjectionUtils.createParameterObject(values,
+ pClass,
+ genericType,
+ defaultValue,
+ false,
+ false);
}
- return value == null ? defaultValue : handleParameter(value, pClass);
+ return null;
}
public static MultivaluedMap<String, String> getMatrixParams(String path, boolean decode) {
@@ -444,7 +439,7 @@
@SuppressWarnings("unchecked")
private static Object processHeaderParam(Message m, String header,
- Class<?> pClass, String defaultValue) {
+ Class<?> pClass, Type genericType, String defaultValue) {
Map<String, List<String>> headers = (Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS);
List<String> values = headers.get(header);
StringBuilder sb = new StringBuilder();
@@ -456,32 +451,70 @@
}
}
}
- return sb.length() > 0 ? handleParameter(sb.toString(), pClass) : defaultValue;
+ return sb.length() > 0 ? InjectionUtils.handleParameter(sb.toString(), pClass) : defaultValue;
}
@SuppressWarnings("unchecked")
- public static Object createHttpContextValue(Message m, Class<?> clazz) {
-
- if (UriInfo.class.isAssignableFrom(clazz)) {
- MultivaluedMap<String, String> templateParams =
- (MultivaluedMap<String, String>)m.get(URITemplate.TEMPLATE_PARAMETERS);
- return new UriInfoImpl(m, templateParams);
+ private static Object processCookieParam(Message m, String cookieName,
+ Class<?> pClass, Type genericType, String defaultValue) {
+ Map<String, List<String>> headers =
+ (Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS);
+ // get the cookie with this name...
+ List<String> values = headers.get("Cookie");
+ String value = "";
+ if (values != null && values.get(0).contains(cookieName + '=')) {
+ value = values.get(0);
}
- if (HttpHeaders.class.isAssignableFrom(clazz)) {
- return new HttpHeadersImpl(m);
+ if (pClass.isAssignableFrom(Cookie.class)) {
+ return Cookie.valueOf(value.length() == 0 ? defaultValue : value);
}
- if (Request.class.isAssignableFrom(clazz)) {
- return new RequestImpl(m);
- }
- if (SecurityContext.class.isAssignableFrom(clazz)) {
- return new SecurityContextImpl(m);
+ return value.length() > 0 ? InjectionUtils.handleParameter(value, pClass) : defaultValue;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Object createContextValue(Message m, Type genericType, Class<?> clazz) {
+
+ Object o = null;
+ if (UriInfo.class.isAssignableFrom(clazz)) {
+ o = createUriInfo(m);
+ } else if (HttpHeaders.class.isAssignableFrom(clazz)) {
+ o = new HttpHeadersImpl(m);
+ } else if (Request.class.isAssignableFrom(clazz)) {
+ o = new RequestImpl(m);
+ } else if (SecurityContext.class.isAssignableFrom(clazz)) {
+ o = new SecurityContextImpl(m);
+ } else if (MessageBodyWorkers.class.isAssignableFrom(clazz)) {
+ o = new MessageBodyWorkersImpl(m);
+ } else if (ContextResolver.class.isAssignableFrom(clazz)) {
+ o = createContextResolver(genericType, m);
}
+ return o == null ? createServletResourceValue(m, clazz) : o;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static UriInfo createUriInfo(Message m) {
+ MultivaluedMap<String, String> templateParams =
+ (MultivaluedMap<String, String>)m.get(URITemplate.TEMPLATE_PARAMETERS);
+ return new UriInfoImpl(m, templateParams);
+ }
+
+ public static ContextResolver<?> createContextResolver(Type genericType, Message m) {
+ if (genericType instanceof ParameterizedType) {
+ return ProviderFactory.getInstance().createContextResolver(
+ ((ParameterizedType)genericType).getActualTypeArguments()[0], m);
+ }
return null;
}
- public static Object createServletResourceValue(Message m, Class<?> clazz) {
+ public static Object createResourceValue(Message m, Class<?> clazz) {
+ // lets assume we're aware of servlet types only that can be @Resource-annotated
+ return createServletResourceValue(m, clazz);
+ }
+
+ private static Object createServletResourceValue(Message m, Class<?> clazz) {
+
if (HttpServletRequest.class.isAssignableFrom(clazz)) {
return (HttpServletRequest) m.get(AbstractHTTPDestination.HTTP_REQUEST);
}
@@ -496,68 +529,56 @@
}
private static Object readFromUriParam(PathParam uriParamAnnotation,
- Class<?> parameter,
- Type parameterType,
- Annotation[] parameterAnnotations,
+ Class<?> paramType,
+ Type genericType,
String path,
- MultivaluedMap<String, String> values) {
+ MultivaluedMap<String, String> values,
+ boolean decoded) {
String parameterName = uriParamAnnotation.value();
- if (parameterName == null || parameterName.length() == 0) {
- // Invalid URI parameter name
- return null;
- }
-
- String result = null;
- List<String> results = values.get(parameterName);
- if (values != null && values.size() > 0) {
- result = results.get(results.size() - 1);
- }
- if (result != null) {
- return handleParameter(result, parameter);
+ if ("".equals(parameterName)) {
+ return InjectionUtils.handleBean(paramType, values);
+ } else {
+ List<String> results = values.get(parameterName);
+ return InjectionUtils.createParameterObject(results,
+ paramType,
+ genericType,
+ null,
+ true,
+ decoded);
}
- return result;
}
- private static Object handleParameter(String value, Class<?> pClass) {
- if (pClass.isPrimitive()) {
- return PrimitiveUtils.read(value, pClass);
- }
- // check constructors accepting a single String value
- try {
- Constructor<?> c = pClass.getConstructor(new Class<?>[]{String.class});
- if (c != null) {
- return c.newInstance(new Object[]{value});
- }
- } catch (Exception ex) {
- // try valueOf
- }
- // check for valueOf(String) static methods
- try {
- Method m = pClass.getMethod("valueOf", new Class<?>[]{String.class});
- if (m != null && Modifier.isStatic(m.getModifiers())) {
- return m.invoke(null, new Object[]{value});
- }
- } catch (Exception ex) {
- // no luck
- }
- return null;
- }
+
//TODO : multiple query string parsing, do it once
- private static Object readQueryString(QueryParam queryParam, Class<?> parameter,
- Message m, String defaultValue) {
+ @SuppressWarnings("unchecked")
+ private static Object readQueryString(QueryParam queryParam,
+ Class<?> paramType,
+ Type genericType,
+ Message m,
+ String defaultValue,
+ boolean decode) {
String queryName = queryParam.value();
- String result = getStructuredParams((String)m.get(Message.QUERY_STRING),
- "&",
- true).getFirst(queryName);
-
- if (result != null) {
- return handleParameter(result, parameter);
+ if ("".equals(queryName)) {
+ return InjectionUtils.handleBean(paramType, new UriInfoImpl(m, null).getQueryParameters());
+ } else {
+ List<String> results = getStructuredParams((String)m.get(Message.QUERY_STRING),
+ "&",
+ decode).get(queryName);
+
+ return InjectionUtils.createParameterObject(results,
+ paramType,
+ genericType,
+ defaultValue,
+ false,
+ false);
+
}
- return result;
}
+
+
/**
* Retrieve map of query parameters from the passed in message
* @param message
@@ -590,8 +611,13 @@
}
@SuppressWarnings("unchecked")
- private static <T> Object readFromMessageBody(Class<T> targetTypeClass, InputStream is,
- MediaType contentType, List<MediaType> consumeTypes) {
+ private static <T> Object readFromMessageBody(Class<T> targetTypeClass,
+ Type parameterType,
+ Annotation[] parameterAnnotations,
+ InputStream is,
+ MediaType contentType,
+ List<MediaType> consumeTypes,
+ Message m) {
List<MediaType> types = JAXRSUtils.intersectMimeTypes(consumeTypes, contentType);
@@ -599,11 +625,18 @@
for (MediaType type : types) {
provider = ProviderFactory.getInstance()
- .createMessageBodyReader(targetTypeClass, type);
+ .createMessageBodyReader(targetTypeClass,
+ parameterType,
+ parameterAnnotations,
+ type,
+ m);
// TODO : make the exceptions
if (provider != null) {
try {
- return provider.readFrom(targetTypeClass, contentType, null, is);
+ HttpHeaders headers = new HttpHeadersImpl(m);
+ return provider.readFrom(
+ targetTypeClass, parameterType, parameterAnnotations, contentType,
+ headers.getRequestHeaders(), is);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("Error deserializing input stream into target class "
@@ -646,7 +679,7 @@
} else {
types = "";
}
- acceptValues.add(MediaType.parse(tp));
+ acceptValues.add(MediaType.valueOf(tp));
}
} else {
acceptValues.add(ALL_TYPES);
@@ -662,19 +695,26 @@
* @param mimeTypesB
* @return return a list of intersected mime types
*/
- public static List<MediaType> intersectMimeTypes(List<MediaType> mimeTypesA,
- List<MediaType> mimeTypesB) {
+ private static List<MediaType> doIntersectMimeTypes(List<MediaType> requiredMediaTypes,
+ List<MediaType> userMediaTypes) {
Set<MediaType> supportedMimeTypeList = new LinkedHashSet<MediaType>();
- for (MediaType mimeTypeA : mimeTypesA) {
- for (MediaType mimeTypeB : mimeTypesB) {
- if (mimeTypeB.isCompatible(mimeTypeA) || mimeTypeA.isCompatible(mimeTypeB)) {
+ for (MediaType requiredType : requiredMediaTypes) {
+ for (MediaType userType : userMediaTypes) {
+ if (requiredType.isCompatible(userType) || userType.isCompatible(requiredType)) {
- String type = mimeTypeA.getType().equals(MediaType.MEDIA_TYPE_WILDCARD)
- ? mimeTypeB.getType() : mimeTypeA.getType();
- String subtype = mimeTypeA.getSubtype().equals(MediaType.MEDIA_TYPE_WILDCARD)
- ? mimeTypeB.getSubtype() : mimeTypeA.getSubtype();
- supportedMimeTypeList.add(new MediaType(type, subtype));
+ for (Map.Entry<String, String> entry : requiredType.getParameters().entrySet()) {
+ String value = userType.getParameters().get(entry.getKey());
+ if (value != null && !value.equals(entry.getValue())) {
+ continue;
+ }
+ }
+
+ String type = requiredType.getType().equals(MediaType.MEDIA_TYPE_WILDCARD)
+ ? userType.getType() : requiredType.getType();
+ String subtype = requiredType.getSubtype().equals(MediaType.MEDIA_TYPE_WILDCARD)
+ ? userType.getSubtype() : requiredType.getSubtype();
+ supportedMimeTypeList.add(new MediaType(type, subtype, requiredType.getParameters()));
}
}
}
@@ -683,6 +723,18 @@
}
+ public static List<MediaType> intersectMimeTypes(List<MediaType> requiredMediaTypes,
+ List<MediaType> userMediaTypes,
+ boolean userTypes) {
+ return userTypes ? doIntersectMimeTypes(userMediaTypes, requiredMediaTypes)
+ : doIntersectMimeTypes(requiredMediaTypes, userMediaTypes);
+ }
+
+ public static List<MediaType> intersectMimeTypes(List<MediaType> requiredMediaTypes,
+ List<MediaType> userMediaTypes) {
+ return intersectMimeTypes(requiredMediaTypes, userMediaTypes, false);
+ }
+
public static List<MediaType> intersectMimeTypes(List<MediaType> mimeTypesA,
MediaType mimeTypeB) {
return intersectMimeTypes(mimeTypesA,
@@ -696,7 +748,10 @@
}
public static List<MediaType> sortMediaTypes(String mediaTypes) {
- List<MediaType> types = JAXRSUtils.parseMediaTypes(mediaTypes);
+ return sortMediaTypes(JAXRSUtils.parseMediaTypes(mediaTypes));
+ }
+
+ public static List<MediaType> sortMediaTypes(List<MediaType> types) {
if (types.size() > 1) {
Collections.sort(types, new Comparator<MediaType>() {
@@ -709,36 +764,7 @@
return types;
}
- public static void injectHttpContextValues(Object o,
- OperationResourceInfo ori,
- Message m) {
-
- for (Field f : ori.getClassResourceInfo().getHttpContexts()) {
- Object value = createHttpContextValue(m, f.getType());
- f.setAccessible(true);
- try {
- f.set(o, value);
- } catch (IllegalAccessException ex) {
- // ignore
- }
- }
- }
- public static void injectServletResourceValues(Object o,
- OperationResourceInfo ori,
- Message m) {
-
- for (Field f : ori.getClassResourceInfo().getResources()) {
- Object value = createServletResourceValue(m, f.getType());
- f.setAccessible(true);
- try {
- f.set(o, value);
- } catch (IllegalAccessException ex) {
- // ignore
- }
- }
- }
-
private static <K, V> MultivaluedMap<K, V> cloneMap(MultivaluedMap<K, V> map1) {
MultivaluedMap<K, V> map2 = new MetadataMap<K, V>();
@@ -748,4 +774,25 @@
return map2;
}
+
+ @SuppressWarnings("unchecked")
+ public static Response convertFaultToResponse(Throwable ex) {
+
+ ExceptionMapper mapper =
+ ProviderFactory.getInstance().createExceptionMapper(ex.getClass(),
+ new MessageImpl());
+ if (mapper != null) {
+ Response excResponse = mapper.toResponse(ex);
+ if (excResponse != null) {
+ return excResponse;
+ }
+ } else if (ex instanceof WebApplicationException) {
+ WebApplicationException wex = (WebApplicationException)ex;
+ return wex.getResponse();
+ }
+
+ return null;
+
+ }
+
}
Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties Tue Jul 1 11:41:24 2008
@@ -0,0 +1,24 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+NO_CONTENT_TYPE_SPECIFIED=No Content-Type specified for HTTP {0}
+METHOD_INJECTION_FAILURE=Method {0} injection failure
+FIELD_INJECTION_FAILURE=Field {0} injection failure
+CLASS_INSTANCIATION_FAILURE=Class {0} can not be instanciated
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/Messages.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/resources/META-INF/services/javax.ws.rs.ext.RuntimeDelegate
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/resources/META-INF/services/javax.ws.rs.ext.RuntimeDelegate?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/resources/META-INF/services/javax.ws.rs.ext.RuntimeDelegate (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/resources/META-INF/services/javax.ws.rs.ext.RuntimeDelegate Tue Jul 1 11:41:24 2008
@@ -1 +1 @@
-org.apache.cxf.jaxrs.provider.RuntimeDelegateImpl
\ No newline at end of file
+org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl
\ No newline at end of file
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd Tue Jul 1 11:41:24 2008
@@ -45,7 +45,9 @@
<xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
<xsd:element name="serviceBeans" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
- <xsd:element name="entityProviders" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="extensionMappings" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="languageMappings" type="xsd:anyType" minOccurs="0"/>
</xsd:all>
<xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
<xsd:attribute name="address" type="xsd:string" />
Added: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java Tue Jul 1 11:41:24 2008
@@ -0,0 +1,222 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxrs;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.ConsumeMime;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.MatrixParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.ProduceMime;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.MessageBodyWorkers;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
+
+public class Customer {
+
+ @XmlRootElement(name = "CustomerBean")
+ public static class CustomerBean {
+ private String a;
+ private Long b;
+ public void setA(String aString) {
+ this.a = aString;
+ }
+ public void setB(Long bLong) {
+ this.b = bLong;
+ }
+ public String getA() {
+ return a;
+ }
+ public Long getB() {
+ return b;
+ }
+
+ }
+
+ @Context private ContextResolver<JAXBContext> cr;
+ private UriInfo uriInfo;
+ @Context private HttpHeaders headers;
+ @Context private Request request;
+ @Context private SecurityContext sContext;
+ @Context private MessageBodyWorkers bodyWorkers;
+
+ @Resource private HttpServletRequest servletRequest;
+ @Resource private HttpServletResponse servletResponse;
+ @Resource private ServletContext servletContext;
+ @Context private HttpServletRequest servletRequest2;
+ @Context private HttpServletResponse servletResponse2;
+ @Context private ServletContext servletContext2;
+
+ @Context private UriInfo uriInfo2;
+ private String queryParam;
+
+ @QueryParam("b")
+ private String b;
+
+ public String getB() {
+ return b;
+ }
+
+ public void testQueryBean(@QueryParam("") CustomerBean cb) {
+
+ }
+ public void testPathBean(@PathParam("") CustomerBean cb) {
+
+ }
+
+ public UriInfo getUriInfo() {
+ return uriInfo;
+ }
+ public UriInfo getUriInfo2() {
+ return uriInfo2;
+ }
+
+ @Context
+ public void setUriInfo(UriInfo ui) {
+ uriInfo = ui;
+ }
+
+ @QueryParam("a")
+ public void setA(String a) {
+ queryParam = a;
+ }
+
+ public String getQueryParam() {
+ return queryParam;
+ }
+
+ public HttpHeaders getHeaders() {
+ return headers;
+ }
+
+ public Request getRequest() {
+ return request;
+ }
+
+ public MessageBodyWorkers getBodyWorkers() {
+ return bodyWorkers;
+ }
+
+ public SecurityContext getSecurityContext() {
+ return sContext;
+ }
+
+ public HttpServletRequest getServletRequest() {
+ return servletRequest2;
+ }
+
+ public HttpServletResponse getServletResponse() {
+ return servletResponse2;
+ }
+
+ public ServletContext getServletContext() {
+ return servletContext2;
+ }
+
+ public HttpServletRequest getServletRequestResource() {
+ return servletRequest;
+ }
+
+ public HttpServletResponse getServletResponseResource() {
+ return servletResponse;
+ }
+
+ public ServletContext getServletContextResource() {
+ return servletContext;
+ }
+
+ public ContextResolver getContextResolver() {
+ return cr;
+ }
+
+ @ProduceMime("text/xml")
+ @ConsumeMime("text/xml")
+ public void test() {
+ // complete
+ }
+
+ @ProduceMime("text/xml")
+ public void getItAsXML() {
+ // complete
+ }
+ @ProduceMime("text/plain")
+ public void getItPlain() {
+ // complete
+ }
+
+ @ProduceMime("text/xml")
+ public void testQuery(@QueryParam("query") String queryString,
+ @QueryParam("query") int queryInt) {
+ // complete
+ }
+
+ @ProduceMime("text/xml")
+ public void testMultipleQuery(@QueryParam("query") String queryString,
+ @QueryParam("query2") String queryString2,
+ @QueryParam("query3") Long queryString3,
+ @QueryParam("query4") boolean queryBoolean4,
+ @QueryParam("query5") String queryString4) {
+ // complete
+ }
+
+ @ProduceMime("text/xml")
+ public void testMatrixParam(@MatrixParam("p1") String queryString,
+ @MatrixParam("p2") String queryString2) {
+ // complete
+ }
+
+ public void testParams(@Context UriInfo info,
+ @Context HttpHeaders hs,
+ @Context Request r,
+ @Context SecurityContext s,
+ @Context MessageBodyWorkers workers,
+ @HeaderParam("Foo") String h) {
+ // complete
+ }
+
+ public void testServletParams(@Context HttpServletRequest req,
+ @Context HttpServletResponse res,
+ @Context ServletContext context) {
+ // complete
+ }
+
+ @Path("{id1}/{id2}")
+ public void testConversion(@PathParam("id1") PathSegmentImpl id1,
+ @PathParam("id2") SimpleFactory f) {
+ // complete
+ }
+
+ public void testContextResolvers(@Context ContextResolver<JAXBContext> resolver) {
+ // complete
+ }
+};
Propchange: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java Tue Jul 1 11:41:24 2008
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxrs;
+
+import javax.ws.rs.ext.ContextResolver;
+import javax.xml.bind.JAXBContext;
+
+public class JAXBContextProvider implements ContextResolver<JAXBContext> {
+
+ public JAXBContext getContext(Class type) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBeanTest.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBeanTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBeanTest.java Tue Jul 1 11:41:24 2008
@@ -23,6 +23,7 @@
import javax.ws.rs.core.MultivaluedMap;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.model.MethodDispatcher;
import org.apache.cxf.jaxrs.model.OperationResourceInfo;
@@ -83,43 +84,47 @@
assertTrue(template.match("/bookstore/books/123", values));
assertTrue(rootCri.hasSubResources());
MethodDispatcher md = rootCri.getMethodDispatcher();
- assertEquals(6, md.getOperationResourceInfos().size());
+ assertEquals(7, md.getOperationResourceInfos().size());
for (OperationResourceInfo ori : md.getOperationResourceInfos()) {
- if ("getDescription".equals(ori.getMethod().getName())) {
+ if ("getDescription".equals(ori.getMethodToInvoke().getName())) {
assertEquals("GET", ori.getHttpMethod());
assertEquals("/path", ori.getURITemplate().getValue());
assertEquals("text/bar", ori.getProduceTypes().get(0).toString());
assertEquals("text/foo", ori.getConsumeTypes().get(0).toString());
assertFalse(ori.isSubResourceLocator());
- } else if ("getAuthor".equals(ori.getMethod().getName())) {
+ } else if ("getAuthor".equals(ori.getMethodToInvoke().getName())) {
assertEquals("GET", ori.getHttpMethod());
assertEquals("/path2", ori.getURITemplate().getValue());
assertEquals("text/bar2", ori.getProduceTypes().get(0).toString());
assertEquals("text/foo2", ori.getConsumeTypes().get(0).toString());
assertFalse(ori.isSubResourceLocator());
- } else if ("getBook".equals(ori.getMethod().getName())) {
+ } else if ("getBook".equals(ori.getMethodToInvoke().getName())) {
+ assertNull(ori.getHttpMethod());
+ assertNotNull(ori.getURITemplate());
+ assertTrue(ori.isSubResourceLocator());
+ } else if ("getNewBook".equals(ori.getMethodToInvoke().getName())) {
assertNull(ori.getHttpMethod());
assertNotNull(ori.getURITemplate());
assertTrue(ori.isSubResourceLocator());
- } else if ("addBook".equals(ori.getMethod().getName())) {
+ } else if ("addBook".equals(ori.getMethodToInvoke().getName())) {
assertEquals("POST", ori.getHttpMethod());
assertNotNull(ori.getURITemplate());
assertFalse(ori.isSubResourceLocator());
- } else if ("updateBook".equals(ori.getMethod().getName())) {
+ } else if ("updateBook".equals(ori.getMethodToInvoke().getName())) {
assertEquals("PUT", ori.getHttpMethod());
assertNotNull(ori.getURITemplate());
assertFalse(ori.isSubResourceLocator());
- } else if ("deleteBook".equals(ori.getMethod().getName())) {
+ } else if ("deleteBook".equals(ori.getMethodToInvoke().getName())) {
assertEquals("DELETE", ori.getHttpMethod());
assertNotNull(ori.getURITemplate());
assertFalse(ori.isSubResourceLocator());
} else {
- fail("unexpected OperationResourceInfo" + ori.getMethod().getName());
+ fail("unexpected OperationResourceInfo" + ori.getMethodToInvoke().getName());
}
}
// Verify sub-resource ClassResourceInfo: Book
- assertEquals(1, rootCri.getSubClassResourceInfo().size());
+ assertEquals(2, rootCri.getSubClassResourceInfo().size());
ClassResourceInfo subCri = rootCri.getSubClassResourceInfo().get(0);
assertNull(subCri.getURITemplate());
assertEquals(org.apache.cxf.jaxrs.resources.Book.class, subCri.getResourceClass());
@@ -141,7 +146,7 @@
String httpMethod,
boolean isSubresource) {
for (OperationResourceInfo ori : ops) {
- if (opName.equals(ori.getMethod().getName())) {
+ if (opName.equals(ori.getMethodToInvoke().getName())) {
assertEquals(httpMethod, ori.getHttpMethod());
assertNotNull(ori.getURITemplate());
assertEquals(isSubresource, ori.isSubResourceLocator());
Added: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java?rev=673167&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java Tue Jul 1 11:41:24 2008
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxrs;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.jaxrs.model.URITemplate;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SelectMethodCandidatesTest extends Assert {
+
+ @Test
+ public void testFindTargetResourceClassWithTemplates() throws Exception {
+ JAXRSServiceFactoryBean sf = new JAXRSServiceFactoryBean();
+ sf.setResourceClasses(org.apache.cxf.jaxrs.resources.TestResource.class);
+ sf.create();
+ List<ClassResourceInfo> resources = ((JAXRSServiceImpl)sf.getService()).getClassResourceInfos();
+
+ String contentTypes = "*/*";
+ String acceptContentTypes = "*/*";
+
+ //If acceptContentTypes does not specify a specific Mime type, the
+ //method is declared with a most specific ProduceMime type is selected.
+ MetadataMap<String, String> values = new MetadataMap<String, String>();
+ ClassResourceInfo resource = JAXRSUtils.selectResourceClass(resources, "/1/2/3/d/", values);
+ OperationResourceInfo ori = JAXRSUtils.findTargetMethod(resource,
+ values.getFirst(URITemplate.FINAL_MATCH_GROUP),
+ "GET", values, contentTypes,
+ Collections.singletonList(MediaType.valueOf(acceptContentTypes)));
+ assertNotNull(ori);
+ assertEquals("listMethod needs to be selected", "listMethod",
+ ori.getMethodToInvoke().getName());
+
+ }
+}
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProviderTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProviderTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProviderTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CacheControlHeaderProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CacheControlHeaderProviderTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.CacheControl;
@@ -30,7 +30,7 @@
@Test
public void testFromSimpleString() {
- CacheControl c = CacheControl.parse(
+ CacheControl c = CacheControl.valueOf(
"public;must-revalidate");
assertTrue(c.isPublic() && !c.isPrivate() && !c.isNoStore()
&& c.isMustRevalidate() && !c.isProxyRevalidate());
@@ -41,7 +41,7 @@
@Test
public void testFromComplexString() {
- CacheControl c = CacheControl.parse(
+ CacheControl c = CacheControl.valueOf(
"private=\"foo\";no-cache=\"bar\";no-store;no-transform;"
+ "must-revalidate;proxy-revalidate;max-age=2;s-maxage=3");
assertTrue(!c.isPublic() && c.isPrivate() && c.isNoStore()
@@ -58,7 +58,7 @@
public void testToString() {
String s = "private=\"foo\";no-cache=\"bar\";no-store;no-transform;"
+ "must-revalidate;proxy-revalidate;max-age=2;s-maxage=3";
- String parsed = CacheControl.parse(s).toString();
+ String parsed = CacheControl.valueOf(s).toString();
assertEquals(s, parsed);
}
}
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CookieHeaderProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CookieHeaderProviderTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/CookieHeaderProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.Cookie;
@@ -29,21 +29,21 @@
@Test
public void testFromSimpleString() {
- Cookie c = Cookie.parse("foo=bar");
+ Cookie c = Cookie.valueOf("foo=bar");
assertTrue("bar".equals(c.getValue())
&& "foo".equals(c.getName()));
}
@Test
public void testNoValue() {
- Cookie c = Cookie.parse("foo=");
+ Cookie c = Cookie.valueOf("foo=");
assertTrue("".equals(c.getValue())
&& "foo".equals(c.getName()));
}
@Test
public void testFromComplexString() {
- Cookie c = Cookie.parse("$Version=2;foo=bar;$Path=path;$Domain=domain");
+ Cookie c = Cookie.valueOf("$Version=2;foo=bar;$Path=path;$Domain=domain");
assertTrue("bar".equals(c.getValue())
&& "foo".equals(c.getName())
&& 2 == c.getVersion()
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProviderTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/EntityTagHeaderProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.EntityTag;
@@ -29,13 +29,13 @@
@Test
public void testFromString() {
- EntityTag tag = EntityTag.parse("\"\"");
+ EntityTag tag = EntityTag.valueOf("\"\"");
assertTrue(!tag.isWeak() && "".equals(tag.getValue()));
- tag = EntityTag.parse("W/");
+ tag = EntityTag.valueOf("W/");
assertTrue(tag.isWeak() && "".equals(tag.getValue()));
- tag = EntityTag.parse("W/\"12345\"");
+ tag = EntityTag.valueOf("W/\"12345\"");
assertTrue(tag.isWeak() && "12345".equals(tag.getValue()));
- tag = EntityTag.parse("\"12345\"");
+ tag = EntityTag.valueOf("\"12345\"");
assertTrue(!tag.isWeak() && "12345".equals(tag.getValue()));
}
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/HttpHeadersImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/HttpHeadersImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/HttpHeadersImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.util.List;
import java.util.Map;
@@ -25,7 +25,6 @@
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MultivaluedMap;
-import org.apache.cxf.jaxrs.MetadataMap;
import org.apache.cxf.message.Message;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProviderTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/MediaTypeHeaderProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -32,23 +32,23 @@
@Test
public void testSimpleType() {
- MediaType m = MediaType.parse("text/html");
+ MediaType m = MediaType.valueOf("text/html");
assertEquals("Media type was not parsed correctly",
m, new MediaType("text", "html"));
assertEquals("Media type was not parsed correctly",
- MediaType.parse("text/html "), new MediaType("text", "html"));
+ MediaType.valueOf("text/html "), new MediaType("text", "html"));
}
@Test
public void testShortWildcard() {
- MediaType m = MediaType.parse("*");
+ MediaType m = MediaType.valueOf("*");
assertEquals("Media type was not parsed correctly",
m, new MediaType("*", "*"));
}
@Test
public void testShortWildcardWithParameters() {
- MediaType m = MediaType.parse("*;q=0.2");
+ MediaType m = MediaType.valueOf("*;q=0.2");
assertEquals("Media type was not parsed correctly",
m, new MediaType("*", "*"));
}
@@ -76,7 +76,7 @@
@Test
public void testTypeWithParameters() {
- MediaType m = MediaType.parse("text/html;q=1234;b=4321");
+ MediaType m = MediaType.valueOf("text/html;q=1234;b=4321");
Map<String, String> params = new HashMap<String, String>();
params.put("q", "1234");
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MetadataMapTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/MetadataMapTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MetadataMapTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MetadataMapTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/MetadataMapTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/MetadataMapTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MetadataMapTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs;
+package org.apache.cxf.jaxrs.impl;
import java.util.ArrayList;
import java.util.List;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProviderTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NewCookieHeaderProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.NewCookie;
@@ -29,7 +29,7 @@
@Test
public void testFromSimpleString() {
- NewCookie c = NewCookie.parse("foo=bar");
+ NewCookie c = NewCookie.valueOf("foo=bar");
assertTrue("bar".equals(c.getValue())
&& "foo".equals(c.getName()));
}
@@ -37,8 +37,8 @@
@Test
public void testFromComplexString() {
- NewCookie c =
- NewCookie.parse("foo=bar;Comment=comment;Path=path;Max-Age=10;Domain=domain;Secure;Version=1");
+ NewCookie c = NewCookie.valueOf(
+ "foo=bar;Comment=comment;Path=path;Max-Age=10;Domain=domain;Secure;Version=1");
assertTrue("bar".equals(c.getValue())
&& "foo".equals(c.getName())
&& 1 == c.getVersion()
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -27,7 +27,6 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
-import org.apache.cxf.jaxrs.MetadataMap;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
import org.junit.After;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseBuilderImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,13 +17,12 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.net.URI;
import javax.ws.rs.core.Response;
-import org.apache.cxf.jaxrs.MetadataMap;
import org.junit.Assert;
import org.junit.Test;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ResponseImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,9 +17,8 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
-import org.apache.cxf.jaxrs.MetadataMap;
import org.junit.Assert;
import org.junit.Test;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RuntimeDelegateImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RuntimeDelegateImplTest.java Tue Jul 1 11:41:24 2008
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Cookie;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriBuilderImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriBuilderImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.net.URI;
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriInfoImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriInfoImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/UriInfoImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,12 +17,11 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriInfo;
-import org.apache.cxf.jaxrs.MetadataMap;
import org.apache.cxf.jaxrs.model.URITemplate;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
@@ -100,14 +99,14 @@
UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar"),
values);
- assertEquals("unexpected templates", 0, u.getTemplateParameters().size());
+ assertEquals("unexpected templates", 0, u.getPathParameters().size());
values.clear();
new URITemplate("/{id}").match("/bar%201", values);
u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar%201"),
values);
- MultivaluedMap<String, String> tps = u.getTemplateParameters(false);
+ MultivaluedMap<String, String> tps = u.getPathParameters(false);
assertEquals("Number of templates is wrong", 1, tps.size());
assertEquals("Wrong template value", tps.getFirst("id"), "bar%201");
@@ -116,7 +115,7 @@
u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/1%202/bar"),
values);
- tps = u.getTemplateParameters();
+ tps = u.getPathParameters();
assertEquals("Number of templates is wrong", 2, tps.size());
assertEquals("Wrong template value", tps.getFirst("id"), "1 2");
assertEquals("Wrong template value", tps.getFirst("baz"), "bar");
@@ -127,7 +126,7 @@
u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar"),
values);
- assertEquals("unexpected templates", 0, u.getTemplateParameters().size());
+ assertEquals("unexpected templates", 0, u.getPathParameters().size());
}
@Test
Copied: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImplTest.java (from r651969, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImplTest.java?p2=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImplTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImplTest.java&r1=651969&r2=673167&rev=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/VariantListBuilderImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/VariantListBuilderImplTest.java Tue Jul 1 11:41:24 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.jaxrs.provider;
+package org.apache.cxf.jaxrs.impl;
import java.util.List;
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/ClassResourceInfoTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/ClassResourceInfoTest.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/ClassResourceInfoTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/ClassResourceInfoTest.java Tue Jul 1 11:41:24 2008
@@ -62,11 +62,11 @@
@Test
public void testGetHttpContexts() {
ClassResourceInfo c = new ClassResourceInfo(TestClass.class);
- List<Field> fields = c.getHttpContexts();
+ List<Field> fields = c.getContextFields();
assertEquals("Only root classes should check these fields", 0, fields.size());
c = new ClassResourceInfo(TestClass.class, true);
- fields = c.getHttpContexts();
+ fields = c.getContextFields();
assertEquals("2 http context fields available", 2, fields.size());
assertTrue("Wrong fields selected",
(fields.get(0).getType() == UriInfo.class
@@ -78,10 +78,10 @@
@Test
public void testGetResources() {
ClassResourceInfo c = new ClassResourceInfo(TestClass.class);
- List<Field> fields = c.getResources();
+ List<Field> fields = c.getResourceFields();
assertEquals("Only root classes should check these fields", 0, fields.size());
c = new ClassResourceInfo(TestClass.class, true);
- fields = c.getResources();
+ fields = c.getResourceFields();
Set<Class<?>> clses = new HashSet<Class<?>>();
for (Field f : fields) {
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java?rev=673167&r1=673166&r2=673167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java Tue Jul 1 11:41:24 2008
@@ -21,7 +21,7 @@
import javax.ws.rs.core.MultivaluedMap;
-import org.apache.cxf.jaxrs.MetadataMap;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;