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 2015/11/06 17:55:06 UTC

cxf git commit: [CXF-6670] Fixing a class cast issue

Repository: cxf
Updated Branches:
  refs/heads/master 0d4cd0bbc -> bb4ddb5be


[CXF-6670] Fixing a class cast issue


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/bb4ddb5b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/bb4ddb5b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/bb4ddb5b

Branch: refs/heads/master
Commit: bb4ddb5be95d3ce415bab2aec290ff09a3a572f6
Parents: 0d4cd0b
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Fri Nov 6 16:54:49 2015 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Fri Nov 6 16:54:49 2015 +0000

----------------------------------------------------------------------
 .../apache/cxf/jaxrs/utils/InjectionUtils.java  | 10 ++++-
 .../apache/cxf/systest/jaxrs/BookServer.java    | 39 ++++++++++++++------
 .../org/apache/cxf/systest/jaxrs/BookStore.java |  5 ++-
 .../jaxrs/JAXRSClientServerBookTest.java        |  5 ++-
 4 files changed, 42 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/bb4ddb5b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
index 3850393..fa42c6f 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
@@ -357,6 +357,7 @@ public final class InjectionUtils {
         return null;
     }
     
+    @SuppressWarnings("unchecked")
     public static <T> T handleParameter(String value, 
                                         boolean decoded,
                                         Class<T> pClass,
@@ -385,11 +386,16 @@ public final class InjectionUtils {
             throw createParamConversionException(pType, nfe);
         }
         if (result != null) {
-            return pClass.cast(result);
+            T theResult = null;
+            if (pClass.isPrimitive()) {
+                theResult = (T)result;
+            } else {
+                theResult = pClass.cast(result);
+            }
+            return theResult;
         }
         if (pClass.isPrimitive()) {
             try {
-                @SuppressWarnings("unchecked")
                 T ret = (T)PrimitiveUtils.read(value, pClass);
                 // cannot us pClass.cast as the pClass is something like
                 // Boolean.TYPE (representing the boolean primitive) and

http://git-wip-us.apache.org/repos/asf/cxf/blob/bb4ddb5b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
index 8c7f992..9c1764d 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
@@ -124,7 +124,7 @@ public class BookServer extends AbstractBusTestServerBase {
         providers.add(new BlockingRequestFilter());
         providers.add(new FaultyResponseFilter());
         providers.add(new BlockedExceptionMapper());
-        providers.add(new XmlBookParamConverter());
+        providers.add(new ParamConverterImpl());
         sf.setProviders(providers);
         List<Interceptor<? extends Message>> inInts = new ArrayList<Interceptor<? extends Message>>();
         inInts.add(new CustomInFaultyInterceptor());
@@ -270,7 +270,7 @@ public class BookServer extends AbstractBusTestServerBase {
         }
         
     }
-    public static class XmlBookParamConverter implements ParamConverterProvider {
+    public static class ParamConverterImpl implements ParamConverterProvider {
 
         @Context
         private Providers providers;
@@ -278,20 +278,35 @@ public class BookServer extends AbstractBusTestServerBase {
         @Override
         public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType,
                                                   Annotation[] annotations) {
-            if (rawType != Book.class) {
+            if (rawType == Book.class) {
+                
+                MessageBodyReader<Book> mbr = providers.getMessageBodyReader(Book.class, 
+                                                                             Book.class, 
+                                                                             annotations, 
+                                                                             MediaType.APPLICATION_XML_TYPE);
+                MessageBodyWriter<Book> mbw = providers.getMessageBodyWriter(Book.class, 
+                                                                             Book.class, 
+                                                                             annotations, 
+                                                                             MediaType.APPLICATION_XML_TYPE);
+                return (ParamConverter<T>)new XmlParamConverter(mbr, mbw);
+            } else if (rawType == byte.class) {
+                return (ParamConverter<T>)new ByteConverter();
+            } else {
                 return null;
             }
-            MessageBodyReader<Book> mbr = providers.getMessageBodyReader(Book.class, 
-                                                                         Book.class, 
-                                                                         annotations, 
-                                                                         MediaType.APPLICATION_XML_TYPE);
-            MessageBodyWriter<Book> mbw = providers.getMessageBodyWriter(Book.class, 
-                                                                         Book.class, 
-                                                                         annotations, 
-                                                                         MediaType.APPLICATION_XML_TYPE);
-            return (ParamConverter<T>)new XmlParamConverter(mbr, mbw);
             
         }
+        private static class ByteConverter implements ParamConverter<Byte> {
+            @Override
+            public Byte fromString(String t) {
+                return new Byte(t); 
+            }
+
+            @Override
+            public String toString(Byte b) {
+                return b.toString();
+            }
+        }
         private static class XmlParamConverter implements ParamConverter<Book> {
             private MessageBodyReader<Book> mbr;
             private MessageBodyWriter<Book> mbw;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bb4ddb5b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
index 4837784..cde5c7f 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
@@ -306,7 +306,10 @@ public class BookStore {
     @POST
     @Path("/echoxmlbookquery")
     @Produces("application/xml")
-    public Book echoXmlBookQuery(@QueryParam("book") Book book) {
+    public Book echoXmlBookQuery(@QueryParam("book") Book book, @QueryParam("id") byte id) {
+        if (book.getId() != (long)id) {
+            throw new RuntimeException();
+        }
         return book;
     }
     

http://git-wip-us.apache.org/repos/asf/cxf/blob/bb4ddb5b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
index 2bb461b..33ea415 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
@@ -135,11 +135,12 @@ public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase {
     public void testEchoXmlBookQuery() throws Exception {
         String address = "http://localhost:" + PORT;
         BookStore store = JAXRSClientFactory.create(address, BookStore.class,
-            Collections.singletonList(new BookServer.XmlBookParamConverter()));
-        Book b = store.echoXmlBookQuery(new Book("query", 125L));
+            Collections.singletonList(new BookServer.ParamConverterImpl()));
+        Book b = store.echoXmlBookQuery(new Book("query", 125L), (byte)125);
         assertEquals(125L, b.getId());
         assertEquals("query", b.getName());
     }
+    
     @Test
     public void testGetBookRoot() throws Exception {
         String address = "http://localhost:" + PORT + "/bookstore/;JSESSIONID=xxx";