Repository: cxf Updated Branches: refs/heads/master cfe59def6 -> e91272173
[CXF-6881] Updating to JAX-RS API 2.1 milestone 8 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e9127217 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e9127217 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e9127217 Branch: refs/heads/master Commit: e91272173b054ae8e5f1535b40765d6bbb545601 Parents: cfe59de Author: Dennis Kieselhorst <d...@apache.org> Authored: Wed Jun 7 13:23:35 2017 +0200 Committer: Dennis Kieselhorst <d...@apache.org> Committed: Wed Jun 7 13:23:35 2017 +0200 ---------------------------------------------------------------------- parent/pom.xml | 2 +- .../cxf/jaxrs/impl/ResponseBuilderImpl.java | 29 +++++++-- .../org/apache/cxf/jaxrs/impl/ResponseImpl.java | 67 ++++++++++++-------- .../apache/cxf/jaxrs/impl/ResponseImplTest.java | 11 ++++ .../cxf/jaxrs/client/AsyncInvokerImpl.java | 21 +----- .../client/CompletionStageRxInvokerImpl.java | 17 +---- .../cxf/jaxrs/client/SyncInvokerImpl.java | 14 ---- .../jaxrs/client/spec/ClientBuilderImpl.java | 19 ++++++ .../cxf/jaxrs/client/spec/ClientImpl.java | 4 +- .../client/spec/InvocationBuilderImpl.java | 14 ---- .../rx/client/ObservableRxInvokerImpl.java | 14 ---- 11 files changed, 99 insertions(+), 113 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/parent/pom.xml ---------------------------------------------------------------------- diff --git a/parent/pom.xml b/parent/pom.xml index 7c89c27..bbf6241 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -111,7 +111,7 @@ <cxf.geronimo.transaction.version>3.1.4</cxf.geronimo.transaction.version> <cxf.jasypt.bundle.version>1.9.0_1</cxf.jasypt.bundle.version> <cxf.javassist.version>3.19.0-GA</cxf.javassist.version> - <cxf.javax.ws.rs.version>2.1-m07</cxf.javax.ws.rs.version> + <cxf.javax.ws.rs.version>2.1-m08</cxf.javax.ws.rs.version> <cxf.jaxb.version>2.2.11</cxf.jaxb.version> <cxf.jaxb.impl.version>${cxf.jaxb.version}</cxf.jaxb.impl.version> <cxf.jaxb.core.version>${cxf.jaxb.version}</cxf.jaxb.core.version> http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java index 0d87387..49f3dbf 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java @@ -45,6 +45,7 @@ import org.apache.cxf.phase.PhaseInterceptorChain; public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { private int status = 200; + private String reasonPhrase; private boolean statusSet; private Object entity; private MultivaluedMap<String, Object> metadata = new MetadataMap<String, Object>(); @@ -56,6 +57,7 @@ public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { private ResponseBuilderImpl(ResponseBuilderImpl copy) { status = copy.status; statusSet = copy.statusSet; + reasonPhrase = copy.reasonPhrase; metadata.putAll(copy.metadata); entity = copy.entity; } @@ -64,7 +66,7 @@ public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { if (entity == null && !statusSet) { status = 204; } - ResponseImpl r = new ResponseImpl(status); + ResponseImpl r = new ResponseImpl(status, null, reasonPhrase); MetadataMap<String, Object> m = new MetadataMap<String, Object>(metadata, false, true); r.addMetadata(m); @@ -73,15 +75,27 @@ public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { return r; } - public ResponseBuilder status(int s) { - if (s < 100 || s > 599) { - throw new IllegalArgumentException("Illegal status value : " + s); - } - status = s; + public ResponseBuilder status(int statusCode) { + validateStatusCode(statusCode); + status = statusCode; + statusSet = true; + return this; + } + + public ResponseBuilder status(int statusCode, String reason) { + validateStatusCode(statusCode); + status = statusCode; statusSet = true; + reasonPhrase = reason; return this; } + private void validateStatusCode(int statusCode) { + if (statusCode < 100 || statusCode > 599) { + throw new IllegalArgumentException("Illegal status value : " + statusCode); + } + } + public ResponseBuilder entity(Object e) { entity = e; return this; @@ -224,6 +238,7 @@ public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { entity = null; annotations = null; status = 200; + reasonPhrase = null; } private ResponseBuilder setHeader(String name, Object value) { @@ -252,7 +267,7 @@ public class ResponseBuilderImpl extends ResponseBuilder implements Cloneable { private boolean valueExists(String key, Object value) { List<Object> values = metadata.get(key); - return values == null ? false : values.contains(value); + return values != null && values.contains(value); } @Override http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java index 13953e6..ce81189 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java @@ -63,7 +63,7 @@ import org.apache.cxf.message.MessageUtils; public final class ResponseImpl extends Response { - private int status; + private StatusType status; private Object entity; private Annotation[] entityAnnotations; private MultivaluedMap<String, Object> metadata; @@ -73,21 +73,30 @@ public final class ResponseImpl extends Response { private boolean entityBufferred; private Object lastEntity; - ResponseImpl(int s) { - this.status = s; + ResponseImpl(int statusCode) { + this.status = createStatusType(statusCode, null); } - ResponseImpl(int s, Object e) { - this.status = s; - this.entity = e; + ResponseImpl(int statusCode, Object entity) { + this(statusCode); + this.entity = entity; + } + + ResponseImpl(int statusCode, Object entity, String reasonPhrase) { + this.status = createStatusType(statusCode, reasonPhrase); + this.entity = entity; } public void addMetadata(MultivaluedMap<String, Object> meta) { this.metadata = meta; } - public void setStatus(int s) { - this.status = s; + public void setStatus(int statusCode) { + this.status = createStatusType(statusCode, null); + } + + public void setStatus(int statusCode, String reasonPhrase) { + this.status = createStatusType(statusCode, reasonPhrase); } public void setEntity(Object e, Annotation[] anns) { @@ -112,26 +121,11 @@ public final class ResponseImpl extends Response { } public int getStatus() { - return status; + return status.getStatusCode(); } public StatusType getStatusInfo() { - return new Response.StatusType() { - - public Family getFamily() { - return Response.Status.Family.familyOf(ResponseImpl.this.status); - } - - public String getReasonPhrase() { - Response.Status statusEnum = Response.Status.fromStatusCode(ResponseImpl.this.status); - return statusEnum != null ? statusEnum.getReasonPhrase() : ""; - } - - public int getStatusCode() { - return ResponseImpl.this.status; - } - - }; + return status; } public Object getActualEntity() { @@ -481,4 +475,27 @@ public final class ResponseImpl extends Response { throw new IllegalStateException("Entity is not available"); } } + + private Response.StatusType createStatusType(int statusCode, String reasonPhrase) { + return new Response.StatusType() { + + public Family getFamily() { + return Response.Status.Family.familyOf(statusCode); + } + + public String getReasonPhrase() { + if (reasonPhrase != null) { + return reasonPhrase; + } else { + Response.Status statusEnum = Response.Status.fromStatusCode(statusCode); + return statusEnum != null ? statusEnum.getReasonPhrase() : ""; + } + } + + public int getStatusCode() { + return statusCode; + } + + }; + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java index 60d69b1..38e9a9a 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java @@ -225,6 +225,17 @@ public class ResponseImplTest extends Assert { assertEquals("", si.getReasonPhrase()); } + @Test + public void testReasonPhrase() { + int statusCode = 111; + String reasonPhrase = "custom info"; + Response response = Response.status(statusCode, reasonPhrase).build(); + + assertNotNull(response); + assertEquals(statusCode, response.getStatus()); + assertEquals(reasonPhrase, response.getStatusInfo().getReasonPhrase()); + } + @Test(expected = IllegalStateException.class) public void testHasEntityAfterClose() { Response r = new ResponseImpl(200, new ByteArrayInputStream("data".getBytes())); http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AsyncInvokerImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AsyncInvokerImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AsyncInvokerImpl.java index b3a2e99..8988577 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AsyncInvokerImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AsyncInvokerImpl.java @@ -214,24 +214,5 @@ public class AsyncInvokerImpl implements AsyncInvoker { null, callback); } - @Override - public Future<Response> patch(Entity<?> entity) { - return method(HttpMethod.PATCH, entity); - } - - @Override - public <T> Future<T> patch(Entity<?> entity, Class<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - - @Override - public <T> Future<T> patch(Entity<?> entity, GenericType<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - - @Override - public <T> Future<T> patch(Entity<?> entity, InvocationCallback<T> callback) { - return method(HttpMethod.PATCH, entity, callback); - } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/CompletionStageRxInvokerImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/CompletionStageRxInvokerImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/CompletionStageRxInvokerImpl.java index 822948f..528d840 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/CompletionStageRxInvokerImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/CompletionStageRxInvokerImpl.java @@ -160,19 +160,4 @@ public class CompletionStageRxInvokerImpl implements CompletionStageRxInvoker { return wc.doInvokeAsyncStage(name, null, responseType.getRawType(), responseType.getType(), ex); } - @Override - public CompletionStage<Response> patch(Entity<?> entity) { - return method(HttpMethod.PATCH, entity); - } - - @Override - public <T> CompletionStage<T> patch(Entity<?> entity, Class<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - - @Override - public <T> CompletionStage<T> patch(Entity<?> entity, GenericType<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/SyncInvokerImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/SyncInvokerImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/SyncInvokerImpl.java index 57b57e4..539f4bb 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/SyncInvokerImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/SyncInvokerImpl.java @@ -159,18 +159,4 @@ public class SyncInvokerImpl implements SyncInvoker { return wc; } - @Override - public Response patch(Entity<?> entity) { - return method(HttpMethod.PATCH, entity); - } - - @Override - public <T> T patch(Entity<?> entity, Class<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - - @Override - public <T> T patch(Entity<?> entity, GenericType<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } } http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientBuilderImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientBuilderImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientBuilderImpl.java index d2befac..ee02ef7 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientBuilderImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientBuilderImpl.java @@ -22,6 +22,7 @@ import java.security.KeyStore; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.KeyManagerFactory; @@ -159,4 +160,22 @@ public class ClientBuilderImpl extends ClientBuilder { public ClientBuilder scheduledExecutorService(ScheduledExecutorService scheduledExecutorService) { return configImpl.property("scheduledExecutorService", scheduledExecutorService); } + + @Override + public ClientBuilder connectTimeout(long timeout, TimeUnit timeUnit) { + validateTimeout(timeout); + return property(ClientImpl.HTTP_CONNECTION_TIMEOUT_PROP, timeUnit.toMillis(timeout)); + } + + @Override + public ClientBuilder readTimeout(long timeout, TimeUnit timeUnit) { + validateTimeout(timeout); + return property(ClientImpl.HTTP_RECEIVE_TIMEOUT_PROP, timeUnit.toMillis(timeout)); + } + + private void validateTimeout(long timeout) { + if (timeout < 0) { + throw new IllegalArgumentException("Negative timeout is not allowed."); + } + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java index ec20e6c..8a19043 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java @@ -50,8 +50,8 @@ import org.apache.cxf.message.Message; import org.apache.cxf.transport.https.SSLUtils; public class ClientImpl implements Client { - private static final String HTTP_CONNECTION_TIMEOUT_PROP = "http.connection.timeout"; - private static final String HTTP_RECEIVE_TIMEOUT_PROP = "http.receive.timeout"; + static final String HTTP_CONNECTION_TIMEOUT_PROP = "http.connection.timeout"; + static final String HTTP_RECEIVE_TIMEOUT_PROP = "http.receive.timeout"; private static final String HTTP_PROXY_SERVER_PROP = "http.proxy.server.uri"; private static final String HTTP_PROXY_SERVER_PORT_PROP = "http.proxy.server.port"; private static final String HTTP_AUTOREDIRECT_PROP = "http.autoredirect"; http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/InvocationBuilderImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/InvocationBuilderImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/InvocationBuilderImpl.java index 62219b5..a053f7f 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/InvocationBuilderImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/InvocationBuilderImpl.java @@ -385,18 +385,4 @@ public class InvocationBuilderImpl implements Invocation.Builder { return webClient.rx(rxCls, (ExecutorService)null); } - @Override - public Response patch(Entity<?> entity) { - return sync.patch(entity); - } - - @Override - public <T> T patch(Entity<?> entity, Class<T> responseType) { - return sync.patch(entity, responseType); - } - - @Override - public <T> T patch(Entity<?> entity, GenericType<T> responseType) { - return sync.patch(entity, responseType); - } } http://git-wip-us.apache.org/repos/asf/cxf/blob/e9127217/rt/rs/extensions/rx/src/main/java/org/apache/cxf/jaxrs/rx/client/ObservableRxInvokerImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/extensions/rx/src/main/java/org/apache/cxf/jaxrs/rx/client/ObservableRxInvokerImpl.java b/rt/rs/extensions/rx/src/main/java/org/apache/cxf/jaxrs/rx/client/ObservableRxInvokerImpl.java index 0a6033c..7487070 100644 --- a/rt/rs/extensions/rx/src/main/java/org/apache/cxf/jaxrs/rx/client/ObservableRxInvokerImpl.java +++ b/rt/rs/extensions/rx/src/main/java/org/apache/cxf/jaxrs/rx/client/ObservableRxInvokerImpl.java @@ -172,18 +172,4 @@ public class ObservableRxInvokerImpl implements ObservableRxInvoker { return cb.getObservable(); } - @Override - public Observable<Response> patch(Entity<?> entity) { - return method(HttpMethod.PATCH, entity); - } - - @Override - public <T> Observable<T> patch(Entity<?> entity, Class<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } - - @Override - public <T> Observable<T> patch(Entity<?> entity, GenericType<T> responseType) { - return method(HttpMethod.PATCH, entity, responseType); - } }