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 2011/01/17 19:04:29 UTC
svn commit: r1060031 - in /cxf/branches/2.3.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
Author: sergeyb
Date: Mon Jan 17 18:04:29 2011
New Revision: 1060031
URL: http://svn.apache.org/viewvc?rev=1060031&view=rev
Log:
Merged revisions 1060030 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1060030 | sergeyb | 2011-01-17 18:02:31 +0000 (Mon, 17 Jan 2011) | 1 line
[CXF-3247] Supporting providers with no generic parameters
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 17 18:04:29 2011
@@ -1 +1 @@
-/cxf/trunk:1059968
+/cxf/trunk:1059968,1060030
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1060031&r1=1060030&r2=1060031&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Mon Jan 17 18:04:29 2011
@@ -174,7 +174,7 @@ public final class ProviderFactory {
List<ExceptionMapper<T>> candidates = new LinkedList<ExceptionMapper<T>>();
for (ProviderInfo<ExceptionMapper> em : exceptionMappers) {
- handleMapper((List)candidates, em, exceptionType, m);
+ handleMapper((List)candidates, em, exceptionType, m, ExceptionMapper.class);
}
if (candidates.size() == 0) {
return null;
@@ -189,7 +189,7 @@ public final class ProviderFactory {
List<ParameterHandler<T>> candidates = new LinkedList<ParameterHandler<T>>();
for (ProviderInfo<ParameterHandler> em : paramHandlers) {
- handleMapper((List)candidates, em, paramType, null);
+ handleMapper((List)candidates, em, paramType, null, ParameterHandler.class);
}
if (candidates.size() == 0) {
return null;
@@ -205,7 +205,7 @@ public final class ProviderFactory {
List<ResponseExceptionMapper<T>> candidates = new LinkedList<ResponseExceptionMapper<T>>();
for (ProviderInfo<ResponseExceptionMapper> em : responseExceptionMappers) {
- handleMapper((List)candidates, em, paramType, null);
+ handleMapper((List)candidates, em, paramType, null, ResponseExceptionMapper.class);
}
if (candidates.size() == 0) {
return null;
@@ -215,7 +215,7 @@ public final class ProviderFactory {
}
private static void handleMapper(List<Object> candidates, ProviderInfo em,
- Class<?> expectedType, Message m) {
+ Class<?> expectedType, Message m, Class<?> providerClass) {
Class<?> mapperClass = ClassHelper.getRealClass(em.getProvider());
Type[] types = getGenericInterfaces(mapperClass);
@@ -259,6 +259,8 @@ public final class ProviderFactory {
return;
}
}
+ } else if (t instanceof Class && ((Class<?>)t).isAssignableFrom(providerClass)) {
+ candidates.add(em.getProvider());
}
}
}
@@ -433,7 +435,7 @@ public final class ProviderFactory {
InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
return ep.getProvider();
}
- handleMapper((List)candidates, ep, type, m);
+ handleMapper((List)candidates, ep, type, m, MessageBodyReader.class);
}
}
@@ -487,7 +489,7 @@ public final class ProviderFactory {
InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
return ep.getProvider();
}
- handleMapper((List)candidates, ep, type, m);
+ handleMapper((List)candidates, ep, type, m, MessageBodyWriter.class);
}
}
if (candidates.size() == 0) {
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=1060031&r1=1060030&r2=1060031&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Mon Jan 17 18:04:29 2011
@@ -233,6 +233,21 @@ public class ProviderFactoryTest extends
}
@Test
+ public void testMessageBodyWriterNoTypes() throws Exception {
+ ProviderFactory pf = ProviderFactory.getInstance();
+ List<Object> providers = new ArrayList<Object>();
+ SuperBookReaderWriter2 superBookHandler = new SuperBookReaderWriter2();
+ providers.add(superBookHandler);
+ pf.setUserProviders(providers);
+ assertSame(superBookHandler,
+ pf.createMessageBodyReader(SuperBook.class, SuperBook.class, new Annotation[]{},
+ MediaType.APPLICATION_XML_TYPE, new MessageImpl()));
+ assertSame(superBookHandler,
+ pf.createMessageBodyWriter(SuperBook.class, SuperBook.class, new Annotation[]{},
+ MediaType.APPLICATION_XML_TYPE, new MessageImpl()));
+ }
+
+ @Test
public void testSortEntityProviders() throws Exception {
ProviderFactory pf = ProviderFactory.getInstance();
pf.registerUserProvider(new TestStringProvider());
@@ -602,6 +617,43 @@ public class ProviderFactoryTest extends
}
+ @Produces("application/xml")
+ @Consumes("application/xml")
+ private static class SuperBookReaderWriter2 implements MessageBodyReader, MessageBodyWriter {
+
+ public boolean isReadable(Class type, Type genericType, Annotation[] annotations,
+ MediaType mediaType) {
+ return true;
+ }
+
+ public Object readFrom(Class arg0, Type arg1, Annotation[] arg2, MediaType arg3,
+ MultivaluedMap arg4, InputStream arg5)
+ throws IOException, WebApplicationException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public long getSize(Object t, Class type, Type genericType,
+ Annotation[] annotations, MediaType mediaType) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public boolean isWriteable(Class type, Type genericType,
+ Annotation[] annotations, MediaType mediaType) {
+ return true;
+ }
+
+
+ public void writeTo(Object arg0, Class arg1, Type arg2,
+ Annotation[] arg3, MediaType arg4, MultivaluedMap arg5,
+ OutputStream arg6) throws IOException, WebApplicationException {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
private static class TestHandler implements RequestHandler {
public Response handleRequest(Message m, ClassResourceInfo resourceClass) {