Author: sergeyb
Date: Tue Jan 11 13:49:56 2011
New Revision: 1057629
URL: http://svn.apache.org/viewvc?rev=1057629&view=rev
Log:
[CXF-3241] Support for CGLIB-enhanced response objects
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=1057629&r1=1057628&r2=1057629&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
Tue Jan 11 13:49:56 2011
@@ -45,6 +45,7 @@ import javax.xml.stream.events.XMLEvent;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.ClassHelper;
import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.jaxrs.ext.ResponseHandler;
@@ -402,7 +403,7 @@ public class JAXRSOutInterceptor extends
if (GenericEntity.class.isAssignableFrom(targetObject.getClass())) {
return ((GenericEntity)targetObject).getRawType();
} else {
- return targetObject.getClass();
+ return ClassHelper.getRealClassFromClass(targetObject.getClass());
}
}
Modified:
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1057629&r1=1057628&r2=1057629&view=diff
==============================================================================
---
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
(original)
+++
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
Tue Jan 11 13:49:56 2011
@@ -23,6 +23,8 @@ package org.apache.cxf.systest.jaxrs;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
@@ -71,6 +73,7 @@ import javax.xml.namespace.QName;
import javax.xml.transform.dom.DOMSource;
import org.apache.cxf.annotations.GZIP;
+import org.apache.cxf.common.util.ProxyHelper;
import org.apache.cxf.helpers.XMLUtils;
import org.apache.cxf.jaxrs.ext.Oneway;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
@@ -389,6 +392,13 @@ public class BookStore {
}
@GET
+ @Path("/books/{bookId}/cglib")
+ @Produces("application/xml")
+ public Book getBookCGLIB(@PathParam("bookId") String id) throws
BookNotFoundFault {
+ return createCglibProxy(doGetBook(id));
+ }
+
+ @GET
@Path("/the books/{bookId}/")
@Produces("application/xml")
public Book getBookWithSpace(@PathParam("bookId") String id) throws
BookNotFoundFault {
@@ -895,6 +905,20 @@ public class BookStore {
}
}
+
+ private Book createCglibProxy(final Book book) {
+ final InvocationHandler handler = new InvocationHandler() {
+
+ @Override
+ public Object invoke(Object object, Method method, Object[] args)
throws Throwable {
+ return method.invoke(book, args);
+ }
+
+ };
+ return (Book)ProxyHelper.getProxy(this.getClass().getClassLoader(),
+ new Class[]{Book.class},
+ handler);
+ }
}
Modified:
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1057629&r1=1057628&r2=1057629&view=diff
==============================================================================
---
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
(original)
+++
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Tue Jan 11 13:49:56 2011
@@ -628,6 +628,13 @@ public class JAXRSClientServerBookTest e
}
@Test
+ public void testGetBook123CGLIB() throws Exception {
+ getAndCompareAsStrings("http://localhost:" + PORT +
"/bookstore/books/123/cglib",
+ "resources/expected_get_book123.txt",
+ "application/xml", 200);
+ }
+
+ @Test
public void testGetBook123() throws Exception {
getAndCompareAsStrings("http://localhost:" + PORT +
"/bookstore/books/123",
"resources/expected_get_book123.txt",