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 2013/07/15 17:34:47 UTC
svn commit: r1503302 - in /cxf/branches/2.7.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
Author: sergeyb
Date: Mon Jul 15 15:34:47 2013
New Revision: 1503302
URL: http://svn.apache.org/r1503302
Log:
Merged revisions 1503291 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1503291 | sergeyb | 2013-07-15 16:20:15 +0100 (Mon, 15 Jul 2013) | 1 line
[CXF-5130] Adding simple WebClient SyncInvoker link
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
svn:mergeinfo = /cxf/trunk:1503291
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1503302&r1=1503301&r2=1503302&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Mon Jul 15 15:34:47 2013
@@ -31,11 +31,13 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
+import javax.ws.rs.HttpMethod;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.client.AsyncInvoker;
import javax.ws.rs.client.ClientException;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.InvocationCallback;
+import javax.ws.rs.client.SyncInvoker;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.GenericEntity;
@@ -1211,11 +1213,16 @@ public class WebClient extends AbstractC
}
}
- // Async related code, consider pushing most of it to AbstractClient
+ // Link to JAX-RS 2.0 AsyncInvoker
public AsyncInvoker async() {
return new AsyncInvokerImpl();
}
+ // Link to JAX-RS 2.0 SyncInvoker
+ public SyncInvoker sync() {
+ return new SyncInvokerImpl();
+ }
+
class ClientAsyncResponseInterceptor extends AbstractPhaseInterceptor<Message> {
public ClientAsyncResponseInterceptor() {
super(Phase.UNMARSHAL);
@@ -1238,6 +1245,16 @@ public class WebClient extends AbstractC
}
}
+
+ private void setEntityHeaders(Entity<?> entity) {
+ type(entity.getMediaType());
+ if (entity.getLanguage() != null) {
+ language(entity.getLanguage().toString());
+ }
+ if (entity.getEncoding() != null) {
+ encoding(entity.getEncoding());
+ }
+ }
class AsyncInvokerImpl implements AsyncInvoker {
@@ -1399,34 +1416,154 @@ public class WebClient extends AbstractC
@Override
public <T> Future<T> method(String name, Entity<?> entity, Class<T> responseType) {
- setEntityHeaders(entity);
+ WebClient.this.setEntityHeaders(entity);
return doInvokeAsync(name, entity.getEntity(), entity.getEntity().getClass(), null,
responseType, responseType, null);
}
@Override
public <T> Future<T> method(String name, Entity<?> entity, GenericType<T> responseType) {
- setEntityHeaders(entity);
+ WebClient.this.setEntityHeaders(entity);
return doInvokeAsync(name, entity.getEntity(), entity.getEntity().getClass(), null,
responseType.getRawType(), responseType.getType(), null);
}
@Override
public <T> Future<T> method(String name, Entity<?> entity, InvocationCallback<T> callback) {
- setEntityHeaders(entity);
+ WebClient.this.setEntityHeaders(entity);
return doInvokeAsyncCallback(name, entity.getEntity(), entity.getEntity().getClass(), null,
callback);
}
-
- private void setEntityHeaders(Entity<?> entity) {
- WebClient.this.type(entity.getMediaType());
- if (entity.getLanguage() != null) {
- WebClient.this.language(entity.getLanguage().toString());
- }
- if (entity.getEncoding() != null) {
- WebClient.this.encoding(entity.getEncoding());
- }
- }
}
+
+ class SyncInvokerImpl implements SyncInvoker {
+
+ @Override
+ public Response delete() {
+ return method(HttpMethod.DELETE);
+ }
+
+ @Override
+ public <T> T delete(Class<T> cls) {
+ return method(HttpMethod.DELETE, cls);
+ }
+
+ @Override
+ public <T> T delete(GenericType<T> genericType) {
+ return method(HttpMethod.DELETE, genericType);
+ }
+
+ @Override
+ public Response get() {
+ return method(HttpMethod.GET);
+ }
+
+ @Override
+ public <T> T get(Class<T> cls) {
+ return method(HttpMethod.GET, cls);
+ }
+
+ @Override
+ public <T> T get(GenericType<T> genericType) {
+ return method(HttpMethod.GET, genericType);
+ }
+
+ @Override
+ public Response head() {
+ return method(HttpMethod.HEAD);
+ }
+
+ @Override
+ public Response options() {
+ return method(HttpMethod.OPTIONS);
+ }
+
+ @Override
+ public <T> T options(Class<T> cls) {
+ return method(HttpMethod.OPTIONS, cls);
+ }
+
+ @Override
+ public <T> T options(GenericType<T> genericType) {
+ return method(HttpMethod.OPTIONS, genericType);
+ }
+
+ @Override
+ public Response post(Entity<?> entity) {
+ return method(HttpMethod.POST, entity);
+ }
+
+ @Override
+ public <T> T post(Entity<?> entity, Class<T> cls) {
+ return method(HttpMethod.POST, entity, cls);
+ }
+
+ @Override
+ public <T> T post(Entity<?> entity, GenericType<T> genericType) {
+ return method(HttpMethod.POST, genericType);
+ }
+
+ @Override
+ public Response put(Entity<?> entity) {
+ return method(HttpMethod.PUT, entity);
+ }
+
+ @Override
+ public <T> T put(Entity<?> entity, Class<T> cls) {
+ return method(HttpMethod.PUT, entity, cls);
+ }
+
+ @Override
+ public <T> T put(Entity<?> entity, GenericType<T> genericType) {
+ return method(HttpMethod.PUT, entity, genericType);
+ }
+
+ @Override
+ public Response trace() {
+ return method("TRACE");
+ }
+
+ @Override
+ public <T> T trace(Class<T> cls) {
+ return method("TRACE", cls);
+ }
+
+ @Override
+ public <T> T trace(GenericType<T> genericType) {
+ return method("TRACE", genericType);
+ }
+
+ @Override
+ public Response method(String method) {
+ return method(method, Response.class);
+ }
+
+ @Override
+ public <T> T method(String method, Class<T> cls) {
+ return invoke(method, null, cls);
+ }
+
+ @Override
+ public <T> T method(String method, GenericType<T> genericType) {
+ return invoke(method, null, genericType);
+ }
+
+ @Override
+ public Response method(String method, Entity<?> entity) {
+ return method(method, entity, Response.class);
+ }
+
+ @Override
+ public <T> T method(String method, Entity<?> entity, Class<T> cls) {
+ WebClient.this.setEntityHeaders(entity);
+ return invoke(method, entity.getEntity(), cls);
+ }
+
+ @Override
+ public <T> T method(String method, Entity<?> entity, GenericType<T> genericType) {
+ WebClient.this.setEntityHeaders(entity);
+ return invoke(method, entity.getEntity(), genericType);
+ }
+ }
}
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java?rev=1503302&r1=1503301&r2=1503302&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java Mon Jul 15 15:34:47 2013
@@ -95,6 +95,15 @@ public class JAXRS20ClientServerBookTest
}
@Test
+ public void testGetBookSyncLink() {
+ String address = "http://localhost:" + PORT + "/bookstore/bookheaders/simple";
+ WebClient wc = createWebClient(address);
+ Book book = wc.sync().get(Book.class);
+ assertEquals(124L, book.getId());
+ validateResponse(wc);
+ }
+
+ @Test
public void testGetBookSyncWithAsync() {
String address = "http://localhost:" + PORT + "/bookstore/bookheaders/simple";
doTestGetBook(address, true);