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 2012/12/14 23:50:12 UTC
svn commit: r1422136 - in /cxf/branches/2.6.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Fri Dec 14 22:50:10 2012
New Revision: 1422136
URL: http://svn.apache.org/viewvc?rev=1422136&view=rev
Log:
Merged revisions 1421983,1422119 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1421983 | sergeyb | 2012-12-14 17:17:08 +0000 (Fri, 14 Dec 2012) | 1 line
[CXF-4702] Initial support for registering providers on the bus
........
r1422119 | sergeyb | 2012-12-14 22:07:38 +0000 (Fri, 14 Dec 2012) | 1 line
[CXF-4702] Minor optimization
........
Added:
cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BusMapperException.java
- copied unchanged from r1422119, cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BusMapperException.java
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
svn:mergeinfo = /cxf/trunk:1421983-1422119
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1422136&r1=1422135&r2=1422136&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Fri Dec 14 22:50:10 2012
@@ -115,6 +115,7 @@ public final class ProviderFactory {
private ProviderFactory(Bus bus) {
this.bus = bus;
initJaxbProviders();
+ setBusProviders();
}
// Not ideal but in the end seems like the simplest option compared
@@ -480,6 +481,30 @@ public final class ProviderFactory {
m);
}
+ private void setBusProviders() {
+ List<Object> extensions = new LinkedList<Object>();
+ final String alreadySetProp = "bus.providers.set";
+ if (bus.getProperty(alreadySetProp) == null) {
+ addBusExtension(extensions,
+ MessageBodyReader.class,
+ MessageBodyWriter.class,
+ ExceptionMapper.class);
+ if (!extensions.isEmpty()) {
+ setProviders(extensions.toArray());
+ bus.setProperty(alreadySetProp, "");
+ }
+ }
+ }
+
+ private void addBusExtension(List<Object> extensions, Class<?>... extClasses) {
+ for (Class<?> extClass : extClasses) {
+ Object ext = bus.getProperty(extClass.getName());
+ if (ext != null && extClass.isInstance(ext)) {
+ extensions.add(ext);
+ }
+ }
+ }
+
//CHECKSTYLE:OFF
private void setProviders(Object... providers) {
Modified: cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java?rev=1422136&r1=1422135&r2=1422136&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java (original)
+++ cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java Fri Dec 14 22:50:10 2012
@@ -25,6 +25,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.interceptor.Interceptor;
@@ -46,6 +49,7 @@ public class BookServer extends Abstract
protected void run() {
Bus bus = BusFactory.getDefaultBus();
+ bus.setProperty(ExceptionMapper.class.getName(), new BusMapperExceptionMapper());
setBus(bus);
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setBus(bus);
@@ -103,4 +107,12 @@ public class BookServer extends Abstract
System.out.println("done!");
}
}
+
+ private static class BusMapperExceptionMapper implements ExceptionMapper<BusMapperException> {
+
+ public Response toResponse(BusMapperException exception) {
+ return Response.serverError().header("BusMapper", "the-mapper").build();
+ }
+
+ }
}
Modified: cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1422136&r1=1422135&r2=1422136&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Fri Dec 14 22:50:10 2012
@@ -120,6 +120,12 @@ public class BookStore {
//System.out.println("PreDestroy called");
}
+ @POST
+ @Path("/mapperonbus")
+ public void mapperOnBus() {
+ throw new BusMapperException();
+ }
+
@GET
@Path("emptybook")
@Produces({"application/xml", "application/json" })
Modified: cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1422136&r1=1422135&r2=1422136&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Fri Dec 14 22:50:10 2012
@@ -89,6 +89,14 @@ public class JAXRSClientServerBookTest e
}
@Test
+ public void testUseMapperOnBus() {
+ String address = "http://localhost:" + PORT + "/bookstore/mapperonbus";
+ WebClient wc = WebClient.create(address);
+ Response r = wc.post(null);
+ assertEquals(500, r.getStatus());
+ assertEquals("the-mapper", r.getMetadata().getFirst("BusMapper").toString());
+ }
+
public void testGetIntroChapterFromSelectedBook() {
String address = "http://localhost:" + PORT + "/bookstore/books(id=le=123)/chapter";
doTestGetChapterFromSelectedBook(address);