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 2009/07/08 17:36:25 UTC
svn commit: r792190 - in /cxf/branches/2.2.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/
systests/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Wed Jul 8 15:36:24 2009
New Revision: 792190
URL: http://svn.apache.org/viewvc?rev=792190&view=rev
Log:
Merged revisions 792183 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r792183 | sergeyb | 2009-07-08 16:19:27 +0100 (Wed, 08 Jul 2009) | 1 line
JAX-RS : access for proxy and http clients to its config
........
Added:
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientMessageObserver.java
- copied unchanged from r792183, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientMessageObserver.java
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBeanTest.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
cxf/branches/2.2.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jul 8 15:36:24 2009
@@ -1 +1 @@
-/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792096
+/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792096,792183
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Wed Jul 8 15:36:24 2009
@@ -29,6 +29,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
@@ -47,7 +48,6 @@
import javax.ws.rs.ext.MessageBodyWriter;
import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.endpoint.ConduitSelector;
@@ -75,7 +75,9 @@
public class AbstractClient implements Client {
private static final Logger LOG = LogUtils.getL7dLogger(AbstractClient.class);
private static final ResourceBundle BUNDLE = BundleUtils.getBundle(AbstractClient.class);
-
+ private static final String REQUEST_CONTEXT = "RequestContext";
+ private static final String RESPONSE_CONTEXT = "ResponseContext";
+
protected ClientConfiguration cfg = new ClientConfiguration();
private MultivaluedMap<String, String> requestHeaders = new MetadataMap<String, String>();
@@ -495,19 +497,19 @@
message.getExchange().put(ConduitSelector.class, cfg.getConduitSelector());
}
- protected PhaseInterceptorChain setupOutInterceptorChain(Endpoint endpoint) {
+ protected static PhaseInterceptorChain setupOutInterceptorChain(ClientConfiguration cfg) {
PhaseManager pm = cfg.getBus().getExtension(PhaseManager.class);
List<Interceptor> i1 = cfg.getBus().getOutInterceptors();
List<Interceptor> i2 = cfg.getOutInterceptors();
- List<Interceptor> i3 = endpoint.getOutInterceptors();
+ List<Interceptor> i3 = cfg.getConduitSelector().getEndpoint().getOutInterceptors();
return new PhaseChainCache().get(pm.getOutPhases(), i1, i2, i3);
}
- protected PhaseInterceptorChain setupInInterceptorChain(Endpoint endpoint) {
+ protected static PhaseInterceptorChain setupInInterceptorChain(ClientConfiguration cfg) {
PhaseManager pm = cfg.getBus().getExtension(PhaseManager.class);
List<Interceptor> i1 = cfg.getBus().getInInterceptors();
List<Interceptor> i2 = cfg.getInInterceptors();
- List<Interceptor> i3 = endpoint.getInInterceptors();
+ List<Interceptor> i3 = cfg.getConduitSelector().getEndpoint().getInInterceptors();
return new PhaseChainCache().get(pm.getInPhases(), i1, i2, i3);
}
@@ -536,44 +538,28 @@
exchange.setSynchronous(true);
exchange.setOutMessage(m);
exchange.put(Bus.class, cfg.getBus());
- exchange.put(MessageObserver.class, new ClientMessageObserver());
+ exchange.put(MessageObserver.class, new ClientMessageObserver(cfg));
exchange.put(Endpoint.class, cfg.getConduitSelector().getEndpoint());
exchange.setOneWay(false);
m.setExchange(exchange);
- PhaseInterceptorChain chain = setupOutInterceptorChain(cfg.getConduitSelector().getEndpoint());
+ PhaseInterceptorChain chain = setupOutInterceptorChain(cfg);
m.setInterceptorChain(chain);
+ // context
+ if (cfg.getRequestContext().size() > 0 || cfg.getResponseContext().size() > 0) {
+ Map<String, Object> context = new HashMap<String, Object>();
+ context.put(REQUEST_CONTEXT, cfg.getRequestContext());
+ context.put(RESPONSE_CONTEXT, cfg.getResponseContext());
+ m.put(Message.INVOCATION_CONTEXT, context);
+ m.putAll(cfg.getRequestContext());
+ exchange.putAll(cfg.getRequestContext());
+ }
+
//setup conduit selector
prepareConduitSelector(m);
return m;
}
- private class ClientMessageObserver implements MessageObserver {
-
- public void onMessage(Message m) {
-
- Message message = cfg.getConduitSelector().getEndpoint().getBinding().createMessage(m);
- message.put(Message.REQUESTOR_ROLE, Boolean.TRUE);
- message.put(Message.INBOUND_MESSAGE, Boolean.TRUE);
- PhaseInterceptorChain chain = setupInInterceptorChain(cfg.getConduitSelector().getEndpoint());
- message.setInterceptorChain(chain);
- message.getExchange().setInMessage(message);
- Bus origBus = BusFactory.getThreadDefaultBus(false);
- BusFactory.setThreadDefaultBus(cfg.getBus());
-
- // execute chain
- try {
- chain.doIntercept(message);
- } finally {
- BusFactory.setThreadDefaultBus(origBus);
- }
- }
-
- }
-
-
-
-
}
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java Wed Jul 8 15:36:24 2009
@@ -18,13 +18,21 @@
*/
package org.apache.cxf.jaxrs.client;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.cxf.Bus;
import org.apache.cxf.common.util.ModCountCopyOnWriteArrayList;
import org.apache.cxf.endpoint.ConduitSelector;
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.interceptor.InterceptorProvider;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.transport.Conduit;
+import org.apache.cxf.transport.MessageObserver;
public class ClientConfiguration implements InterceptorProvider {
@@ -34,7 +42,10 @@
private List<Interceptor> inFault = new ModCountCopyOnWriteArrayList<Interceptor>();
private ConduitSelector conduitSelector;
private Bus bus;
-
+ private Map<String, Object> requestContext = new HashMap<String, Object>();
+ private Map<String, Object> responseContext = new HashMap<String, Object>();
+
+
public void setConduitSelector(ConduitSelector cs) {
this.conduitSelector = cs;
}
@@ -82,4 +93,21 @@
public void setOutFaultInterceptors(List<Interceptor> interceptors) {
outFault = interceptors;
}
+
+ public Conduit getConduit() {
+ Message message = new MessageImpl();
+ Exchange exchange = new ExchangeImpl();
+ message.setExchange(exchange);
+ exchange.put(MessageObserver.class, new ClientMessageObserver(this));
+ exchange.put(Bus.class, bus);
+ return getConduitSelector().selectConduit(message);
+ }
+
+ public Map<String, Object> getResponseContext() {
+ return responseContext;
+ }
+
+ public Map<String, Object> getRequestContext() {
+ return requestContext;
+ }
}
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Wed Jul 8 15:36:24 2009
@@ -176,6 +176,23 @@
}
/**
+ * Retieves ClientConfiguration
+ * @param client proxy or http-centric Client
+ * @return underlying ClientConfiguration instance
+ */
+ public static ClientConfiguration getConfig(Object client) {
+ if (client instanceof Client) {
+ if (client instanceof WebClient) {
+ return ((AbstractClient)client).getConfiguration();
+ } else if (client instanceof InvocationHandlerAware) {
+ Object handler = ((InvocationHandlerAware)client).getInvocationHandler();
+ return ((AbstractClient)handler).getConfiguration();
+ }
+ }
+ throw new IllegalArgumentException("Not a valid Client");
+ }
+
+ /**
* Does HTTP invocation
* @param httpMethod HTTP method
* @param body request body, can be null
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBeanTest.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBeanTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBeanTest.java Wed Jul 8 15:36:24 2009
@@ -31,6 +31,8 @@
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
+import org.apache.cxf.transport.Conduit;
+import org.apache.cxf.transport.http.HTTPConduit;
import org.junit.Assert;
import org.junit.Test;
@@ -46,6 +48,16 @@
}
@Test
+ public void testGetConduit() throws Exception {
+ JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
+ bean.setAddress("http://bar");
+ bean.setResourceClass(BookStore.class);
+ BookStore store = bean.create(BookStore.class);
+ Conduit conduit = WebClient.getConfig(store).getConduit();
+ assertTrue(conduit instanceof HTTPConduit);
+ }
+
+ @Test
public void testTemplateInRootPathInherit() throws Exception {
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setAddress("http://bar");
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Wed Jul 8 15:36:24 2009
@@ -21,6 +21,9 @@
import java.net.URI;
+import org.apache.cxf.jaxrs.resources.BookInterface;
+import org.apache.cxf.jaxrs.resources.BookStore;
+
import org.junit.Assert;
import org.junit.Test;
@@ -143,4 +146,21 @@
assertEquals(URI.create("http://foo"), wc.getBaseURI());
assertEquals(URI.create("http://foo/1/2"), wc.getCurrentURI());
}
+
+ @Test
+ public void testWebClientConfiguration() {
+ WebClient wc = WebClient.create(URI.create("http://foo"));
+ assertNotNull(WebClient.getConfig(wc) != null);
+ }
+
+ @Test
+ public void testProxyConfiguration() {
+ // interface
+ BookInterface proxy = JAXRSClientFactory.create("http://foo", BookInterface.class);
+ assertNotNull(WebClient.getConfig(proxy) != null);
+ // cglib
+ BookStore proxy2 = JAXRSClientFactory.create("http://foo", BookStore.class);
+ assertNotNull(WebClient.getConfig(proxy2) != null);
+ }
+
}
Modified: cxf/branches/2.2.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=792190&r1=792189&r2=792190&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original)
+++ cxf/branches/2.2.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Wed Jul 8 15:36:24 2009
@@ -58,6 +58,7 @@
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.transport.http.HTTPConduit;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -104,9 +105,14 @@
String baseAddress = "http://localhost:9092/test/services/rest";
BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
BookStoreJaxrsJaxws.class);
+ HTTPConduit conduit = (HTTPConduit)WebClient.getConfig(proxy).getConduit();
+
Book b = proxy.getBook(new Long("123"));
assertEquals(123, b.getId());
assertEquals("CXF in Action", b.getName());
+
+ HTTPConduit conduit2 = (HTTPConduit)WebClient.getConfig(proxy).getConduit();
+ assertSame(conduit, conduit2);
}
@Test