You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/07/19 16:16:24 UTC
camel git commit: [CAMEL-11425] camel-olingo2 - Add ability to
send/receive endpoint HTTP headers.
Repository: camel
Updated Branches:
refs/heads/master 5aa5ef9ba -> a02395e00
[CAMEL-11425] camel-olingo2 - Add ability to send/receive endpoint HTTP headers.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a02395e0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a02395e0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a02395e0
Branch: refs/heads/master
Commit: a02395e00fe151154d435dd9fe5cffadc008ec5f
Parents: 5aa5ef9
Author: Sean Haynes <s....@ieee.org>
Authored: Wed Jul 19 10:50:36 2017 -0400
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jul 19 18:15:35 2017 +0200
----------------------------------------------------------------------
.../camel/component/olingo2/api/Olingo2App.java | 28 +++-
.../olingo2/api/Olingo2ResponseHandler.java | 5 +-
.../olingo2/api/impl/Olingo2AppImpl.java | 132 ++++++++++++++-----
.../camel-olingo2-component/pom.xml | 3 +-
.../src/main/docs/olingo2-component.adoc | 40 ++++--
.../component/olingo2/Olingo2AppWrapper.java | 5 +-
.../component/olingo2/Olingo2Consumer.java | 2 +-
.../component/olingo2/Olingo2Endpoint.java | 2 +
.../component/olingo2/Olingo2Producer.java | 8 +-
.../src/signatures/olingo-api-signature.txt | 16 +--
.../component/olingo2/Olingo2AppAPITest.java | 60 ++++-----
11 files changed, 207 insertions(+), 94 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
index 4bddbf6..121cf3b 100644
--- a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
+++ b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
@@ -76,9 +76,11 @@ public interface Olingo2App {
* @param resourcePath OData Resource path
* @param queryParams OData query params
* from http://www.odata.org/documentation/odata-version-2-0/uri-conventions#SystemQueryOptions
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param responseHandler callback handler
*/
<T> void read(Edm edm, String resourcePath, Map<String, String> queryParams,
+ Map<String, String> endpointHttpHeaders,
Olingo2ResponseHandler<T> responseHandler);
/**
@@ -87,60 +89,74 @@ public interface Olingo2App {
* @param resourcePath OData Resource path
* @param queryParams OData query params
* from http://www.odata.org/documentation/odata-version-2-0/uri-conventions#SystemQueryOptions
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param responseHandler callback handler
*/
void uread(Edm edm, String resourcePath, Map<String, String> queryParams,
+ Map<String, String> endpointHttpHeaders,
Olingo2ResponseHandler<InputStream> responseHandler);
/**
* Deletes an OData resource and invokes callback
* with {@link org.apache.olingo.odata2.api.commons.HttpStatusCodes} on success, or with exception on failure.
* @param resourcePath resource path for Entry
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param responseHandler {@link org.apache.olingo.odata2.api.commons.HttpStatusCodes} callback handler
*/
- void delete(String resourcePath, Olingo2ResponseHandler<HttpStatusCodes> responseHandler);
+ void delete(String resourcePath, Map<String, String> endpointHttpHeaders,
+ Olingo2ResponseHandler<HttpStatusCodes> responseHandler);
/**
* Creates a new OData resource.
* @param edm service Edm
* @param resourcePath resource path to create
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param data request data
* @param responseHandler callback handler
*/
- <T> void create(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler);
+ <T> void create(Edm edm, String resourcePath, Map<String, String> endpointHttpHeaders, Object data,
+ Olingo2ResponseHandler<T> responseHandler);
/**
* Updates an OData resource.
* @param edm service Edm
* @param resourcePath resource path to update
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param data updated data
* @param responseHandler {@link org.apache.olingo.odata2.api.ep.entry.ODataEntry} callback handler
*/
- <T> void update(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler);
+ <T> void update(Edm edm, String resourcePath, Map<String, String> endpointHttpHeaders, Object data,
+ Olingo2ResponseHandler<T> responseHandler);
/**
* Patches/merges an OData resource using HTTP PATCH.
* @param edm service Edm
* @param resourcePath resource path to update
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param data patch/merge data
* @param responseHandler {@link org.apache.olingo.odata2.api.ep.entry.ODataEntry} callback handler
*/
- <T> void patch(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler);
+ <T> void patch(Edm edm, String resourcePath, Map<String, String> endpointHttpHeaders, Object data,
+ Olingo2ResponseHandler<T> responseHandler);
/**
* Patches/merges an OData resource using HTTP MERGE.
* @param edm service Edm
* @param resourcePath resource path to update
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param data patch/merge data
* @param responseHandler {@link org.apache.olingo.odata2.api.ep.entry.ODataEntry} callback handler
*/
- <T> void merge(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler);
+ <T> void merge(Edm edm, String resourcePath, Map<String, String> endpointHttpHeaders, Object data,
+ Olingo2ResponseHandler<T> responseHandler);
/**
* Executes a batch request.
* @param edm service Edm
+ * @param endpointHttpHeaders HTTP Headers to add/override the component versions
* @param data ordered {@link org.apache.camel.component.olingo2.api.batch.Olingo2BatchRequest} list
* @param responseHandler callback handler
*/
- void batch(Edm edm, Object data, Olingo2ResponseHandler<List<Olingo2BatchResponse>> responseHandler);
+ void batch(Edm edm, Map<String, String> endpointHttpHeaders, Object data,
+ Olingo2ResponseHandler<List<Olingo2BatchResponse>> responseHandler);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2ResponseHandler.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2ResponseHandler.java b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2ResponseHandler.java
index e96e345..f895328 100644
--- a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2ResponseHandler.java
+++ b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2ResponseHandler.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.olingo2.api;
+import java.util.Map;
+
/**
* Callback interface to asynchronously process Olingo2 response.
*/
@@ -24,8 +26,9 @@ public interface Olingo2ResponseHandler<T> {
/**
* Handle response data on successful completion of Olingo2 request.
* @param response response data from Olingo2, may be NULL for Olingo2 operations with no response data.
+ * @param responseHeaders the response HTTP headers received from the endpoint.
*/
- void onResponse(T response);
+ void onResponse(T response, Map<String, String> responseHeaders);
/**
* Handle exception raised from Olingo2 request.
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
index 6ec94fc..f4423b7 100644
--- a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
+++ b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
@@ -24,6 +24,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -46,6 +47,7 @@ import org.apache.http.Header;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
+import org.apache.http.ParseException;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
@@ -214,16 +216,19 @@ public final class Olingo2AppImpl implements Olingo2App {
@Override
public <T> void read(final Edm edm, final String resourcePath, final Map<String, String> queryParams,
+ final Map<String, String> endpointHttpHeaders,
final Olingo2ResponseHandler<T> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, queryParams);
execute(new HttpGet(createUri(resourcePath, queryParams)), getResourceContentType(uriInfo),
- new AbstractFutureCallback<T>(responseHandler) {
+ endpointHttpHeaders, new AbstractFutureCallback<T>(responseHandler) {
@Override
public void onCompleted(HttpResponse result) throws IOException {
- readContent(uriInfo, result.getEntity() != null ? result.getEntity().getContent() : null,
+ readContent(uriInfo,
+ headersToMap(result.getAllHeaders()),
+ result.getEntity() != null ? result.getEntity().getContent() : null,
responseHandler);
}
@@ -232,16 +237,19 @@ public final class Olingo2AppImpl implements Olingo2App {
@Override
public void uread(final Edm edm, final String resourcePath, final Map<String, String> queryParams,
+ final Map<String, String> endpointHttpHeaders,
final Olingo2ResponseHandler<InputStream> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, queryParams);
execute(new HttpGet(createUri(resourcePath, queryParams)), getResourceContentType(uriInfo),
- new AbstractFutureCallback<InputStream>(responseHandler) {
+ endpointHttpHeaders, new AbstractFutureCallback<InputStream>(responseHandler) {
@Override
public void onCompleted(HttpResponse result) throws IOException {
- responseHandler.onResponse(result.getEntity() != null ? result.getEntity().getContent() : null);
+ responseHandler.onResponse(
+ (result.getEntity() != null) ? result.getEntity().getContent() : null,
+ headersToMap(result.getAllHeaders()));
}
});
@@ -282,56 +290,78 @@ public final class Olingo2AppImpl implements Olingo2App {
}
@Override
- public <T> void create(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler) {
+ public <T> void create(final Edm edm,
+ final String resourcePath,
+ final Map<String, String> endpointHttpHeaders,
+ final Object data,
+ final Olingo2ResponseHandler<T> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
- writeContent(edm, new HttpPost(createUri(resourcePath, null)), uriInfo, data, responseHandler);
+ writeContent(edm, new HttpPost(createUri(resourcePath, null)), uriInfo, endpointHttpHeaders, data, responseHandler);
}
@Override
- public <T> void update(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler) {
+ public <T> void update(final Edm edm,
+ final String resourcePath,
+ final Map<String, String> endpointHttpHeaders,
+ final Object data,
+ final Olingo2ResponseHandler<T> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
- writeContent(edm, new HttpPut(createUri(resourcePath, null)), uriInfo, data, responseHandler);
+ writeContent(edm, new HttpPut(createUri(resourcePath, null)), uriInfo, endpointHttpHeaders, data, responseHandler);
}
@Override
- public <T> void patch(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler) {
+ public <T> void patch(final Edm edm,
+ final String resourcePath,
+ final Map<String, String> endpointHttpHeaders,
+ final Object data,
+ final Olingo2ResponseHandler<T> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
- writeContent(edm, new HttpPatch(createUri(resourcePath, null)), uriInfo, data, responseHandler);
+ writeContent(edm, new HttpPatch(createUri(resourcePath, null)), uriInfo, endpointHttpHeaders, data, responseHandler);
}
@Override
- public <T> void merge(Edm edm, String resourcePath, Object data, Olingo2ResponseHandler<T> responseHandler) {
+ public <T> void merge(final Edm edm,
+ final String resourcePath,
+ final Map<String, String> endpointHttpHeaders,
+ final Object data,
+ final Olingo2ResponseHandler<T> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
- writeContent(edm, new HttpMerge(createUri(resourcePath, null)), uriInfo, data, responseHandler);
+ writeContent(edm, new HttpMerge(createUri(resourcePath, null)), uriInfo, endpointHttpHeaders, data, responseHandler);
}
@Override
- public void batch(Edm edm, Object data, Olingo2ResponseHandler<List<Olingo2BatchResponse>> responseHandler) {
+ public void batch(final Edm edm,
+ final Map<String, String> endpointHttpHeaders,
+ final Object data,
+ final Olingo2ResponseHandler<List<Olingo2BatchResponse>> responseHandler) {
final UriInfoWithType uriInfo = parseUri(edm, BATCH, null);
- writeContent(edm, new HttpPost(createUri(BATCH, null)), uriInfo, data, responseHandler);
+ writeContent(edm, new HttpPost(createUri(BATCH, null)), uriInfo, endpointHttpHeaders, data, responseHandler);
}
@Override
- public void delete(String resourcePath, final Olingo2ResponseHandler<HttpStatusCodes> responseHandler) {
+ public void delete(final String resourcePath,
+ final Map<String, String> endpointHttpHeaders,
+ final Olingo2ResponseHandler<HttpStatusCodes> responseHandler) {
execute(new HttpDelete(createUri(resourcePath)), contentType,
- new AbstractFutureCallback<HttpStatusCodes>(responseHandler) {
+ endpointHttpHeaders, new AbstractFutureCallback<HttpStatusCodes>(responseHandler) {
@Override
public void onCompleted(HttpResponse result) {
final StatusLine statusLine = result.getStatusLine();
- responseHandler.onResponse(HttpStatusCodes.fromStatusCode(statusLine.getStatusCode()));
+ responseHandler.onResponse(HttpStatusCodes.fromStatusCode(statusLine.getStatusCode()),
+ headersToMap(result.getAllHeaders()));
}
});
}
- private <T> void readContent(UriInfoWithType uriInfo, InputStream content, Olingo2ResponseHandler<T> responseHandler) {
+ private <T> void readContent(UriInfoWithType uriInfo, Map<String, String> responseHeaders, InputStream content, Olingo2ResponseHandler<T> responseHandler) {
try {
- responseHandler.onResponse(this.<T>readContent(uriInfo, content));
+ responseHandler.onResponse(this.<T>readContent(uriInfo, content), responseHeaders);
} catch (Exception e) {
responseHandler.onException(e);
} catch (Error e) {
@@ -439,8 +469,10 @@ public final class Olingo2AppImpl implements Olingo2App {
return response;
}
- private <T> void writeContent(final Edm edm, HttpEntityEnclosingRequestBase httpEntityRequest,
- final UriInfoWithType uriInfo, final Object content,
+ private <T> void writeContent(final Edm edm, final HttpEntityEnclosingRequestBase httpEntityRequest,
+ final UriInfoWithType uriInfo,
+ final Map<String, String> endpointHttpHeaders,
+ final Object content,
final Olingo2ResponseHandler<T> responseHandler) {
try {
@@ -467,7 +499,7 @@ public final class Olingo2AppImpl implements Olingo2App {
final Header requestContentTypeHeader = httpEntityRequest.getFirstHeader(HttpHeaders.CONTENT_TYPE);
final ContentType requestContentType = requestContentTypeHeader != null
? ContentType.parse(requestContentTypeHeader.getValue()) : contentType;
- execute(httpEntityRequest, requestContentType, new AbstractFutureCallback<T>(responseHandler) {
+ execute(httpEntityRequest, requestContentType, endpointHttpHeaders, new AbstractFutureCallback<T>(responseHandler) {
@SuppressWarnings("unchecked")
@Override
public void onCompleted(HttpResponse result)
@@ -480,7 +512,8 @@ public final class Olingo2AppImpl implements Olingo2App {
final boolean noEntity = result.getEntity() == null || result.getEntity().getContentLength() == 0;
if (statusCode == HttpStatusCodes.NO_CONTENT || noEntity) {
responseHandler.onResponse(
- (T) HttpStatusCodes.fromStatusCode(result.getStatusLine().getStatusCode()));
+ (T) HttpStatusCodes.fromStatusCode(result.getStatusLine().getStatusCode()),
+ headersToMap(result.getAllHeaders()));
} else {
switch (uriInfo.getUriType()) {
@@ -519,7 +552,7 @@ public final class Olingo2AppImpl implements Olingo2App {
Locale.ENGLISH, e)));
}
}
- responseHandler.onResponse((T) responses);
+ responseHandler.onResponse((T) responses, headersToMap(result.getAllHeaders()));
break;
case URI4:
@@ -531,12 +564,14 @@ public final class Olingo2AppImpl implements Olingo2App {
if (uriInfo.isValue()) {
responseHandler.onResponse(
(T) EntityProvider.readPropertyValue(simpleProperty,
- result.getEntity().getContent()));
+ result.getEntity().getContent()),
+ headersToMap(result.getAllHeaders()));
} else {
responseHandler.onResponse(
(T) EntityProvider.readProperty(getContentType(), simpleProperty,
result.getEntity().getContent(),
- EntityProviderReadProperties.init().build()));
+ EntityProviderReadProperties.init().build()),
+ headersToMap(result.getAllHeaders()));
}
break;
@@ -550,7 +585,8 @@ public final class Olingo2AppImpl implements Olingo2App {
.getEntity()
.getContent(),
EntityProviderReadProperties
- .init().build()));
+ .init().build()),
+ headersToMap(result.getAllHeaders()));
break;
case URI7A:
@@ -560,7 +596,8 @@ public final class Olingo2AppImpl implements Olingo2App {
responseHandler.onResponse((T) EntityProvider.readLink(getContentType(),
targetLinkEntitySet, result
.getEntity()
- .getContent()));
+ .getContent()),
+ headersToMap(result.getAllHeaders()));
break;
case URI7B:
@@ -570,7 +607,8 @@ public final class Olingo2AppImpl implements Olingo2App {
responseHandler.onResponse((T) EntityProvider.readLinks(getContentType(),
targetLinksEntitySet,
result.getEntity()
- .getContent()));
+ .getContent()),
+ headersToMap(result.getAllHeaders()));
break;
case URI1:
@@ -582,7 +620,8 @@ public final class Olingo2AppImpl implements Olingo2App {
responseHandler.onResponse((T) EntityProvider.readEntry(response.getContentHeader(),
uriInfo.getTargetEntitySet(),
result.getEntity().getContent(),
- EntityProviderReadProperties.init().build()));
+ EntityProviderReadProperties.init().build()),
+ headersToMap(result.getAllHeaders()));
break;
default:
@@ -873,9 +912,14 @@ public final class Olingo2AppImpl implements Olingo2App {
ByteArrayInputStream content = null;
try {
if (response.getBody() != null) {
- final ContentType partContentType = receiveWithCharsetParameter(ContentType.parse(
- headers.get(HttpHeaders.CONTENT_TYPE)), Consts.UTF_8);
- final String charset = partContentType.getCharset().toString();
+ String charset = Consts.UTF_8.toString();
+ try {
+ final ContentType partContentType = receiveWithCharsetParameter(ContentType.parse(
+ headers.get(HttpHeaders.CONTENT_TYPE)), Consts.UTF_8);
+ charset = partContentType.getCharset().toString();
+ } catch (ParseException | UnsupportedCharsetException ex) {
+ // Use default charset of UTF-8.
+ }
final String body = response.getBody();
content = body != null ? new ByteArrayInputStream(body.getBytes(charset)) : null;
@@ -1015,12 +1059,21 @@ public final class Olingo2AppImpl implements Olingo2App {
return result;
}
-
+
+ private static Map<String, String> headersToMap(final Header[] headers) {
+ final Map<String, String> responseHeaders = new HashMap<>();
+ for (Header header : headers) {
+ responseHeaders.put(header.getName(), header.getValue());
+ }
+ return responseHeaders;
+ }
+
/**
* public for unit test, not to be used otherwise
*/
- public void execute(HttpUriRequest httpUriRequest, ContentType contentType,
- FutureCallback<HttpResponse> callback) {
+ public void execute(final HttpUriRequest httpUriRequest, final ContentType contentType,
+ final Map<String, String> endpointHttpHeaders,
+ final FutureCallback<HttpResponse> callback) {
// add accept header when its not a form or multipart
if (!ContentType.APPLICATION_FORM_URLENCODED.getMimeType().equals(contentType.getMimeType())
@@ -1044,6 +1097,13 @@ public final class Olingo2AppImpl implements Olingo2App {
httpUriRequest.setHeader(entry.getKey(), entry.getValue());
}
}
+
+ // set user specified endpoint headers
+ if ((endpointHttpHeaders != null) && !endpointHttpHeaders.isEmpty()) {
+ for (Map.Entry<String, String> entry : endpointHttpHeaders.entrySet()) {
+ httpUriRequest.setHeader(entry.getKey(), entry.getValue());
+ }
+ }
// add client protocol version if not specified
if (!httpUriRequest.containsHeader(ODataHttpHeaders.DATASERVICEVERSION)) {
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/pom.xml b/components/camel-olingo2/camel-olingo2-component/pom.xml
index dccfb03..fcaeba8 100644
--- a/components/camel-olingo2/camel-olingo2-component/pom.xml
+++ b/components/camel-olingo2/camel-olingo2-component/pom.xml
@@ -40,7 +40,7 @@
<camel.osgi.export.pkg>${componentPackage}</camel.osgi.export.pkg>
<camel.osgi.private.pkg>${outPackage}</camel.osgi.private.pkg>
- <maven.exe.file.extension></maven.exe.file.extension>
+ <maven.exe.file.extension />
</properties>
<dependencies>
@@ -179,6 +179,7 @@
</extraOptions>
<nullableOptions>
<nullableOption>queryParams</nullableOption>
+ <nullableOption>endpointHttpHeaders</nullableOption>
</nullableOptions>
</api>
</apis>
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
index ae4723b..a4001fb 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
@@ -108,13 +108,28 @@ in turn should contain the name of the endpoint option whose value will
be contained in the Camel Exchange In message. The *inBody* option
defaults to *data* for endpoints that take that option.
+### Endpoint Options
+
Any of the endpoint options can be provided in either the endpoint URI,
or dynamically in a message header. The message header name must be of
the format *`CamelOlingo2.<option>`*. Note that the *`inBody`* option
overrides message header, i.e. the endpoint
option *`inBody=option`* would override
a *`CamelOlingo2.option`* header. In addition, query parameters can be
-specified
+specified.
+
+[width="100%",cols="10%,20%,70%",options="header",]
+|=======================================================================
+|Name |Type |Description
+|data |Object |Data with appropriate type used to create or modify the OData resource
+|keyPredicate |String |Key predicate to create a parameterized OData resource endpoint. Useful for
+create/update operations where the key predicate value is dynamically provided in a header
+|queryParams |java.util.Map<String,String> |OData system options and custom query options. For more
+information see http://www.odata.org/documentation/odata-version-2-0/uri-conventions/[OData 2.0 URI Conventions]
+|resourcePath |String |OData resource path, may or may not contain key predicate
+|endpointHttpHeaders |java.util.Map<String, String> |Dynamic HTTP Headers to be sent to the endpoint
+|responseHttpHeaders |java.util.Map<String, String> |Dynamic HTTP Response Headers from the endpoint
+|=======================================================================
Note that the resourcePath option can either in specified in the URI as
a part of the URI path, as an endpoint option
@@ -128,22 +143,31 @@ _Manufacturers_ and keyPredicate option _'1'_.
|=======================================================================
|Endpoint |Options |HTTP Method |Result Body Type
-|batch |data |POST with multipart/mixed batch request |java.util.List<org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse>
+|batch |data, endpointHttpHeaders |POST with multipart/mixed batch request |java.util.List<org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse>
-|create |data, resourcePath |POST |org.apache.olingo.odata2.api.ep.entry.ODataEntry for new entries
+|create |data, resourcePath, endpointHttpHeaders |POST |org.apache.olingo.odata2.api.ep.entry.ODataEntry for new entries
org.apache.olingo.odata2.api.commons.HttpStatusCodes for other OData resources
-|delete |resourcePath |DELETE |org.apache.olingo.odata2.api.commons.HttpStatusCodes
+|delete |resourcePath, endpointHttpHeaders |DELETE |org.apache.olingo.odata2.api.commons.HttpStatusCodes
-|merge |data, resourcePath |MERGE |org.apache.olingo.odata2.api.commons.HttpStatusCodes
+|merge |data, resourcePath, endpointHttpHeaders |MERGE |org.apache.olingo.odata2.api.commons.HttpStatusCodes
-|patch |data, resourcePath |PATCH |org.apache.olingo.odata2.api.commons.HttpStatusCodes
+|patch |data, resourcePath, endpointHttpHeaders |PATCH |org.apache.olingo.odata2.api.commons.HttpStatusCodes
-|read |queryParams, resourcePath |GET |Depends on OData resource being queried as described next
+|read |queryParams, resourcePath, endpointHttpHeaders |GET |Depends on OData resource being queried as described next
-|update |data, resourcePath |PUT |org.apache.olingo.odata2.api.commons.HttpStatusCodes
+|update |data, resourcePath, endpointHttpHeaders |PUT |org.apache.olingo.odata2.api.commons.HttpStatusCodes
|=======================================================================
+### Endpoint HTTP Headers (Since 2.20)
+The component level configuration property **httpHeaders** supplies static HTTP header information.
+However, some systems requires dynamic header information to be passed to and received from the endpoint.
+A sample use case would be systems that require dynamic security tokens. The **endpointHttpHeaders**
+and **responseHttpHeaders** endpoint properties provides this capability. Set headers that need to
+be passed to the endpoint in the *`CamelOlingo2.endpointHttpHeaders`* property and the
+response headers will be returned in a *`CamelOlingo2.responseHttpHeaders`* property.
+Both properties are of the type *`java.util.Map<String, String>`*.
+
### OData Resource Type Mapping
The result of *read* endpoint and data type of *data* option depends on
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2AppWrapper.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2AppWrapper.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2AppWrapper.java
index 63f7f97..164ad8b 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2AppWrapper.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2AppWrapper.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.olingo2;
+import java.util.Map;
import java.util.concurrent.CountDownLatch;
import org.apache.camel.RuntimeCamelException;
@@ -58,10 +59,10 @@ public class Olingo2AppWrapper {
final CountDownLatch latch = new CountDownLatch(1);
final Exception[] error = new Exception[1];
- olingo2App.read(null, "$metadata", null, new Olingo2ResponseHandler<Edm>() {
+ olingo2App.read(null, "$metadata", null, null, new Olingo2ResponseHandler<Edm>() {
@Override
- public void onResponse(Edm response) {
+ public void onResponse(Edm response, Map<String, String> responseHeaders) {
edm = response;
latch.countDown();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
index 4a46675..3418fbe 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
@@ -55,7 +55,7 @@ public class Olingo2Consumer extends AbstractApiConsumer<Olingo2ApiName, Olingo2
args.put(Olingo2Endpoint.RESPONSE_HANDLER_PROPERTY, new Olingo2ResponseHandler<Object>() {
@Override
- public void onResponse(Object response) {
+ public void onResponse(Object response, Map<String, String> responseHeaders) {
result[0] = response;
latch.countDown();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
index 652d3ae..94fdc7a 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
@@ -46,6 +46,7 @@ public class Olingo2Endpoint extends AbstractApiEndpoint<Olingo2ApiName, Olingo2
private static final String KEY_PREDICATE_PROPERTY = "keyPredicate";
private static final String QUERY_PARAMS_PROPERTY = "queryParams";
+ private static final String ENDPOINT_HTTP_HEADERS_PROPERTY = "endpointHttpHeaders";
private static final String READ_METHOD = "read";
private static final String EDM_PROPERTY = "edm";
@@ -72,6 +73,7 @@ public class Olingo2Endpoint extends AbstractApiEndpoint<Olingo2ApiName, Olingo2
endpointPropertyNames = new HashSet<String>(getPropertiesHelper().getValidEndpointProperties(configuration));
// avoid adding edm as queryParam
endpointPropertyNames.add(EDM_PROPERTY);
+ endpointPropertyNames.add(ENDPOINT_HTTP_HEADERS_PROPERTY);
}
public Producer createProducer() throws Exception {
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Producer.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Producer.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Producer.java
index b9e46a4..dcd8891 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Producer.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Producer.java
@@ -24,6 +24,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.component.olingo2.api.Olingo2ResponseHandler;
import org.apache.camel.component.olingo2.internal.Olingo2ApiName;
+import org.apache.camel.component.olingo2.internal.Olingo2Constants;
import org.apache.camel.component.olingo2.internal.Olingo2PropertiesHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.component.AbstractApiProducer;
@@ -38,6 +39,8 @@ public class Olingo2Producer extends AbstractApiProducer<Olingo2ApiName, Olingo2
private static final Logger LOG = LoggerFactory.getLogger(Olingo2Producer.class);
+ private static final String RESPONSE_HTTP_HEADERS = "responseHttpHeaders";
+
public Olingo2Producer(Olingo2Endpoint endpoint) {
super(endpoint, Olingo2PropertiesHelper.getHelper());
}
@@ -56,11 +59,14 @@ public class Olingo2Producer extends AbstractApiProducer<Olingo2ApiName, Olingo2
// create response handler
properties.put(Olingo2Endpoint.RESPONSE_HANDLER_PROPERTY, new Olingo2ResponseHandler<Object>() {
@Override
- public void onResponse(Object response) {
+ public void onResponse(Object response, Map<String, String> responseHeaders) {
// producer returns a single response, even for methods with List return types
exchange.getOut().setBody(response);
// copy headers
exchange.getOut().setHeaders(exchange.getIn().getHeaders());
+
+ // Add http response headers
+ exchange.getOut().setHeader(Olingo2Constants.PROPERTY_PREFIX + RESPONSE_HTTP_HEADERS, responseHeaders);
interceptResult(response, exchange);
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/signatures/olingo-api-signature.txt
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/signatures/olingo-api-signature.txt b/components/camel-olingo2/camel-olingo2-component/src/signatures/olingo-api-signature.txt
index 006fba7..d4ba9ad 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/signatures/olingo-api-signature.txt
+++ b/components/camel-olingo2/camel-olingo2-component/src/signatures/olingo-api-signature.txt
@@ -1,8 +1,8 @@
-void read(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> queryParams, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void uread(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> queryParams, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void delete(String resourcePath, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void create(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void update(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void patch(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void merge(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
-void batch(org.apache.olingo.odata2.api.edm.Edm edm, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void read(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> queryParams, java.util.Map<String, String> endpointHttpHeaders, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void uread(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> queryParams, java.util.Map<String, String> endpointHttpHeaders, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void delete(String resourcePath, java.util.Map<String, String> endpointHttpHeaders, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void create(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> endpointHttpHeaders, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void update(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> endpointHttpHeaders, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void patch(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> endpointHttpHeaders, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void merge(org.apache.olingo.odata2.api.edm.Edm edm, String resourcePath, java.util.Map<String, String> endpointHttpHeaders, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
+void batch(org.apache.olingo.odata2.api.edm.Edm edm, java.util.Map<String, String> endpointHttpHeaders, Object data, org.apache.camel.component.olingo2.api.Olingo2ResponseHandler responseHandler);
http://git-wip-us.apache.org/repos/asf/camel/blob/a02395e0/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2AppAPITest.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2AppAPITest.java b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2AppAPITest.java
index d0b0934..28b43a9 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2AppAPITest.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2AppAPITest.java
@@ -139,7 +139,7 @@ public class Olingo2AppAPITest {
LOG.info("Read Edm ");
final TestOlingo2ResponseHandler<Edm> responseHandler = new TestOlingo2ResponseHandler<Edm>();
- olingoApp.read(null, Olingo2AppImpl.METADATA, null, responseHandler);
+ olingoApp.read(null, Olingo2AppImpl.METADATA, null, null, responseHandler);
edm = responseHandler.await();
LOG.info("Read default EntityContainer: {}", responseHandler.await().getDefaultEntityContainer().getName());
@@ -158,7 +158,7 @@ public class Olingo2AppAPITest {
final TestOlingo2ResponseHandler<ServiceDocument> responseHandler =
new TestOlingo2ResponseHandler<ServiceDocument>();
- olingoApp.read(null, "", null, responseHandler);
+ olingoApp.read(null, "", null, null, responseHandler);
final ServiceDocument serviceDocument = responseHandler.await();
final List<Collection> collections = serviceDocument.getAtomInfo().getWorkspaces().get(0).getCollections();
@@ -174,7 +174,7 @@ public class Olingo2AppAPITest {
public void testReadFeed() throws Exception {
final TestOlingo2ResponseHandler<ODataFeed> responseHandler = new TestOlingo2ResponseHandler<ODataFeed>();
- olingoApp.read(edm, MANUFACTURERS, null, responseHandler);
+ olingoApp.read(edm, MANUFACTURERS, null, null, responseHandler);
final ODataFeed dataFeed = responseHandler.await();
assertNotNull("Data feed", dataFeed);
@@ -185,7 +185,7 @@ public class Olingo2AppAPITest {
public void testReadUnparsedFeed() throws Exception {
final TestOlingo2ResponseHandler<InputStream> responseHandler = new TestOlingo2ResponseHandler<InputStream>();
- olingoApp.uread(edm, MANUFACTURERS, null, responseHandler);
+ olingoApp.uread(edm, MANUFACTURERS, null, null, responseHandler);
final InputStream rawfeed = responseHandler.await();
assertNotNull("Data feed", rawfeed);
@@ -199,13 +199,13 @@ public class Olingo2AppAPITest {
public void testReadEntry() throws Exception {
final TestOlingo2ResponseHandler<ODataEntry> responseHandler = new TestOlingo2ResponseHandler<ODataEntry>();
- olingoApp.read(edm, TEST_MANUFACTURER, null, responseHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER, null, null, responseHandler);
ODataEntry entry = responseHandler.await();
LOG.info("Single Entry: {}", prettyPrint(entry));
responseHandler.reset();
- olingoApp.read(edm, TEST_CAR, null, responseHandler);
+ olingoApp.read(edm, TEST_CAR, null, null, responseHandler);
entry = responseHandler.await();
LOG.info("Single Entry: {}", prettyPrint(entry));
@@ -213,7 +213,7 @@ public class Olingo2AppAPITest {
final Map<String, String> queryParams = new HashMap<String, String>();
queryParams.put(SystemQueryOption.$expand.toString(), CARS);
- olingoApp.read(edm, TEST_MANUFACTURER, queryParams, responseHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER, queryParams, null, responseHandler);
ODataEntry entryExpanded = responseHandler.await();
LOG.info("Single Entry with expanded Cars relation: {}", prettyPrint(entryExpanded));
@@ -223,7 +223,7 @@ public class Olingo2AppAPITest {
public void testReadUnparsedEntry() throws Exception {
final TestOlingo2ResponseHandler<InputStream> responseHandler = new TestOlingo2ResponseHandler<InputStream>();
- olingoApp.uread(edm, TEST_MANUFACTURER, null, responseHandler);
+ olingoApp.uread(edm, TEST_MANUFACTURER, null, null, responseHandler);
InputStream rawentry = responseHandler.await();
ODataEntry entry = EntityProvider.readEntry(TEST_FORMAT_STRING, edmEntitySetMap.get(MANUFACTURERS),
rawentry, EntityProviderReadProperties.init().build());
@@ -231,7 +231,7 @@ public class Olingo2AppAPITest {
responseHandler.reset();
- olingoApp.uread(edm, TEST_CAR, null, responseHandler);
+ olingoApp.uread(edm, TEST_CAR, null, null, responseHandler);
rawentry = responseHandler.await();
entry = EntityProvider.readEntry(TEST_FORMAT_STRING, edmEntitySetMap.get(CARS),
rawentry, EntityProviderReadProperties.init().build());
@@ -241,7 +241,7 @@ public class Olingo2AppAPITest {
final Map<String, String> queryParams = new HashMap<String, String>();
queryParams.put(SystemQueryOption.$expand.toString(), CARS);
- olingoApp.uread(edm, TEST_MANUFACTURER, queryParams, responseHandler);
+ olingoApp.uread(edm, TEST_MANUFACTURER, queryParams, null, responseHandler);
rawentry = responseHandler.await();
ODataEntry entryExpanded = EntityProvider.readEntry(TEST_FORMAT_STRING, edmEntitySetMap.get(MANUFACTURERS),
@@ -255,14 +255,14 @@ public class Olingo2AppAPITest {
final TestOlingo2ResponseHandler<Map<String, Object>> propertyHandler =
new TestOlingo2ResponseHandler<Map<String, Object>>();
- olingoApp.read(edm, TEST_MANUFACTURER_FOUNDED_PROPERTY, null, propertyHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER_FOUNDED_PROPERTY, null, null, propertyHandler);
Calendar founded = (Calendar) propertyHandler.await().get(FOUNDED_PROPERTY);
LOG.info("Founded property {}", founded.toString());
final TestOlingo2ResponseHandler<Calendar> valueHandler = new TestOlingo2ResponseHandler<Calendar>();
- olingoApp.read(edm, TEST_MANUFACTURER_FOUNDED_VALUE, null, valueHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER_FOUNDED_VALUE, null, null, valueHandler);
founded = valueHandler.await();
LOG.info("Founded property {}", founded.toString());
@@ -274,20 +274,20 @@ public class Olingo2AppAPITest {
// olingoApp.update(edm, TEST_MANUFACTURER_FOUNDED_PROPERTY, properties, statusHandler);
// requires a plain Date for XML
- olingoApp.update(edm, TEST_MANUFACTURER_FOUNDED_PROPERTY, new Date(), statusHandler);
+ olingoApp.update(edm, TEST_MANUFACTURER_FOUNDED_PROPERTY, null, new Date(), statusHandler);
LOG.info("Founded property updated with status {}", statusHandler.await().getStatusCode());
statusHandler.reset();
- olingoApp.update(edm, TEST_MANUFACTURER_FOUNDED_VALUE, new Date(), statusHandler);
+ olingoApp.update(edm, TEST_MANUFACTURER_FOUNDED_VALUE, null, new Date(), statusHandler);
LOG.info("Founded property updated with status {}", statusHandler.await().getStatusCode());
// test complex property Manufacturer.Address
propertyHandler.reset();
- olingoApp.read(edm, TEST_MANUFACTURER_ADDRESS_PROPERTY, null, propertyHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER_ADDRESS_PROPERTY, null, null, propertyHandler);
final Map<String, Object> address = propertyHandler.await();
LOG.info("Address property {}", prettyPrint(address, 0));
@@ -303,7 +303,7 @@ public class Olingo2AppAPITest {
address.put("Country", "Germany");
// olingoApp.patch(edm, TEST_MANUFACTURER_ADDRESS_PROPERTY, address, statusHandler);
- olingoApp.merge(edm, TEST_MANUFACTURER_ADDRESS_PROPERTY, address, statusHandler);
+ olingoApp.merge(edm, TEST_MANUFACTURER_ADDRESS_PROPERTY, null, address, statusHandler);
LOG.info("Address property updated with status {}", statusHandler.await().getStatusCode());
}
@@ -312,7 +312,7 @@ public class Olingo2AppAPITest {
public void testReadDeleteCreateLinks() throws Exception {
final TestOlingo2ResponseHandler<List<String>> linksHandler = new TestOlingo2ResponseHandler<List<String>>();
- olingoApp.read(edm, TEST_MANUFACTURER_LINKS_CARS, null, linksHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER_LINKS_CARS, null, null, linksHandler);
final List<String> links = linksHandler.await();
assertFalse(links.isEmpty());
@@ -320,7 +320,7 @@ public class Olingo2AppAPITest {
final TestOlingo2ResponseHandler<String> linkHandler = new TestOlingo2ResponseHandler<String>();
- olingoApp.read(edm, TEST_CAR_LINK_MANUFACTURER, null, linkHandler);
+ olingoApp.read(edm, TEST_CAR_LINK_MANUFACTURER, null, null, linkHandler);
final String link = linkHandler.await();
LOG.info("Read link: {}", link);
@@ -377,22 +377,22 @@ public class Olingo2AppAPITest {
public void testReadCount() throws Exception {
final TestOlingo2ResponseHandler<Long> countHandler = new TestOlingo2ResponseHandler<Long>();
- olingoApp.read(edm, MANUFACTURERS + COUNT_OPTION, null, countHandler);
+ olingoApp.read(edm, MANUFACTURERS + COUNT_OPTION, null, null, countHandler);
LOG.info("Manufacturers count: {}", countHandler.await());
countHandler.reset();
- olingoApp.read(edm, TEST_MANUFACTURER + COUNT_OPTION, null, countHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER + COUNT_OPTION, null, null, countHandler);
LOG.info("Manufacturer count: {}", countHandler.await());
countHandler.reset();
- olingoApp.read(edm, TEST_MANUFACTURER_LINKS_CARS + COUNT_OPTION, null, countHandler);
+ olingoApp.read(edm, TEST_MANUFACTURER_LINKS_CARS + COUNT_OPTION, null, null, countHandler);
LOG.info("Manufacturers links count: {}", countHandler.await());
countHandler.reset();
- olingoApp.read(edm, TEST_CAR_LINK_MANUFACTURER + COUNT_OPTION, null, countHandler);
+ olingoApp.read(edm, TEST_CAR_LINK_MANUFACTURER + COUNT_OPTION, null, null, countHandler);
LOG.info("Manufacturer link count: {}", countHandler.await());
}
@@ -403,7 +403,7 @@ public class Olingo2AppAPITest {
// create entry to update
final TestOlingo2ResponseHandler<ODataEntry> entryHandler = new TestOlingo2ResponseHandler<ODataEntry>();
- olingoApp.create(edm, MANUFACTURERS, getEntityData(), entryHandler);
+ olingoApp.create(edm, MANUFACTURERS, null, getEntityData(), entryHandler);
ODataEntry createdEntry = entryHandler.await();
LOG.info("Created Entry: {}", prettyPrint(createdEntry));
@@ -417,22 +417,22 @@ public class Olingo2AppAPITest {
final TestOlingo2ResponseHandler<HttpStatusCodes> statusHandler =
new TestOlingo2ResponseHandler<HttpStatusCodes>();
- olingoApp.update(edm, TEST_CREATE_MANUFACTURER, data, statusHandler);
+ olingoApp.update(edm, TEST_CREATE_MANUFACTURER, null, data, statusHandler);
statusHandler.await();
statusHandler.reset();
data.put("Name", "MyCarManufacturer Patched");
- olingoApp.patch(edm, TEST_CREATE_MANUFACTURER, data, statusHandler);
+ olingoApp.patch(edm, TEST_CREATE_MANUFACTURER, null, data, statusHandler);
statusHandler.await();
entryHandler.reset();
- olingoApp.read(edm, TEST_CREATE_MANUFACTURER, null, entryHandler);
+ olingoApp.read(edm, TEST_CREATE_MANUFACTURER, null, null, entryHandler);
ODataEntry updatedEntry = entryHandler.await();
LOG.info("Updated Entry successfully: {}", prettyPrint(updatedEntry));
statusHandler.reset();
- olingoApp.delete(TEST_CREATE_MANUFACTURER, statusHandler);
+ olingoApp.delete(TEST_CREATE_MANUFACTURER, null, statusHandler);
HttpStatusCodes statusCode = statusHandler.await();
LOG.info("Deletion of Entry was successful: {}: {}", statusCode.getStatusCode(), statusCode.getInfo());
@@ -441,7 +441,7 @@ public class Olingo2AppAPITest {
LOG.info("Verify Delete Entry");
entryHandler.reset();
- olingoApp.read(edm, TEST_CREATE_MANUFACTURER, null, entryHandler);
+ olingoApp.read(edm, TEST_CREATE_MANUFACTURER, null, null, entryHandler);
entryHandler.await();
fail("Entry not deleted!");
@@ -493,7 +493,7 @@ public class Olingo2AppAPITest {
// read to verify delete
batchParts.add(Olingo2BatchQueryRequest.resourcePath(TEST_CREATE_MANUFACTURER).build());
- olingoApp.batch(edm, batchParts, responseHandler);
+ olingoApp.batch(edm, null, batchParts, responseHandler);
final List<Olingo2BatchResponse> responseParts = responseHandler.await(15, TimeUnit.MINUTES);
assertEquals("Batch responses expected", 8, responseParts.size());
@@ -602,7 +602,7 @@ public class Olingo2AppAPITest {
private CountDownLatch latch = new CountDownLatch(1);
@Override
- public void onResponse(T response) {
+ public void onResponse(T response, Map<String, String> responseHeaders) {
this.response = response;
if (LOG.isDebugEnabled()) {
if (response instanceof ODataFeed) {