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:20:15 UTC
svn commit: r1503291 - in /cxf/trunk:
rt/rs/client/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:20:15 2013
New Revision: 1503291
URL: http://svn.apache.org/r1503291
Log:
[CXF-5130] Adding simple WebClient SyncInvoker link
Modified:
cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
Modified: cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1503291&r1=1503290&r2=1503291&view=diff
==============================================================================
--- cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Mon Jul 15 15:20:15 2013
@@ -37,6 +37,7 @@ import javax.ws.rs.WebApplicationExcepti
import javax.ws.rs.client.AsyncInvoker;
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.Form;
@@ -1210,11 +1211,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 +1244,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 {
@Override
@@ -1398,33 +1414,155 @@ 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/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java?rev=1503291&r1=1503290&r2=1503291&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java Mon Jul 15 15:20:15 2013
@@ -94,6 +94,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);