Repository: olingo-odata4 Updated Branches: refs/heads/master d16d2b9cd -> 2def64edb
[OLINGO-1004] Delete duplicate BatchTestITCase Duplicated with BatchClientITCase Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/2def64ed Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/2def64ed Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/2def64ed Branch: refs/heads/master Commit: 2def64edb93aa5fc4792cff6dafef1092ad30a10 Parents: d16d2b9 Author: Christian Amend <[email protected]> Authored: Fri Aug 12 14:10:12 2016 +0200 Committer: Christian Amend <[email protected]> Committed: Fri Aug 12 14:10:12 2016 +0200 ---------------------------------------------------------------------- .../src/it/exchangeMail/pom.xml | 6 +- .../apache/olingo/fit/base/BatchTestITCase.java | 647 ------------------- 2 files changed, 3 insertions(+), 650 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2def64ed/ext/pojogen-maven-plugin/src/it/exchangeMail/pom.xml ---------------------------------------------------------------------- diff --git a/ext/pojogen-maven-plugin/src/it/exchangeMail/pom.xml b/ext/pojogen-maven-plugin/src/it/exchangeMail/pom.xml index d2a988c..b214ea7 100644 --- a/ext/pojogen-maven-plugin/src/it/exchangeMail/pom.xml +++ b/ext/pojogen-maven-plugin/src/it/exchangeMail/pom.xml @@ -34,7 +34,7 @@ <compiler.plugin.version>3.2</compiler.plugin.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> - + <dependencies> <dependency> <artifactId>pojogen-maven-plugin</artifactId> @@ -42,7 +42,7 @@ <version>@project.version@</version> <scope>runtime</scope> </dependency> - + <dependency> <artifactId>odata-client-proxy</artifactId> <groupId>org.apache.olingo</groupId> @@ -82,7 +82,7 @@ </execution> </executions> </plugin> - + <plugin> <groupId>@project.groupId@</groupId> <artifactId>pojogen-maven-plugin</artifactId> http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2def64ed/fit/src/test/java/org/apache/olingo/fit/base/BatchTestITCase.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/base/BatchTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/base/BatchTestITCase.java deleted file mode 100644 index 2e77a08..0000000 --- a/fit/src/test/java/org/apache/olingo/fit/base/BatchTestITCase.java +++ /dev/null @@ -1,647 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.fit.base; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.math.BigDecimal; -import java.net.URI; -import java.util.Calendar; -import java.util.Collection; -import java.util.Iterator; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -import org.apache.http.HttpResponse; -import org.apache.olingo.client.api.ODataBatchConstants; -import org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper; -import org.apache.olingo.client.api.communication.request.ODataPayloadManager; -import org.apache.olingo.client.api.communication.request.batch.BatchManager; -import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest; -import org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem; -import org.apache.olingo.client.api.communication.request.batch.ODataChangeset; -import org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest; -import org.apache.olingo.client.api.communication.request.cud.ODataEntityUpdateRequest; -import org.apache.olingo.client.api.communication.request.cud.UpdateType; -import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest; -import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest; -import org.apache.olingo.client.api.communication.response.AsyncResponse; -import org.apache.olingo.client.api.communication.response.AsyncResponseWrapper; -import org.apache.olingo.client.api.communication.response.ODataBatchResponse; -import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse; -import org.apache.olingo.client.api.communication.response.ODataEntityUpdateResponse; -import org.apache.olingo.client.api.communication.response.ODataResponse; -import org.apache.olingo.client.api.domain.ClientEntity; -import org.apache.olingo.client.api.domain.ClientEntitySet; -import org.apache.olingo.client.api.uri.URIBuilder; -import org.apache.olingo.client.core.communication.request.AbstractODataStreamManager; -import org.apache.olingo.client.core.communication.request.Wrapper; -import org.apache.olingo.client.core.communication.request.batch.ODataChangesetResponseItem; -import org.apache.olingo.client.core.communication.request.batch.ODataSingleResponseItem; -import org.apache.olingo.client.core.communication.request.retrieve.ODataEntityRequestImpl; -import org.apache.olingo.client.core.communication.request.retrieve.ODataEntityRequestImpl.ODataEntityResponseImpl; -import org.apache.olingo.client.core.uri.URIUtils; -import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; -import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.format.ContentType; -import org.apache.olingo.commons.api.http.HttpHeader; -import org.junit.Test; - -public class BatchTestITCase extends AbstractTestITCase { - - private static final String PREFIX = "!!PREFIX!!"; - - private static final String SUFFIX = "!!SUFFIX!!"; - - private static final int MAX = 10000; - - private final static String ACCEPT = ContentType.APPLICATION_OCTET_STREAM.toContentTypeString(); - - @Test - public void stringStreaming() { - final TestStreamManager streaming = new TestStreamManager(); - - new StreamingThread(streaming).start(); - - streaming.addObject((PREFIX + "\n").getBytes()); - - for (int i = 0; i <= MAX; i++) { - streaming.addObject((i + ") send info\n").getBytes()); - } - - streaming.addObject(SUFFIX.getBytes()); - streaming.finalizeBody(); - } - - @Test - public void emptyBatchRequest() { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - - final BatchManager payload = request.payloadManager(); - final ODataBatchResponse response = payload.getResponse(); - - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - assertFalse(iter.hasNext()); - } - - @Test - public void changesetWithError() { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - - final BatchManager payload = request.payloadManager(); - final ODataChangeset changeset = payload.addChangeset(); - - URIBuilder targetURI; - ODataEntityCreateRequest<ClientEntity> createReq; - - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Orders"); - for (int i = 1; i <= 2; i++) { - // Create Customer into the changeset - createReq = client.getCUDRequestFactory().getEntityCreateRequest(targetURI.build(), newOrder(100 + i)); - createReq.setFormat(ContentType.JSON); - changeset.addRequest(createReq); - } - - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("WrongEntitySet"); - createReq = client.getCUDRequestFactory().getEntityCreateRequest(targetURI.build(), newOrder(105)); - createReq.setFormat(ContentType.JSON); - changeset.addRequest(createReq); - - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Orders"); - for (int i = 3; i <= 4; i++) { - // Create Customer into the changeset - createReq = client.getCUDRequestFactory().getEntityCreateRequest(targetURI.build(), newOrder(100 + i)); - createReq.setFormat(ContentType.JSON); - changeset.addRequest(createReq); - } - - final ODataBatchResponse response = payload.getResponse(); - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - // retrieve the first item (ODataRetrieve) - ODataBatchResponseItem item = iter.next(); - - ODataChangesetResponseItem retitem = (ODataChangesetResponseItem) item; - ODataResponse res = retitem.next(); - assertEquals(404, res.getStatusCode()); - assertEquals("Not Found", res.getStatusMessage()); - assertEquals(Integer.valueOf(3), Integer.valueOf( - res.getHeader(ODataBatchConstants.CHANGESET_CONTENT_ID_NAME).iterator().next())); - - assertFalse(retitem.hasNext()); - assertFalse(iter.hasNext()); - } - - @Test - public void continueOnError() { - continueOnError(true); - } - - @Test - public void doNotContinueOnError() { - continueOnError(false); - } - - private void continueOnError(final boolean continueOnError) { - final boolean preContinueOnError = client.getConfiguration().isContinueOnError(); - client.getConfiguration().setContinueOnError(continueOnError); - - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - - final BatchManager streamManager = request.payloadManager(); - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - URIBuilder targetURI = client.newURIBuilder(testStaticServiceRootURL); - targetURI.appendEntitySetSegment("UnexistingEntitySet").appendKeySegment(1); - - // create new request - ODataEntityRequest<ClientEntity> queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - queryReq.setFormat(ContentType.JSON); - - streamManager.addRequest(queryReq); - // ------------------------------------------- - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Customers").appendKeySegment(1); - - // create new request - queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - - streamManager.addRequest(queryReq); - // ------------------------------------------- - - final ODataBatchResponse response = streamManager.getResponse(); - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - - // retrieve the first item (ODataRetrieve) - ODataBatchResponseItem item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - ODataSingleResponseItem retitem = (ODataSingleResponseItem) item; - ODataResponse res = retitem.next(); - assertEquals(404, res.getStatusCode()); - assertEquals("Not Found", res.getStatusMessage()); - - if (continueOnError) { - item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - retitem = (ODataSingleResponseItem) item; - res = retitem.next(); - assertTrue(res instanceof ODataEntityResponseImpl); - assertEquals(200, res.getStatusCode()); - assertEquals("OK", res.getStatusMessage()); - } - - client.getConfiguration().setContinueOnError(preContinueOnError); - } - - @Test - @SuppressWarnings("unchecked") - public void changesetWithReference() throws Exception { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - final BatchManager streamManager = request.payloadManager(); - - final ODataChangeset changeset = streamManager.addChangeset(); - ClientEntity order = newOrder(20); - - final URIBuilder uriBuilder = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Orders"); - - // add create request - final ODataEntityCreateRequest<ClientEntity> createReq = - client.getCUDRequestFactory().getEntityCreateRequest(uriBuilder.build(), order); - - changeset.addRequest(createReq); - - // retrieve request reference - int createRequestRef = changeset.getLastContentId(); - - // add update request: link CustomerInfo(17) to the new customer - final ClientEntity customerChanges = client.getObjectFactory().newEntity(order.getTypeName()); - customerChanges.addLink(client.getObjectFactory().newEntitySetNavigationLink( - "OrderDetails", new URI(testStaticServiceRootURL + "/OrderDetails(OrderID=7,ProductID=5)"))); - - final ODataEntityUpdateRequest<ClientEntity> updateReq = client.getCUDRequestFactory().getEntityUpdateRequest( - URI.create("$" + createRequestRef), UpdateType.PATCH, customerChanges); - - changeset.addRequest(updateReq); - - final ODataBatchResponse response = streamManager.getResponse(); - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - - // verify response payload ... - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - - final ODataBatchResponseItem item = iter.next(); - assertTrue(item instanceof ODataChangesetResponseItem); - - final ODataChangesetResponseItem chgitem = (ODataChangesetResponseItem) item; - - ODataResponse res = chgitem.next(); - assertEquals(201, res.getStatusCode()); - assertTrue(res instanceof ODataEntityCreateResponse); - - order = ((ODataEntityCreateResponse<ClientEntity>) res).getBody(); - final ODataEntitySetRequest<ClientEntitySet> req = client.getRetrieveRequestFactory().getEntitySetRequest( - URIUtils.getURI(testStaticServiceRootURL, order.getEditLink().toASCIIString() + "/OrderDetails")); - - assertEquals(Integer.valueOf(7), - req.execute().getBody().getEntities().get(0).getProperty("OrderID").getPrimitiveValue(). - toCastValue(Integer.class)); - - res = chgitem.next(); - assertEquals(204, res.getStatusCode()); - assertTrue(res instanceof ODataEntityUpdateResponse); - - // clean ... - assertEquals(204, client.getCUDRequestFactory().getDeleteRequest( - URIUtils.getURI(testStaticServiceRootURL, order.getEditLink().toASCIIString())).execute(). - getStatusCode()); - - try { - client.getRetrieveRequestFactory().getEntityRequest( - URIUtils.getURI(testStaticServiceRootURL, order.getEditLink().toASCIIString())). - execute().getBody(); - fail(); - } catch (Exception e) { - // ignore - } - } - - @Test - @SuppressWarnings("unchecked") - public void batchRequestWithOutsideUpdates() throws EdmPrimitiveTypeException { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - final BatchManager streamManager = request.payloadManager(); - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - URIBuilder targetURI = client.newURIBuilder(testStaticServiceRootURL); - targetURI.appendEntitySetSegment("Customers").appendKeySegment(1). - expand("Orders").select("PersonID,Orders/OrderID"); - - // create new request - ODataEntityRequest<ClientEntity> queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - queryReq.setFormat(ContentType.JSON); - - streamManager.addRequest(queryReq); - // ------------------------------------------- - - // ------------------------------------------- - // Add new order with outside item - // ------------------------------------------- - // prepare URI - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Orders"); - final ClientEntity original = newOrder(2000); - final ODataEntityCreateRequest<ClientEntity> createReq = - client.getCUDRequestFactory().getEntityCreateRequest(targetURI.build(), original); - createReq.setFormat(ContentType.JSON); - streamManager.addRequest(createReq); - // ------------------------------------------- - - final ODataBatchResponse response = streamManager.getResponse(); - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - - // retrieve the first item (ODataRetrieve) - ODataBatchResponseItem item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - ODataSingleResponseItem retitem = (ODataSingleResponseItem) item; - ODataResponse res = retitem.next(); - assertTrue(res instanceof ODataEntityResponseImpl); - assertEquals(200, res.getStatusCode()); - assertEquals("OK", res.getStatusMessage()); - - // retrieve the second item (ODataChangeset) - item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - final ODataSingleResponseItem outitem = (ODataSingleResponseItem) item; - res = outitem.next(); - assertTrue(res instanceof ODataEntityCreateResponse); - assertEquals(201, res.getStatusCode()); - assertEquals("Created", res.getStatusMessage()); - - final ODataEntityCreateResponse<ClientEntity> entres = (ODataEntityCreateResponse<ClientEntity>) res; - final ClientEntity entity = entres.getBody(); - assertEquals(2000, entity.getProperty("OrderID").getPrimitiveValue().toCastValue(Integer.class).intValue()); - - assertFalse(iter.hasNext()); - } - - @Test - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void batchRequest() throws EdmPrimitiveTypeException { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest(testStaticServiceRootURL); - request.setAccept(ACCEPT); - - final BatchManager streamManager = request.payloadManager(); - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - URIBuilder targetURI = client.newURIBuilder(testStaticServiceRootURL); - targetURI.appendEntitySetSegment("Customers").appendKeySegment(1); - - // create new request - ODataEntityRequest<ClientEntity> queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - queryReq.setFormat(ContentType.JSON); - - streamManager.addRequest(queryReq); - // ------------------------------------------- - - // ------------------------------------------- - // Add changeset item - // ------------------------------------------- - final ODataChangeset changeset = streamManager.addChangeset(); - - // Update Customer into the changeset - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Customers").appendKeySegment(1); - final URI editLink = targetURI.build(); - - final ClientEntity patch = client.getObjectFactory().newEntity( - new FullQualifiedName("Microsoft.Test.OData.Services.ODataWCFService.Customer")); - patch.setEditLink(editLink); - - patch.getProperties().add(client.getObjectFactory().newPrimitiveProperty( - "LastName", - client.getObjectFactory().newPrimitiveValueBuilder().buildString("new last name"))); - - final ODataEntityUpdateRequest<ClientEntity> changeReq = - client.getCUDRequestFactory().getEntityUpdateRequest(UpdateType.PATCH, patch); - changeReq.setFormat(ContentType.JSON_FULL_METADATA); - - changeset.addRequest(changeReq); - - // Create Order into the changeset - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Orders"); - final ClientEntity original = newOrder(1000); - final ODataEntityCreateRequest<ClientEntity> createReq = - client.getCUDRequestFactory().getEntityCreateRequest(targetURI.build(), original); - createReq.setFormat(ContentType.JSON); - changeset.addRequest(createReq); - // ------------------------------------------- - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Customers").appendKeySegment(1); - - // create new request - queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - - streamManager.addRequest(queryReq); - // ------------------------------------------- - - final ODataBatchResponse response = streamManager.getResponse(); - assertEquals(200, response.getStatusCode()); - assertEquals("OK", response.getStatusMessage()); - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - - // retrieve the first item (ODataRetrieve) - ODataBatchResponseItem item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - ODataSingleResponseItem retitem = (ODataSingleResponseItem) item; - ODataResponse res = retitem.next(); - assertTrue(res instanceof ODataEntityResponseImpl); - assertEquals(200, res.getStatusCode()); - assertEquals("OK", res.getStatusMessage()); - - ODataEntityRequestImpl<ClientEntity>.ODataEntityResponseImpl entres = - (ODataEntityRequestImpl.ODataEntityResponseImpl) res; - - ClientEntity entity = entres.getBody(); - assertEquals(1, entity.getProperty("PersonID").getPrimitiveValue().toCastValue(Integer.class), 0); - - // retrieve the second item (ODataChangeset) - item = iter.next(); - assertTrue(item instanceof ODataChangesetResponseItem); - - final ODataChangesetResponseItem chgitem = (ODataChangesetResponseItem) item; - res = chgitem.next(); - assertTrue(res instanceof ODataEntityUpdateResponse); - assertEquals(204, res.getStatusCode()); - assertEquals("No Content", res.getStatusMessage()); - - res = chgitem.next(); - assertTrue(res instanceof ODataEntityCreateResponse); - assertEquals(201, res.getStatusCode()); - assertEquals("Created", res.getStatusMessage()); - - final ODataEntityCreateResponse<ClientEntity> createres = (ODataEntityCreateResponse<ClientEntity>) res; - entity = createres.getBody(); - assertEquals(new Integer(1000), entity.getProperty("OrderID").getPrimitiveValue().toCastValue(Integer.class)); - - // retrieve the third item (ODataRetrieve) - item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - retitem = (ODataSingleResponseItem) item; - res = retitem.next(); - assertTrue(res instanceof ODataEntityResponseImpl); - assertEquals(200, res.getStatusCode()); - assertEquals("OK", res.getStatusMessage()); - - entres = (ODataEntityRequestImpl.ODataEntityResponseImpl) res; - entity = entres.getBody(); - assertEquals("new last name", entity.getProperty("LastName").getPrimitiveValue().toCastValue(String.class)); - - assertFalse(iter.hasNext()); - } - - @Test - public void async() { - // create your request - final ODataBatchRequest request = client.getBatchRequestFactory().getBatchRequest( - URI.create(testStaticServiceRootURL + "/async/").normalize().toASCIIString()); - request.setAccept(ACCEPT); - - final AsyncBatchRequestWrapper async = client.getAsyncRequestFactory().getAsyncBatchRequestWrapper(request); - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - URIBuilder targetURI = client.newURIBuilder(testStaticServiceRootURL); - targetURI.appendEntitySetSegment("People").appendKeySegment(5); - - // create new request - ODataEntityRequest<ClientEntity> queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - queryReq.setFormat(ContentType.JSON); - - async.addRetrieve(queryReq); - // ------------------------------------------- - - // ------------------------------------------- - // Add retrieve item - // ------------------------------------------- - // prepare URI - targetURI = client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Customers").appendKeySegment(1); - - // create new request - queryReq = client.getRetrieveRequestFactory().getEntityRequest(targetURI.build()); - - async.addRetrieve(queryReq); - // ------------------------------------------- - - final AsyncResponseWrapper<ODataBatchResponse> responseWrapper = async.execute(); - - assertTrue(responseWrapper.isPreferenceApplied()); - assertTrue(responseWrapper.isDone()); - - final ODataBatchResponse response = responseWrapper.getODataResponse(); - - assertEquals(200, response.getStatusCode()); - assertEquals("Ok", response.getStatusMessage()); - final Iterator<ODataBatchResponseItem> iter = response.getBody(); - - // retrieve the first item (ODataRetrieve) - final ODataBatchResponseItem item = iter.next(); - assertTrue(item instanceof ODataSingleResponseItem); - - // The service return interim results to an asynchronously executing batch. - final ODataSingleResponseItem retitem = (ODataSingleResponseItem) item; - final ODataResponse res = retitem.next(); - assertTrue(res instanceof AsyncResponse); - assertEquals(202, res.getStatusCode()); - assertEquals("Accepted", res.getStatusMessage()); - - final Collection<String> newMonitorLocation = res.getHeader(HttpHeader.LOCATION); - if (newMonitorLocation != null && !newMonitorLocation.isEmpty()) { - responseWrapper.forceNextMonitorCheck(URI.create(newMonitorLocation.iterator().next())); - // .... now you can start again with isDone() and getODataResponse(). - } - - assertFalse(retitem.hasNext()); - assertFalse(iter.hasNext()); - } - - private static class TestStreamManager extends AbstractODataStreamManager<ODataBatchResponse> { - - public TestStreamManager() { - super(new Wrapper<Future<HttpResponse>>()); - } - - public ODataPayloadManager<ODataBatchResponse> addObject(final byte[] src) { - stream(src); - return this; - } - - @Override - protected ODataBatchResponse getResponse(final long timeout, final TimeUnit unit) { - throw new UnsupportedOperationException("Not supported yet."); - } - }; - - /** - * To be used for debug purposes. - */ - private static class StreamingThread extends Thread { - - private final TestStreamManager streaming; - - public StreamingThread(final TestStreamManager streaming) { - super(); - this.streaming = streaming; - } - - @Override - public void run() { - try { - final StringBuilder builder = new StringBuilder(); - - byte[] buff = new byte[1024]; - - int len; - - while ((len = streaming.getBody().read(buff)) >= 0) { - builder.append(new String(buff, 0, len)); - } - - assertTrue(builder.toString().startsWith(PREFIX)); - assertTrue(builder.toString().contains((MAX / 2) + ") send info")); - assertTrue(builder.toString().contains((MAX / 3) + ") send info")); - assertTrue(builder.toString().contains((MAX / 20) + ") send info")); - assertTrue(builder.toString().contains((MAX / 30) + ") send info")); - assertTrue(builder.toString().contains(MAX + ") send info")); - assertTrue(builder.toString().endsWith(SUFFIX)); - - } catch (IOException e) { - fail(); - } - } - } - - private ClientEntity newOrder(final int id) { - final ClientEntity order = getClient().getObjectFactory(). - newEntity(new FullQualifiedName("Microsoft.Test.OData.Services.ODataWCFService.Order")); - - order.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("OrderID", - getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(id))); - order.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("OrderDate", - getClient().getObjectFactory().newPrimitiveValueBuilder(). - setType(EdmPrimitiveTypeKind.DateTimeOffset).setValue(Calendar.getInstance()).build())); - order.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("ShelfLife", - getClient().getObjectFactory().newPrimitiveValueBuilder(). - setType(EdmPrimitiveTypeKind.Duration).setValue(new BigDecimal("0.0000002")).build())); - order.getProperties().add(getClient().getObjectFactory().newCollectionProperty("OrderShelfLifes", - getClient().getObjectFactory().newCollectionValue(EdmPrimitiveTypeKind.Duration.name()).add( - getClient().getObjectFactory().newPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.Duration). - setValue(new BigDecimal("0.0000002")).build()))); - - return order; - } -}
