This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new c4716da RestClient tests.
c4716da is described below
commit c4716dacea9003e03390f71f5a56f48f8ea18270
Author: JamesBognar <[email protected]>
AuthorDate: Tue Jun 9 19:32:14 2020 -0400
RestClient tests.
---
.../main/java/org/apache/juneau/Streamable.java | 4 +-
.../org/apache/juneau/http/StreamResource.java | 2 +-
.../java/org/apache/juneau/utils/ZipFileList.java | 2 +-
.../main/ConfigurablePropertyCodeGenerator.java | 1 +
.../juneau/rest/client2/EndToEndInterfaceTest.java | 4 +-
.../apache/juneau/rest/client2/RestClientTest.java | 109 +++++++++++++++++++++
.../org/apache/juneau/rest/client2/RestClient.java | 31 +++++-
.../apache/juneau/rest/client2/RestRequest.java | 2 +-
.../apache/juneau/rest/mock2/MockRestClient.java | 4 +-
9 files changed, 145 insertions(+), 14 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
index 331a3fb..97a81d0 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
@@ -20,7 +20,7 @@ import org.apache.juneau.http.*;
* Interface that identifies that an object can be serialized directly to an
output stream.
*
* <p>
- * Instances must identify the media type of the content by implementing the
{@link #getMediaType()} method.
+ * Instances must identify the media type of the content by implementing the
{@link #getContentType()} method.
*/
public interface Streamable {
@@ -37,5 +37,5 @@ public interface Streamable {
*
* @return The media type, or <jk>null</jk> if the media type is not
known.
*/
- MediaType getMediaType();
+ MediaType getContentType();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
index 8214f11..151bec6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
@@ -237,7 +237,7 @@ public class StreamResource implements Streamable {
@ResponseHeader("Content-Type")
@Override /* Streamable */
- public MediaType getMediaType() {
+ public MediaType getContentType() {
return mediaType;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
index 9818545..575eb1e 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
@@ -40,7 +40,7 @@ public class ZipFileList extends
LinkedList<ZipFileList.ZipFileEntry> implements
@Header("Content-Type")
@Override /* Streamable */
- public MediaType getMediaType() {
+ public MediaType getContentType() {
return MediaType.forString("application/zip");
}
diff --git
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 8fbadb6..b2cbfa3 100644
---
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -82,6 +82,7 @@ public class ConfigurablePropertyCodeGenerator {
RdfSerializerBuilder.class,
ReaderParserBuilder.class,
RestClientBuilder.class,
+ MockRestClientBuilder.class,
RestContextBuilder.class,
RestMethodContextBuilder.class,
SerializerBuilder.class,
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
index 0500a10..d20fc85 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
@@ -328,7 +328,7 @@ public class EndToEndInterfaceTest {
assertEquals("foo", IOUtils.read(r.getContents()));
assertEquals("foo", r.getHeaders().get("Foo"));
assertEquals("bar", r.getHeaders().get("ETag"));
- assertEquals("text/foo", r.getMediaType().toString());
+ assertEquals("text/foo", r.getContentType().toString());
}
@Test
@@ -347,7 +347,7 @@ public class EndToEndInterfaceTest {
StreamResource r = id2.streamResource();
assertEquals("foo", IOUtils.read(r.getContents()));
assertEquals("foo", r.getHeaders().get("Foo"));
- assertEquals("text/foo", r.getMediaType().toString());
+ assertEquals("text/foo", r.getContentType().toString());
}
@Test
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 7741ffb..d58b342 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -18,6 +18,7 @@ import static org.apache.juneau.rest.client2.RestClient.*;
import static org.apache.juneau.testutils.TestUtils.*;
import java.io.*;
+import java.net.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
@@ -29,6 +30,8 @@ import org.apache.http.HttpResponse;
import org.apache.http.auth.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
+import org.apache.http.client.utils.*;
+import org.apache.http.entity.*;
import org.apache.http.impl.client.*;
import org.apache.http.message.*;
import org.apache.http.protocol.*;
@@ -42,6 +45,7 @@ import org.apache.juneau.http.annotation.*;
import org.apache.juneau.http.annotation.Header;
import org.apache.juneau.http.exception.*;
import org.apache.juneau.http.header.*;
+import org.apache.juneau.http.header.ContentType;
import org.apache.juneau.http.response.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.json.*;
@@ -100,6 +104,10 @@ public class RestClientTest {
return b;
}
@RestMethod(path="/bean")
+ public Bean patchBean(@Body Bean b) {
+ return b;
+ }
+ @RestMethod(path="/bean")
public Bean deleteBean() {
return bean;
}
@@ -249,6 +257,55 @@ public class RestClientTest {
.body(bean)
.run()
.assertBody().is("{f:1}");
+
+ // Different URL types.
+ for (Object url : AList.<Object>of(new
URIBuilder("http://localhost/bean"),
java.net.URI.create("http://localhost/bean"), new URL("http://localhost/bean"),
"/bean", new StringBuilder("/bean"))) {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .put(url, bean)
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .put(url, "{f:1}", "application/json")
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .put(url)
+ .body(bean)
+ .run()
+ .assertBody().is("{f:1}");
+ }
+
+ // Different body types.
+ List<Object> l = AList.<Object>of(
+ new StringReader("{f:1}"),
+ new ByteArrayInputStream("{f:1}".getBytes()),
+ ReaderResource.create().contents("{f:1}").build(),
+ StreamResource.create().contents("{f:1}").build(),
+ bean,
+ new StringEntity("{f:1}"),
+ NameValuePairs.of("f", 1)
+ );
+ for (Object body : l) {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .contentType(body instanceof NameValuePairs ?
"application/x-www-form-urlencoded" : "application/json")
+ .build()
+ .put("/bean", body)
+ .run()
+ .assertBody().is("{f:1}");
+ }
}
@Test
@@ -342,6 +399,30 @@ public class RestClientTest {
MockRestClient
.create(A.class)
.build()
+ .formPost("/bean", (Object)new
NameValuePair[]{BasicNameValuePair.of("f","1")})
+ .accept("application/json+simple")
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .build()
+ .formPost("/bean", new
NameValuePair[]{BasicNameValuePair.of("f","1")})
+ .accept("application/json+simple")
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .build()
+ .formPost("/bean", new StringEntity("{f:1}",
org.apache.http.entity.ContentType.APPLICATION_JSON))
+ .accept("application/json+simple")
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .build()
.formPost("/bean", BasicNameValuePair.of("f","1"))
.accept("application/json+simple")
.run()
@@ -356,6 +437,34 @@ public class RestClientTest {
.assertBody().is("{f:1}");
}
+ @Test
+ public void a12_basicCalls_patch() throws Exception {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .patch("/bean", bean)
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .patch("/bean", "{f:1}", "application/json")
+ .run()
+ .assertBody().is("{f:1}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .build()
+ .patch("/bean")
+ .body(bean)
+ .run()
+ .assertBody().is("{f:1}");
+ }
+
//------------------------------------------------------------------------------------------------------------------
// Logging
//------------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
index 2de9827..60c35a9 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
@@ -2406,10 +2406,11 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* @param body
* The object to serialize and transmit to the URL as the body of
the request.
* <ul class='spaced-list'>
- * <li class='jc'>{@link HttpEntity} - Serialized directly.
* <li class='jc'>{@link NameValuePair} - URL-encoded as a
single name-value pair.
* <li class='jc'>{@link NameValuePair} array -
URL-encoded as name value pairs.
* <li class='jc'>{@link NameValuePairs} - URL-encoded as
name value pairs.
+ * <li class='jc'>{@link Reader}/{@link InputStream}-
Streamed directly and <l>Content-Type</l> set to
<js>"application/x-www-form-urlencoded"</js>
+ * <li class='jc'>{@link ReaderResource}/{@link
StreamResource}/{@link HttpEntity}- Streamed directly and <l>Content-Type</l>
set to <js>"application/x-www-form-urlencoded"</js> if not already specified on
the entity.
* <li class='jc'>{@link Object} - Converted to a {@link
SerializedHttpEntity} using {@link UrlEncodingSerializer} to serialize.
* </ul>
* @return
@@ -2426,8 +2427,26 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
return req.body(new
UrlEncodedFormEntity(Arrays.asList((NameValuePair[])body)));
if (body instanceof NameValuePairs)
return req.body(new
UrlEncodedFormEntity((NameValuePairs)body));
- if (body instanceof HttpEntity)
- return req.body(body);
+ if (body instanceof HttpEntity) {
+ HttpEntity e = (HttpEntity)body;
+ if (e.getContentType() == null)
+
req.contentType("application/x-www-form-urlencoded");
+ return req.body(e);
+ }
+ if (body instanceof Reader || body instanceof
InputStream)
+ return
req.contentType("application/x-www-form-urlencoded").body(body);
+ if (body instanceof ReaderResource) {
+ ReaderResource r = (ReaderResource)body;
+ if (r.getContentType() == null)
+
req.contentType("application/x-www-form-urlencoded");
+ return req.body(r);
+ }
+ if (body instanceof StreamResource) {
+ StreamResource r = (StreamResource)body;
+ if (r.getContentType() == null)
+
req.contentType("application/x-www-form-urlencoded");
+ return req.body(r);
+ }
return req.body(new SerializedHttpEntity(body,
urlEncodingSerializer, null, null));
} catch (UnsupportedEncodingException e) {
// Should never happen.
@@ -2566,13 +2585,15 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* </ul>
* @param body
* The object to serialize and transmit to the URL as the body of
the request bypassing the serializer.
+ * @param contentType
+ * The content type of the request.
* @return
* A {@link RestRequest} object that can be further tailored
before executing the request and getting the response
* as a parsed object.
* @throws RestCallException If any authentication errors occurred.
*/
- public RestRequest pathString(Object url, String body) throws
RestCallException {
- return request("PATCH", url, true).stringBody(body);
+ public RestRequest patch(Object url, String body, String contentType)
throws RestCallException {
+ return request("PATCH", url,
true).stringBody(body).contentType(contentType);
}
/**
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
index e4eed51..e8f1eb8 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
@@ -3710,7 +3710,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
else if (input instanceof StreamResource) {
StreamResource r =
(StreamResource)input;
- contentType(r.getMediaType());
+ contentType(r.getContentType());
headers(r.getHeaders());
entity = new
InputStreamEntity(r.getContents(),
getRequestContentType(ContentType.APPLICATION_OCTET_STREAM));
}
diff --git
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index ee30667..be9d498 100644
---
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -456,8 +456,8 @@ public class MockRestClient extends RestClient implements
HttpClientConnection {
}
@Override /* RestClient */
- public MockRestRequest pathString(Object url, String body) throws
RestCallException {
- return (MockRestRequest)super.pathString(url, body);
+ public MockRestRequest patch(Object url, String body, String
contentType) throws RestCallException {
+ return (MockRestRequest)super.patch(url, body, contentType);
}
@Override /* RestClient */