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/11/28 15:04:45 UTC
svn commit: r721501 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/
rt/frontend/jaxrs/src/main/java/org/...
Author: sergeyb
Date: Fri Nov 28 06:04:44 2008
New Revision: 721501
URL: http://svn.apache.org/viewvc?rev=721501&view=rev
Log:
JAXRS : support for per-endpoint providers
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Fri Nov 28 06:04:44 2008
@@ -108,9 +108,10 @@
try {
result = invoke(exchange, resourceObject, methodToInvoke, params);
} catch (Fault ex) {
- Response excResponse = JAXRSUtils.convertFaultToResponse(ex.getCause());
+ String baseAddress = (String)exchange.getInMessage().get(Message.BASE_PATH);
+ Response excResponse = JAXRSUtils.convertFaultToResponse(ex.getCause(), baseAddress);
if (excResponse == null) {
- ProviderFactory.getInstance().cleatThreadLocalProxies();
+ ProviderFactory.getInstance(baseAddress).cleatThreadLocalProxies();
ClassResourceInfo criRoot =
(ClassResourceInfo)exchange.get(JAXRSInInterceptor.ROOT_RESOURCE_CLASS);
if (criRoot != null) {
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java Fri Nov 28 06:04:44 2008
@@ -97,12 +97,12 @@
ep.getService().setInvoker(invoker);
}
if (entityProviders != null) {
- ProviderFactory.getInstance().setUserProviders(entityProviders);
+ ProviderFactory.getInstance(getAddress()).setUserProviders(entityProviders);
}
- ProviderFactory.getInstance().setRequestPreporcessor(
+ ProviderFactory.getInstance(getAddress()).setRequestPreporcessor(
new RequestPreprocessor(languageMappings, extensionMappings));
if (schemaLocations != null) {
- ProviderFactory.getInstance().setSchemaLocations(schemaLocations);
+ ProviderFactory.getInstance(getAddress()).setSchemaLocations(schemaLocations);
}
if (start) {
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MessageBodyWorkersImpl.java Fri Nov 28 06:04:44 2008
@@ -41,22 +41,23 @@
public <T> MessageBodyReader<T> getMessageBodyReader(
Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return ProviderFactory.getInstance().createMessageBodyReader(
+ return ProviderFactory.getInstance((String)m.get(Message.BASE_PATH)).createMessageBodyReader(
type, genericType, annotations, mediaType, m);
}
public <T> MessageBodyWriter<T> getMessageBodyWriter(
Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return ProviderFactory.getInstance().createMessageBodyWriter(
+ return ProviderFactory.getInstance((String)m.get(Message.BASE_PATH)).createMessageBodyWriter(
type, genericType, annotations, mediaType, m);
}
public <T> ContextResolver<T> getContextResolver(Class<T> contextType, MediaType mediaType) {
- return ProviderFactory.getInstance().createContextResolver(contextType, m, mediaType);
+ return ProviderFactory.getInstance((String)m.get(Message.BASE_PATH))
+ .createContextResolver(contextType, m, mediaType);
}
public <T extends Throwable> ExceptionMapper<T> getExceptionMapper(Class<T> type) {
- return ProviderFactory.getInstance().createExceptionMapper(type, m);
+ return ProviderFactory.getInstance((String)m.get(Message.BASE_PATH)).createExceptionMapper(type, m);
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Fri Nov 28 06:04:44 2008
@@ -61,12 +61,13 @@
public void handleMessage(Message message) {
+ String baseAddress = (String)message.get(Message.BASE_PATH);
try {
- processRequest(message);
+ processRequest(message, baseAddress);
} catch (RuntimeException ex) {
- Response excResponse = JAXRSUtils.convertFaultToResponse(ex);
+ Response excResponse = JAXRSUtils.convertFaultToResponse(ex, baseAddress);
if (excResponse == null) {
- ProviderFactory.getInstance().cleatThreadLocalProxies();
+ ProviderFactory.getInstance(baseAddress).cleatThreadLocalProxies();
throw ex;
}
message.getExchange().put(Response.class, excResponse);
@@ -86,35 +87,28 @@
return path;
}
- private void processRequest(Message message) {
+ private void processRequest(Message message, String baseAddress) {
if (message.getExchange().get(OperationResourceInfo.class) != null) {
// it's a suspended invocation;
return;
}
+ String path = (String)message.get(Message.REQUEST_URI);
+
RequestPreprocessor rp =
- ProviderFactory.getInstance().getRequestPreprocessor();
+ ProviderFactory.getInstance(baseAddress).getRequestPreprocessor();
if (rp != null) {
rp.preprocess(message, new UriInfoImpl(message, null));
}
- String path = (String)message.get(Message.REQUEST_URI);
- String address = (String)message.get(Message.BASE_PATH);
-
String httpMethod = (String)message.get(Message.HTTP_REQUEST_METHOD);
String requestContentType = (String)message.get(Message.CONTENT_TYPE);
if (requestContentType == null) {
requestContentType = "*/*";
}
- if (address.startsWith("http")) {
- int idx = address.indexOf('/', 7);
- if (idx != -1) {
- address = address.substring(idx);
- }
- }
- path = updatePath(path, address);
+ path = updatePath(path, baseAddress);
//1. Matching target resource class
Service service = message.getExchange().get(Service.class);
@@ -145,7 +139,7 @@
OperationResourceInfo ori = null;
List<ProviderInfo<RequestHandler>> shs =
- ProviderFactory.getInstance().getRequestHandlers();
+ ProviderFactory.getInstance(baseAddress).getRequestHandlers();
for (ProviderInfo<RequestHandler> sh : shs) {
String newAcceptTypes = (String)message.get(Message.ACCEPT_CONTENT_TYPE);
if (!acceptTypes.equals(newAcceptTypes) || ori == null) {
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=721501&r1=721500&r2=721501&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 Fri Nov 28 06:04:44 2008
@@ -57,10 +57,11 @@
public void handleMessage(Message message) {
+ String baseAddress = (String)message.getExchange().getInMessage().get(Message.BASE_PATH);
try {
- processResponse(message);
+ processResponse(message, baseAddress);
} finally {
- ProviderFactory.getInstance().cleatThreadLocalProxies();
+ ProviderFactory.getInstance(baseAddress).cleatThreadLocalProxies();
ClassResourceInfo cri =
(ClassResourceInfo)message.getExchange().get(JAXRSInInterceptor.ROOT_RESOURCE_CLASS);
if (cri != null) {
@@ -72,7 +73,7 @@
}
@SuppressWarnings("unchecked")
- private void processResponse(Message message) {
+ private void processResponse(Message message, String baseAddress) {
MessageContentsList objs = MessageContentsList.getContentsList(message);
if (objs == null || objs.size() == 0) {
@@ -93,7 +94,7 @@
.getName());
List<ProviderInfo<ResponseHandler>> handlers =
- ProviderFactory.getInstance().getResponseHandlers();
+ ProviderFactory.getInstance(baseAddress).getResponseHandlers();
for (ProviderInfo<ResponseHandler> rh : handlers) {
Response r = rh.getProvider().handleResponse(message, operation, response);
if (r != null) {
@@ -118,7 +119,7 @@
MessageBodyWriter writer = null;
MediaType responseType = null;
for (MediaType type : availableContentTypes) {
- writer = ProviderFactory.getInstance()
+ writer = ProviderFactory.getInstance(baseAddress)
.createMessageBodyWriter(targetType,
invoked != null ? invoked.getGenericReturnType() : null,
invoked != null ? invoked.getAnnotations() : new Annotation[]{},
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Fri Nov 28 06:04:44 2008
@@ -26,7 +26,9 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
@@ -48,26 +50,31 @@
public final class ProviderFactory {
- private static final ProviderFactory PF = new ProviderFactory();
+ private static final Map<String, ProviderFactory> FACTORIES =
+ new HashMap<String, ProviderFactory>();
+
+ static {
+ FACTORIES.put("/", new ProviderFactory());
+ }
private List<ProviderInfo<MessageBodyReader>> defaultMessageReaders =
new ArrayList<ProviderInfo<MessageBodyReader>>();
private List<ProviderInfo<MessageBodyWriter>> defaultMessageWriters =
new ArrayList<ProviderInfo<MessageBodyWriter>>();
private List<ProviderInfo<MessageBodyReader>> userMessageReaders =
- new ArrayList<ProviderInfo<MessageBodyReader>>();
+ new ArrayList<ProviderInfo<MessageBodyReader>>(1);
private List<ProviderInfo<MessageBodyWriter>> userMessageWriters =
- new ArrayList<ProviderInfo<MessageBodyWriter>>();
+ new ArrayList<ProviderInfo<MessageBodyWriter>>(1);
private List<ProviderInfo<ContextResolver>> userContextResolvers =
- new ArrayList<ProviderInfo<ContextResolver>>();
+ new ArrayList<ProviderInfo<ContextResolver>>(1);
private List<ProviderInfo<ExceptionMapper>> defaultExceptionMappers =
- new ArrayList<ProviderInfo<ExceptionMapper>>();
+ new ArrayList<ProviderInfo<ExceptionMapper>>(1);
private List<ProviderInfo<ExceptionMapper>> userExceptionMappers =
- new ArrayList<ProviderInfo<ExceptionMapper>>();
+ new ArrayList<ProviderInfo<ExceptionMapper>>(1);
private List<ProviderInfo<RequestHandler>> requestHandlers =
- new ArrayList<ProviderInfo<RequestHandler>>();
+ new ArrayList<ProviderInfo<RequestHandler>>(1);
private List<ProviderInfo<ResponseHandler>> responseHandlers =
- new ArrayList<ProviderInfo<ResponseHandler>>();
+ new ArrayList<ProviderInfo<ResponseHandler>>(1);
private RequestPreprocessor requestPreprocessor;
private ProviderFactory() {
@@ -91,7 +98,19 @@
}
public static ProviderFactory getInstance() {
- return PF;
+ return getInstance("/");
+ }
+
+ public static ProviderFactory getInstance(String baseAddress) {
+ ProviderFactory pf = null;
+ synchronized (ProviderFactory.class) {
+ pf = FACTORIES.get(baseAddress);
+ if (pf == null) {
+ pf = new ProviderFactory();
+ FACTORIES.put(baseAddress, pf);
+ }
+ }
+ return pf;
}
public <T> ContextResolver<T> createContextResolver(Type contextType,
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Fri Nov 28 06:04:44 2008
@@ -567,7 +567,7 @@
public static ContextResolver<?> createContextResolver(Type genericType, Message m) {
if (genericType instanceof ParameterizedType) {
- return ProviderFactory.getInstance().createContextResolver(
+ return ProviderFactory.getInstance((String)m.get(Message.BASE_PATH)).createContextResolver(
((ParameterizedType)genericType).getActualTypeArguments()[0], m);
}
return null;
@@ -694,7 +694,7 @@
MessageBodyReader provider = null;
for (MediaType type : types) {
- provider = ProviderFactory.getInstance()
+ provider = ProviderFactory.getInstance((String)m.get(Message.BASE_PATH))
.createMessageBodyReader(targetTypeClass,
parameterType,
parameterAnnotations,
@@ -834,10 +834,10 @@
}
@SuppressWarnings("unchecked")
- public static Response convertFaultToResponse(Throwable ex) {
+ public static Response convertFaultToResponse(Throwable ex, String baseAddress) {
ExceptionMapper mapper =
- ProviderFactory.getInstance().createExceptionMapper(ex.getClass(),
+ ProviderFactory.getInstance(baseAddress).createExceptionMapper(ex.getClass(),
new MessageImpl());
if (mapper != null) {
Response excResponse = mapper.toResponse(ex);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Fri Nov 28 06:04:44 2008
@@ -63,6 +63,13 @@
}
@Test
+ public void testMultipleFactories() {
+ assertSame(ProviderFactory.getInstance(), ProviderFactory.getInstance());
+ assertSame(ProviderFactory.getInstance("/bar"), ProviderFactory.getInstance("/bar"));
+ assertNotSame(ProviderFactory.getInstance("/bar"), ProviderFactory.getInstance("/"));
+ }
+
+ @Test
public void testExceptionMappers() throws Exception {
ProviderFactory pf = ProviderFactory.getInstance();
ExceptionMapper<?> mapper =
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Fri Nov 28 06:04:44 2008
@@ -909,7 +909,7 @@
ProviderFactory.getInstance().registerUserProvider(cr);
Message m = new MessageImpl();
-
+ m.put(Message.BASE_PATH, "/");
List<Object> params =
JAXRSUtils.processParameters(ori, new MetadataMap<String, String>(), m);
assertEquals("1 parameters expected", 1, params.size());
@@ -928,7 +928,7 @@
ProviderFactory.getInstance().registerUserProvider(cr);
Message m = new MessageImpl();
-
+ m.put(Message.BASE_PATH, "/");
InjectionUtils.injectContextFields(c, ori.getClassResourceInfo(), m);
assertSame(cr.getClass(), c.getContextResolver().getClass());
}
Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java Fri Nov 28 06:04:44 2008
@@ -34,7 +34,7 @@
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriInfo;
-@Path("/bookstore")
+@Path("/")
@Produces("application/json")
public class BookStoreSpring {
Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java Fri Nov 28 06:04:44 2008
@@ -45,7 +45,7 @@
@Test
public void testGetBookByUriInfo() throws Exception {
String endpointAddress =
- "http://localhost:9080/bookstore/bookinfo?"
+ "http://localhost:9080/thebooks/bookstore/bookinfo?"
+ "param1=12¶m2=3";
getBook(endpointAddress, "resources/expected_get_book123json.txt");
}
@@ -108,6 +108,12 @@
"application/xml",
"resources/add_book.txt",
null);
+
+ doPost("http://localhost:9080/thebooks/bookstore/books/convert",
+ 500,
+ "application/xml",
+ "resources/add_book.txt",
+ null);
}
@@ -119,6 +125,12 @@
"application/json",
"resources/add_book2json_invalid.txt",
null);
+
+ doPost("http://localhost:9080/thebooks/bookstore/books/convert",
+ 500,
+ "application/json",
+ "resources/add_book2json_invalid.txt",
+ null);
}
@@ -130,6 +142,12 @@
"application/xml",
"resources/add_book2.txt",
"resources/expected_get_book123.txt");
+
+ doPost("http://localhost:9080/thebooks/bookstore/books/convert",
+ 200,
+ "application/xml",
+ "resources/add_book2.txt",
+ "resources/expected_get_book123.txt");
}
@@ -140,6 +158,12 @@
"application/json",
"resources/add_book2json.txt",
"resources/expected_get_book123.txt");
+
+ doPost("http://localhost:9080/thebooks/bookstore/books/convert",
+ 200,
+ "application/json",
+ "resources/add_book2json.txt",
+ "resources/expected_get_book123.txt");
}
private void doPost(String endpointAddress, int expectedStatus, String contentType,
Modified: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml?rev=721501&r1=721500&r2=721501&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml (original)
+++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml Fri Nov 28 06:04:44 2008
@@ -40,10 +40,12 @@
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
+ <bean class="org.apache.cxf.systest.jaxrs.BookStoreSpring" id="serviceBean"/>
+
<jaxrs:server id="bookservice"
- address="/">
+ address="/bookstore">
<jaxrs:serviceBeans>
- <bean class="org.apache.cxf.systest.jaxrs.BookStoreSpring" />
+ <ref bean="serviceBean" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jaxbProvider"/>
@@ -52,6 +54,18 @@
</jaxrs:server>
+ <jaxrs:server id="bookservice2"
+ address="/thebooks/bookstore">
+ <jaxrs:serviceBeans>
+ <ref bean="serviceBean" />
+ </jaxrs:serviceBeans>
+ <jaxrs:providers>
+ <ref bean="jaxbProvider"/>
+ <ref bean="jsonProvider"/>
+ </jaxrs:providers>
+
+ </jaxrs:server>
+
<bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="schemaHandler" ref="schemaHolder"/>
</bean>
Re: svn commit: r721501 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/
rt/frontend/jaxrs/src/main/java/org/...
Posted by Glen Mazza <gl...@verizon.net>.
On Fri, 2008-11-28 at 14:04 +0000, sergeyb@apache.org wrote:
> Author: sergeyb
> Date: Fri Nov 28 06:04:44 2008
> New Revision: 721501
>
> URL: http://svn.apache.org/viewvc?rev=721501&view=rev
> Log:
> JAXRS : support for per-endpoint providers
>
> Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
> URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=721501&r1=721500&r2=721501&view=diff
> ==============================================================================
> --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original)
> +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Fri Nov 28 06:04:44 2008
> @@ -108,9 +108,10 @@
> if (excResponse == null) {
> - ProviderFactory.getInstance().cleatThreadLocalProxies();
> + ProviderFactory.getInstance(baseAddress).cleatThreadLocalProxies();
clearThreadLocalProxies() ?
> ClassResourceInfo criRoot =
> (ClassResourceInfo)exchange.get(JAXRSInInterceptor.ROOT_RESOURCE_CLASS);
> if (criRoot != null) {
>
> Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
> URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java?rev=721501&r1=721500&r2=721501&view=diff
> ==============================================================================
> --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java (original)
> +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java Fri Nov 28 06:04:44 2008
> @@ -97,12 +97,12 @@
> ep.getService().setInvoker(invoker);
> }
> if (entityProviders != null) {
> - ProviderFactory.getInstance().setUserProviders(entityProviders);
> + ProviderFactory.getInstance(getAddress()).setUserProviders(entityProviders);
> }
> - ProviderFactory.getInstance().setRequestPreporcessor(
> + ProviderFactory.getInstance(getAddress()).setRequestPreporcessor(
setRequestPreprocessor(