You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/04/09 14:11:19 UTC
[1/3] git commit: [OLINGO-234] Adding operation import test IT case
relying on external service, conditionally enabled - waiting for fit
Repository: olingo-odata4
Updated Branches:
refs/heads/master 4f59dba76 -> 7104c65f8
[OLINGO-234] Adding operation import test IT case relying on external service, conditionally enabled - waiting for fit
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/86a7dffd
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/86a7dffd
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/86a7dffd
Branch: refs/heads/master
Commit: 86a7dffdba436109a29ecf23b3f729d04ff8876f
Parents: 4f59dba
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Apr 8 16:09:55 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Apr 8 16:09:55 2014 +0200
----------------------------------------------------------------------
.../client/core/it/v4/AbstractTestITCase.java | 4 +
.../it/v4/OperationImportInvokeTestITCase.java | 301 +++++++++++++++++++
2 files changed, 305 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/86a7dffd/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
index 28cb871..edab2dd 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
@@ -22,9 +22,13 @@ import java.io.IOException;
import org.apache.olingo.client.api.v4.ODataClient;
import org.apache.olingo.client.core.ODataClientFactory;
import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public abstract class AbstractTestITCase {
+ protected static final Logger LOG = LoggerFactory.getLogger(AbstractTestITCase.class);
+
protected static ODataClient client;
protected static String testStaticServiceRootURL;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/86a7dffd/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
new file mode 100644
index 0000000..91ddf22
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
@@ -0,0 +1,301 @@
+/*
+ * 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.client.core.it.v4;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.apache.commons.io.IOUtils;
+import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
+import org.apache.olingo.client.api.communication.request.invoke.ODataNoContent;
+import org.apache.olingo.commons.api.domain.ODataCollectionValue;
+import org.apache.olingo.commons.api.domain.ODataComplexValue;
+import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
+import org.apache.olingo.commons.api.domain.ODataValue;
+import org.apache.olingo.commons.api.domain.v4.ODataEntity;
+import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
+import org.apache.olingo.commons.api.domain.v4.ODataEnumValue;
+import org.apache.olingo.commons.api.domain.v4.ODataProperty;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
+import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.format.ODataPubFormat;
+import org.junit.Assume;
+import org.junit.BeforeClass;
+
+import org.junit.Test;
+
+public class OperationImportInvokeTestITCase extends AbstractTestITCase {
+
+ private static final String serviceRoot = "http://odatae2etest.azurewebsites.net/javatest/DefaultService";
+
+ // TODO: remove once fit provides function / action imports
+ @BeforeClass
+ public static void checkServerIsOnline() throws IOException {
+ Socket socket = new Socket();
+ boolean reachable = false;
+ try {
+ socket.connect(new InetSocketAddress("odatae2etest.azurewebsites.net", 80), 2000);
+ reachable = true;
+ } catch (Exception e) {
+ LOG.warn("External test service not reachable, ignoring this whole class: {}",
+ OperationImportInvokeTestITCase.class.getName());
+ } finally {
+ IOUtils.closeQuietly(socket);
+ }
+ Assume.assumeTrue(reachable);
+ }
+
+ public Edm getEdm() {
+ final Edm edm = getClient().getRetrieveRequestFactory().
+ getMetadataRequest(serviceRoot).execute().getBody();
+ assertNotNull(edm);
+
+ return edm;
+ }
+
+ private void functionImports(final ODataPubFormat format) throws EdmPrimitiveTypeException {
+ final Edm edm = getEdm();
+ final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+ assertNotNull(container);
+
+ // GetDefaultColor
+ EdmFunctionImport funcImp = container.getFunctionImport("GetDefaultColor");
+
+ final ODataInvokeRequest<ODataProperty> defaultColorReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0));
+ defaultColorReq.setFormat(format);
+ final ODataProperty defaultColor = defaultColorReq.execute().getBody();
+ assertNotNull(defaultColor);
+ assertTrue(defaultColor.hasEnumValue());
+ assertEquals("Red", defaultColor.getEnumValue().getValue());
+ assertEquals("Microsoft.Test.OData.Services.ODataWCFService.Color", defaultColor.getEnumValue().getTypeName());
+
+ // GetPerson2
+ funcImp = container.getFunctionImport("GetPerson2");
+
+ final ODataPrimitiveValue city =
+ getClient().getObjectFactory().newPrimitiveValueBuilder().setText("London").build();
+
+ final ODataInvokeRequest<ODataEntity> person2Req = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0),
+ Collections.<String, ODataValue>singletonMap("city", city));
+ person2Req.setFormat(format);
+ final ODataEntity person2 = person2Req.execute().getBody();
+ assertNotNull(person2);
+ assertEquals("#Microsoft.Test.OData.Services.ODataWCFService.Customer", person2.getName());
+ assertEquals(1, person2.getProperty("PersonID").getPrimitiveValue().toCastValue(Integer.class), 0);
+
+ // GetPerson
+ funcImp = container.getFunctionImport("GetPerson");
+
+ final ODataComplexValue<ODataProperty> address = getClient().getObjectFactory().
+ newLinkedComplexValue("Microsoft.Test.OData.Services.ODataWCFService.Address");
+ address.add(client.getObjectFactory().newPrimitiveProperty("Street",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("1 Microsoft Way").build()));
+ address.add(client.getObjectFactory().newPrimitiveProperty("City",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("London").build()));
+ address.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("98052").build()));
+
+ final ODataInvokeRequest<ODataEntity> personReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0),
+ Collections.<String, ODataValue>singletonMap("address", address));
+ personReq.setFormat(format);
+ //TODO test service doesn't support yet complex and collection values as inline parameters
+ try {
+ final ODataEntity person = personReq.execute().getBody();
+ assertNotNull(person);
+ } catch (Exception e) {
+ // ignore
+ }
+
+ // GetAllProducts
+ funcImp = container.getFunctionImport("GetAllProducts");
+
+ final ODataInvokeRequest<ODataEntitySet> productsReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0));
+ productsReq.setFormat(format);
+ final ODataEntitySet products = productsReq.execute().getBody();
+ assertNotNull(products);
+ assertEquals(5, products.getCount());
+
+ // GetProductsByAccessLevel
+ funcImp = container.getFunctionImport("GetProductsByAccessLevel");
+
+ final ODataEnumValue accessLevel = getClient().getObjectFactory().
+ newEnumValue("Microsoft.Test.OData.Services.ODataWCFService.AccessLevel", "None");
+
+ final ODataInvokeRequest<ODataProperty> prodByALReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0),
+ Collections.<String, ODataValue>singletonMap("accessLevel", accessLevel));
+ prodByALReq.setFormat(format);
+ final ODataProperty prodByAL = prodByALReq.execute().getBody();
+ assertNotNull(prodByAL);
+ assertTrue(prodByAL.hasCollectionValue());
+ assertEquals(5, prodByAL.getCollectionValue().size());
+ assertTrue(prodByAL.getCollectionValue().asJavaCollection().contains("Car"));
+ }
+
+ @Test
+ public void atomFunctionImports() throws EdmPrimitiveTypeException {
+ functionImports(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ public void jsonFunctionImports() throws EdmPrimitiveTypeException {
+ functionImports(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+ private void actionImports(final ODataPubFormat format) {
+ final Edm edm = getEdm();
+ final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+ assertNotNull(container);
+
+ // Discount
+ EdmActionImport actImp = container.getActionImport("Discount");
+
+ final ODataPrimitiveValue percentage = getClient().getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.Int32).setValue(22).build();
+ final ODataInvokeRequest<ODataNoContent> discountReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(actImp.getName()).build(),
+ actImp.getUnboundAction(),
+ Collections.<String, ODataValue>singletonMap("percentage", percentage));
+ discountReq.setFormat(format);
+ final ODataNoContent discount = discountReq.execute().getBody();
+ assertNotNull(discount);
+
+ // ResetBossAddress
+ actImp = container.getActionImport("ResetBossAddress");
+
+ final ODataComplexValue<ODataProperty> address = getClient().getObjectFactory().
+ newLinkedComplexValue("Microsoft.Test.OData.Services.ODataWCFService.Address");
+ address.add(client.getObjectFactory().newPrimitiveProperty("Street",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("Via Le Mani Dal Naso, 666").build()));
+ address.add(client.getObjectFactory().newPrimitiveProperty("City",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("Tollo").build()));
+ address.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
+ client.getObjectFactory().newPrimitiveValueBuilder().setText("66010").build()));
+
+ final ODataInvokeRequest<ODataProperty> resetBossAddressReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(actImp.getName()).build(),
+ actImp.getUnboundAction(),
+ Collections.<String, ODataValue>singletonMap("address", address));
+ resetBossAddressReq.setFormat(format);
+ final ODataProperty resetBossAddress = resetBossAddressReq.execute().getBody();
+ assertNotNull(resetBossAddress);
+ }
+
+ @Test
+ public void atomActionImports() {
+ //TODO test service doesn't support yet Atom POST params
+ try {
+ actionImports(ODataPubFormat.ATOM);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ @Test
+ public void jsonActionImports() {
+ actionImports(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+ private void bossEmails(final ODataPubFormat format) {
+ final Edm edm = getEdm();
+ final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+ assertNotNull(container);
+
+ // ResetBossEmail
+ final EdmActionImport actImp = container.getActionImport("ResetBossEmail");
+
+ final ODataCollectionValue<org.apache.olingo.commons.api.domain.v4.ODataValue> emails =
+ getClient().getObjectFactory().newCollectionValue(
+ EdmPrimitiveTypeKind.String.getFullQualifiedName().toString());
+ emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().setValue("first@olingo.apache.org").build());
+ emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().setValue("second@olingo.apache.org").build());
+ ODataInvokeRequest<ODataProperty> bossEmailsReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(actImp.getName()).build(),
+ actImp.getUnboundAction(),
+ Collections.<String, ODataValue>singletonMap("emails", emails));
+ bossEmailsReq.setFormat(format);
+ final ODataProperty bossEmails = bossEmailsReq.execute().getBody();
+ assertNotNull(bossEmails);
+ assertTrue(bossEmails.hasCollectionValue());
+ assertEquals(2, bossEmails.getCollectionValue().size());
+
+ EdmFunctionImport funcImp = container.getFunctionImport("GetBossEmails");
+
+ final Map<String, ODataValue> params = new LinkedHashMap<String, ODataValue>(2);
+ params.put("start", getClient().getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.Int32).setValue(0).build());
+ params.put("count", getClient().getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.Int32).setValue(100).build());
+ bossEmailsReq = getClient().getInvokeRequestFactory().
+ getInvokeRequest(getClient().getURIBuilder(serviceRoot).
+ appendOperationCallSegment(funcImp.getName()).build(),
+ funcImp.getUnboundFunctions().get(0),
+ params);
+ bossEmailsReq.setFormat(format);
+ final ODataProperty bossEmailsViaGET = bossEmailsReq.execute().getBody();
+ assertNotNull(bossEmailsViaGET);
+ assertTrue(bossEmailsViaGET.hasCollectionValue());
+ assertEquals(2, bossEmailsViaGET.getCollectionValue().size());
+ assertEquals(bossEmails, bossEmailsViaGET);
+ }
+
+ @Test
+ public void atomBossEmails() throws EdmPrimitiveTypeException {
+ //TODO test service doesn't support yet Atom POST params
+ try {
+ bossEmails(ODataPubFormat.ATOM);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ @Test
+ public void jsonBossEmails() throws EdmPrimitiveTypeException {
+ bossEmails(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+}
[2/3] git commit: Small fixes and utility methods
Posted by il...@apache.org.
Small fixes and utility methods
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/d3b513cf
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/d3b513cf
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/d3b513cf
Branch: refs/heads/master
Commit: d3b513cfb58380c4168658ad41c6b96673be9294
Parents: 86a7dff
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Apr 9 14:09:53 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Apr 9 14:09:53 2014 +0200
----------------------------------------------------------------------
.../invoke/v4/ODataInvokeRequestImpl.java | 2 -
.../olingo/client/core/edm/EdmClientImpl.java | 12 +-
.../olingo/client/core/edm/EdmSchemaImpl.java | 10 +-
.../client/core/it/v3/AbstractTestITCase.java | 20 +--
.../core/it/v3/ActionOverloadingTestITCase.java | 4 +-
.../core/it/v3/EntityCreateTestITCase.java | 31 ++--
.../core/it/v3/EntityUpdateTestITCase.java | 4 +-
.../client/core/it/v3/InvokeTestITCase.java | 18 +--
.../core/it/v4/EntityCreateTestITCase.java | 3 +-
.../it/v4/OperationImportInvokeTestITCase.java | 31 ++--
.../olingo/commons/api/domain/ODataItem.java | 12 +-
.../olingo/commons/api/domain/ODataLink.java | 2 +-
.../commons/api/domain/ODataPrimitiveValue.java | 13 ++
.../commons/api/edm/EdmEntityContainer.java | 5 +
.../apache/olingo/commons/api/edm/EdmType.java | 5 +
.../commons/api/edm/FullQualifiedName.java | 17 ++-
.../apache/olingo/commons/api/edm/Target.java | 12 +-
.../domain/AbstractODataPrimitiveValue.java | 32 +++++
.../core/edm/AbstractEdmEntityContainer.java | 5 +
.../commons/core/edm/AbstractEdmOperation.java | 140 +++++++++----------
.../commons/core/edm/AbstractEdmSchema.java | 2 +-
.../core/edm/AbstractEdmTypeDefinition.java | 5 +
.../olingo/commons/core/edm/EdmNamedImpl.java | 20 +--
.../olingo/commons/core/edm/EdmTypeImpl.java | 6 +
.../primitivetype/AbstractPrimitiveType.java | 15 +-
25 files changed, 233 insertions(+), 193 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/ODataInvokeRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/ODataInvokeRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/ODataInvokeRequestImpl.java
index a59b727..1bd0bbd 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/ODataInvokeRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/ODataInvokeRequestImpl.java
@@ -57,8 +57,6 @@ public class ODataInvokeRequestImpl<T extends ODataInvokeResult> extends Abstrac
String baseURI = this.uri.toASCIIString();
if (baseURI.endsWith("()")) {
baseURI = baseURI.substring(0, baseURI.length() - 2);
- } else if (!baseURI.endsWith("(")) {
- baseURI = baseURI.substring(0, baseURI.length() - 1);
}
final StringBuilder inlineParams = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
index 21a1dbf..1e16adb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
@@ -305,7 +305,8 @@ public class EdmClientImpl extends AbstractEdm {
final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
setTypeExpression(action.getParameters().get(0).getType()).build();
if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
- && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+ && (isBindingParameterCollection == null
+ || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
found = true;
result = EdmActionImpl.getInstance(this, actionName, action);
@@ -324,7 +325,8 @@ public class EdmClientImpl extends AbstractEdm {
final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
setTypeExpression(functionImport.getParameters().get(0).getType()).build();
if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
- && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+ && (isBindingParameterCollection == null
+ || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
found = true;
result = EdmActionProxy.getInstance(this, actionName, functionImport);
@@ -355,7 +357,8 @@ public class EdmClientImpl extends AbstractEdm {
final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
setTypeExpression(function.getParameters().get(0).getType()).build();
if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
- && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+ && (isBindingParameterCollection == null
+ || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
final Set<String> functionParamNames = new HashSet<String>();
for (CommonParameter param : function.getParameters()) {
@@ -380,7 +383,8 @@ public class EdmClientImpl extends AbstractEdm {
final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
setTypeExpression(functionImport.getParameters().get(0).getType()).build();
if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
- && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+ && (isBindingParameterCollection == null
+ || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
final Set<String> functionParamNames = new HashSet<String>();
for (CommonParameter param : functionImport.getParameters()) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
index 0d5a936..5ee3461 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
@@ -76,17 +76,13 @@ public class EdmSchemaImpl extends AbstractEdmSchema {
if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
entityContainers = super.getEntityContainers();
entityContainerByName = new HashMap<FullQualifiedName, EdmEntityContainer>();
- entityContainerByName.put(
- new FullQualifiedName(getEntityContainer().getNamespace(), getEntityContainer().getName()),
- getEntityContainer());
+ entityContainerByName.put(getEntityContainer().getFullQualifiedName(), getEntityContainer());
} else {
entityContainers = new ArrayList<EdmEntityContainer>(schema.getEntityContainers().size());
for (EntityContainer entityContainer : schema.getEntityContainers()) {
final EdmEntityContainer edmContainer = createEntityContainer(entityContainer.getName());
- final FullQualifiedName fqn = new FullQualifiedName(edmContainer.getNamespace(), edmContainer.getName());
-
entityContainers.add(edmContainer);
- entityContainerByName.put(fqn, edmContainer);
+ entityContainerByName.put(edmContainer.getFullQualifiedName(), edmContainer);
}
}
}
@@ -127,7 +123,7 @@ public class EdmSchemaImpl extends AbstractEdmSchema {
if (providerTypeDefinitions != null) {
for (TypeDefinition def : providerTypeDefinitions) {
typeDefinitions.add(
- new EdmTypeDefinitionImpl(version, edm, new FullQualifiedName("namespace", def.getName()), def));
+ new EdmTypeDefinitionImpl(version, edm, new FullQualifiedName(namespace, def.getName()), def));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
index bee2500..0ca15c1 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
@@ -238,8 +238,7 @@ public abstract class AbstractTestITCase {
getClient().getBinder().add(entity,
getClient().getObjectFactory().newPrimitiveProperty("Information",
- getClient().getObjectFactory().newPrimitiveValueBuilder().setText(sampleinfo).
- setType(EdmPrimitiveTypeKind.String).build()));
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildString(sampleinfo)));
return entity;
}
@@ -253,14 +252,12 @@ public abstract class AbstractTestITCase {
// add name attribute
getClient().getBinder().add(entity,
getClient().getObjectFactory().newPrimitiveProperty("Name",
- getClient().getObjectFactory().newPrimitiveValueBuilder().setText(sampleName).
- setType(EdmPrimitiveTypeKind.String).build()));
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildString(sampleName)));
// add key attribute
getClient().getBinder().add(entity,
getClient().getObjectFactory().newPrimitiveProperty("CustomerId",
- getClient().getObjectFactory().newPrimitiveValueBuilder().setText(String.valueOf(id)).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(id)));
// add BackupContactInfo attribute (collection)
final ODataCollectionValue<ODataValue> backupContactInfoValue = getClient().getObjectFactory().newCollectionValue(
@@ -276,15 +273,13 @@ public abstract class AbstractTestITCase {
// add BackupContactInfo.ContactDetails.AlternativeNames attribute (collection)
final ODataCollectionValue<ODataValue> altNamesValue = getClient().getObjectFactory().
newCollectionValue("Collection(Edm.String)");
- altNamesValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("myname").setType(EdmPrimitiveTypeKind.String).build());
+ altNamesValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("myname"));
contactDetails.add(getClient().getObjectFactory().newCollectionProperty("AlternativeNames", altNamesValue));
// add BackupContactInfo.ContactDetails.EmailBag attribute (collection)
final ODataCollectionValue<ODataValue> emailBagValue = getClient().getObjectFactory().
newCollectionValue("Collection(Edm.String)");
- emailBagValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("myname@mydomain.com").setType(EdmPrimitiveTypeKind.String).build());
+ emailBagValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("myname@mydomain.com"));
contactDetails.add(getClient().getObjectFactory().newCollectionProperty("EmailBag", emailBagValue));
// add BackupContactInfo.ContactDetails.ContactAlias attribute (complex)
@@ -295,8 +290,7 @@ public abstract class AbstractTestITCase {
// add BackupContactInfo.ContactDetails.ContactAlias.AlternativeNames attribute (collection)
final ODataCollectionValue<ODataValue> aliasAltNamesValue = getClient().getObjectFactory().
newCollectionValue("Collection(Edm.String)");
- aliasAltNamesValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("myAlternativeName").setType(EdmPrimitiveTypeKind.String).build());
+ aliasAltNamesValue.add(getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("myAlternativeName"));
contactAliasValue.add(getClient().getObjectFactory().newCollectionProperty("AlternativeNames", aliasAltNamesValue));
if (withInlineInfo) {
@@ -545,7 +539,7 @@ public abstract class AbstractTestITCase {
getClient().getBinder().add(changes,
getClient().getObjectFactory().newPrimitiveProperty(propertyName,
- getClient().getObjectFactory().newPrimitiveValueBuilder().setText(newm).build()));
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildString(newm)));
update(type, changes, format, etag);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ActionOverloadingTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ActionOverloadingTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ActionOverloadingTestITCase.java
index 1031fbe..4273a9c 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ActionOverloadingTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ActionOverloadingTestITCase.java
@@ -37,7 +37,6 @@ import org.apache.olingo.commons.api.edm.EdmAction;
import org.apache.olingo.commons.api.edm.EdmActionImport;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
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.core.edm.primitivetype.EdmInt32;
import org.junit.Test;
@@ -132,8 +131,7 @@ public class ActionOverloadingTestITCase extends AbstractTestITCase {
for (EdmActionImport actImp : container.getActionImports()) {
if ("IncreaseSalaries".equals(actImp.getName())) {
final Map<String, ODataValue> parameters = new LinkedHashMap<String, ODataValue>(1);
- parameters.put("n", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setType(EdmPrimitiveTypeKind.Int32).setValue(5).build());
+ parameters.put("n", getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(5));
// 1. bound to employees
final EdmAction employeeBound = edm.getBoundAction(
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
index f89be63..ef1ac85 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
@@ -43,7 +43,6 @@ import org.apache.olingo.commons.api.domain.v3.ODataEntity;
import org.apache.olingo.commons.api.domain.v3.ODataEntitySet;
import org.apache.olingo.commons.api.domain.v3.ODataProperty;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.format.ODataPubFormat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -292,12 +291,10 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
getClient().getBinder().add(order,
client.getObjectFactory().newPrimitiveProperty("OrderId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(key).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(key)));
getClient().getBinder().add(order,
client.getObjectFactory().newPrimitiveProperty("CustomerId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(id).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(id)));
final ODataEntityCreateRequest<ODataEntity> createReq = client.getCUDRequestFactory().getEntityCreateRequest(
client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Order").build(), order);
@@ -392,12 +389,10 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
"Microsoft.Test.OData.Services.AstoriaDefaultService.Order");
getClient().getBinder().add(order,
client.getObjectFactory().newPrimitiveProperty("CustomerId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(id).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(id)));
getClient().getBinder().add(order,
client.getObjectFactory().newPrimitiveProperty("OrderId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(id).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(id)));
order.addLink(client.getObjectFactory().newEntityNavigationLink(
"Customer", URIUtils.getURI(getServiceRoot(), customer.getEditLink().toASCIIString())));
@@ -454,28 +449,22 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("MessageId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(1000).
- setType(EdmPrimitiveTypeKind.Int32).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(1000)));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("FromUsername",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue("1").
- setType(EdmPrimitiveTypeKind.String).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("1")));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("ToUsername",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue("xlodhxzzusxecbzptxlfxprneoxkn").
- setType(EdmPrimitiveTypeKind.String).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("xlodhxzzusxecbzptxlfxprneoxkn")));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("Subject",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue("Test subject").
- setType(EdmPrimitiveTypeKind.String).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Test subject")));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("Body",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue("Test body").
- setType(EdmPrimitiveTypeKind.String).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Test body")));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("IsRead",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(false).
- setType(EdmPrimitiveTypeKind.Boolean).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildBoolean(false)));
final URIBuilder builder =
client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Message");
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityUpdateTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityUpdateTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityUpdateTestITCase.java
index 223f908..2ad2816 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityUpdateTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityUpdateTestITCase.java
@@ -29,7 +29,6 @@ import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRe
import org.apache.olingo.client.api.communication.response.ODataEntityUpdateResponse;
import org.apache.olingo.commons.api.domain.v3.ODataEntity;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.format.ODataPubFormat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -187,8 +186,7 @@ public class EntityUpdateTestITCase extends AbstractTestITCase {
message.getProperties().remove(message.getProperty("IsRead"));
getClient().getBinder().add(message,
client.getObjectFactory().newPrimitiveProperty("IsRead",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(!before).
- setType(EdmPrimitiveTypeKind.Boolean).build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildBoolean(!before)));
return client.getCUDRequestFactory().getEntityUpdateRequest(UpdateType.MERGE, message);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
index 50e95c5..70daa25 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
@@ -53,7 +53,6 @@ import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmFunctionImport;
import org.apache.olingo.commons.api.edm.EdmParameter;
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.ODataPubFormat;
import org.apache.olingo.commons.core.edm.EdmTypeInfo;
@@ -190,20 +189,15 @@ public class InvokeTestITCase extends AbstractTestITCase {
"Microsoft.Test.OData.Services.AstoriaDefaultService.Employee");
employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("PersonId",
- getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("1244").setType(EdmPrimitiveTypeKind.Int32).build()));
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(1244)));
+ employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("Name",
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("Test employee")));
employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
- "Name", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("Test employee").build()));
+ "ManagersPersonId", getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(3777)));
employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
- "ManagersPersonId", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("3777").setType(EdmPrimitiveTypeKind.Int32).build()));
+ "Salary", getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(1000)));
employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
- "Salary", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("1000").setType(EdmPrimitiveTypeKind.Int32).build()));
- employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
- "Title", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setText("CEO").build()));
+ "Title", getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("CEO")));
final URIBuilder uriBuilder = getClient().getURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Person");
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityCreateTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityCreateTestITCase.java
index 962542c..9098d49 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityCreateTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityCreateTestITCase.java
@@ -37,8 +37,7 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
final ODataEntity order = new ODataEntityImpl("Microsoft.Test.OData.Services.ODataWCFService.Order");
final ODataProperty orderId = getClient().getObjectFactory().newPrimitiveProperty("OrderID",
- getClient().getObjectFactory().newPrimitiveValueBuilder().
- setType(EdmPrimitiveTypeKind.Int32).setValue(id).build());
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(id));
order.getProperties().add(orderId);
final ODataProperty orderDate = getClient().getObjectFactory().newPrimitiveProperty("OrderDate",
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
index 91ddf22..9bd2c35 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/OperationImportInvokeTestITCase.java
@@ -58,7 +58,7 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
// TODO: remove once fit provides function / action imports
@BeforeClass
public static void checkServerIsOnline() throws IOException {
- Socket socket = new Socket();
+ final Socket socket = new Socket();
boolean reachable = false;
try {
socket.connect(new InetSocketAddress("odatae2etest.azurewebsites.net", 80), 2000);
@@ -72,7 +72,7 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
Assume.assumeTrue(reachable);
}
- public Edm getEdm() {
+ private Edm getEdm() {
final Edm edm = getClient().getRetrieveRequestFactory().
getMetadataRequest(serviceRoot).execute().getBody();
assertNotNull(edm);
@@ -103,7 +103,7 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
funcImp = container.getFunctionImport("GetPerson2");
final ODataPrimitiveValue city =
- getClient().getObjectFactory().newPrimitiveValueBuilder().setText("London").build();
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("London");
final ODataInvokeRequest<ODataEntity> person2Req = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
@@ -122,11 +122,11 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
final ODataComplexValue<ODataProperty> address = getClient().getObjectFactory().
newLinkedComplexValue("Microsoft.Test.OData.Services.ODataWCFService.Address");
address.add(client.getObjectFactory().newPrimitiveProperty("Street",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("1 Microsoft Way").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("1 Microsoft Way")));
address.add(client.getObjectFactory().newPrimitiveProperty("City",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("London").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("London")));
address.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("98052").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("98052")));
final ODataInvokeRequest<ODataEntity> personReq = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
@@ -191,8 +191,7 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
// Discount
EdmActionImport actImp = container.getActionImport("Discount");
- final ODataPrimitiveValue percentage = getClient().getObjectFactory().newPrimitiveValueBuilder().
- setType(EdmPrimitiveTypeKind.Int32).setValue(22).build();
+ final ODataPrimitiveValue percentage = getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(22);
final ODataInvokeRequest<ODataNoContent> discountReq = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
appendOperationCallSegment(actImp.getName()).build(),
@@ -208,11 +207,11 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
final ODataComplexValue<ODataProperty> address = getClient().getObjectFactory().
newLinkedComplexValue("Microsoft.Test.OData.Services.ODataWCFService.Address");
address.add(client.getObjectFactory().newPrimitiveProperty("Street",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("Via Le Mani Dal Naso, 666").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Via Le Mani Dal Naso, 123")));
address.add(client.getObjectFactory().newPrimitiveProperty("City",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("Tollo").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Tollo")));
address.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("66010").build()));
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("66010")));
final ODataInvokeRequest<ODataProperty> resetBossAddressReq = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
@@ -250,8 +249,8 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
final ODataCollectionValue<org.apache.olingo.commons.api.domain.v4.ODataValue> emails =
getClient().getObjectFactory().newCollectionValue(
EdmPrimitiveTypeKind.String.getFullQualifiedName().toString());
- emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().setValue("first@olingo.apache.org").build());
- emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().setValue("second@olingo.apache.org").build());
+ emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("first@olingo.apache.org"));
+ emails.add(getClient().getObjectFactory().newPrimitiveValueBuilder().buildString("second@olingo.apache.org"));
ODataInvokeRequest<ODataProperty> bossEmailsReq = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
appendOperationCallSegment(actImp.getName()).build(),
@@ -266,10 +265,8 @@ public class OperationImportInvokeTestITCase extends AbstractTestITCase {
EdmFunctionImport funcImp = container.getFunctionImport("GetBossEmails");
final Map<String, ODataValue> params = new LinkedHashMap<String, ODataValue>(2);
- params.put("start", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setType(EdmPrimitiveTypeKind.Int32).setValue(0).build());
- params.put("count", getClient().getObjectFactory().newPrimitiveValueBuilder().
- setType(EdmPrimitiveTypeKind.Int32).setValue(100).build());
+ params.put("start", getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(0));
+ params.put("count", getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(100));
bossEmailsReq = getClient().getInvokeRequestFactory().
getInvokeRequest(getClient().getURIBuilder(serviceRoot).
appendOperationCallSegment(funcImp.getName()).build(),
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataItem.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataItem.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataItem.java
index 6ab2376..3ad5ed5 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataItem.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataItem.java
@@ -52,32 +52,28 @@ public abstract class ODataItem implements Serializable {
/**
* Constructor.
*
- * @param name OData entity name.
+ * @param name ODataItem name (it's entity type for {@link CommonODataEntity}).
*/
public ODataItem(final String name) {
this.name = name;
}
/**
- * Returns OData entity name.
- *
- * @return entity name.
+ * @return ODataItem name (it's entity type for {@link CommonODataEntity}).
*/
public String getName() {
return name;
}
/**
- * Returns self link.
- *
- * @return entity edit link.
+ * @return ODataItem link (it's edit link for {@link CommonODataEntity}).
*/
public URI getLink() {
return link;
}
/**
- * Sets self link.
+ * Sets ODataItem link (it's edit link for {@link CommonODataEntity}).
*
* @param link link.
*/
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
index d463511..1b74caa 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
@@ -70,7 +70,7 @@ public class ODataLink extends ODataItem {
}
public ODataLink build() {
- ODataLink instance = new ODataLink(version, uri, type, title);
+ final ODataLink instance = new ODataLink(version, uri, type, title);
instance.mediaETag = this.mediaETag;
return instance;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
index fb4d0bc..8b0e5bb 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
@@ -18,6 +18,7 @@
*/
package org.apache.olingo.commons.api.domain;
+import java.util.UUID;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
@@ -36,6 +37,18 @@ public interface ODataPrimitiveValue extends ODataValue {
Builder setValue(Object value);
ODataPrimitiveValue build();
+
+ ODataPrimitiveValue buildBoolean(Boolean value);
+
+ ODataPrimitiveValue buildInt32(Integer value);
+
+ ODataPrimitiveValue buildSingle(Float value);
+
+ ODataPrimitiveValue buildDouble(Double value);
+
+ ODataPrimitiveValue buildString(String value);
+
+ ODataPrimitiveValue buildGuid(UUID value);
}
EdmPrimitiveTypeKind getTypeKind();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
index c0e1815..519c11d 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
@@ -34,6 +34,11 @@ public interface EdmEntityContainer extends EdmNamed {
String getNamespace();
/**
+ * @return full qualified name of this entity container
+ */
+ FullQualifiedName getFullQualifiedName();
+
+ /**
* Returns whether this container is the default container in the current schema.
* <br/>
* According to CSDL specifications, this method will always return <tt>true</tt> for OData 4.0.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmType.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmType.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmType.java
index 985e101..6832ae4 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmType.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmType.java
@@ -26,6 +26,11 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
public interface EdmType extends EdmNamed {
/**
+ * @return full qualified name
+ */
+ FullQualifiedName getFullQualifiedName();
+
+ /**
* Namespace of this {@link EdmType}.
*
* @return namespace as String
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/FullQualifiedName.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/FullQualifiedName.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/FullQualifiedName.java
index a439e72..4035b44 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/FullQualifiedName.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/FullQualifiedName.java
@@ -36,17 +36,22 @@ public class FullQualifiedName {
public FullQualifiedName(final String namespace, final String name) {
this.namespace = namespace;
this.name = name;
- fqn = namespace + "." + name;
+ this.fqn = namespace + "." + name;
}
/**
- * @param namespace.name
+ * @param namespaceAndName
*/
public FullQualifiedName(final String namespaceAndName) {
- fqn = namespaceAndName;
- String[] split = namespaceAndName.split(".");
- namespace = split[0];
- name = split[1];
+ final int dotIdx = namespaceAndName.lastIndexOf('.');
+ if (dotIdx == -1 || dotIdx == 0 || dotIdx == namespaceAndName.length() - 1) {
+ throw new IllegalArgumentException(
+ "Malformed " + FullQualifiedName.class.getSimpleName() + ": " + namespaceAndName);
+ }
+
+ this.fqn = namespaceAndName;
+ this.namespace = this.fqn.substring(0, dotIdx);
+ this.name = this.fqn.substring(dotIdx + 1);
}
/**
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Target.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Target.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Target.java
index 122e670..ac9e3c9 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Target.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Target.java
@@ -37,15 +37,11 @@ public class Target {
instance = new Target();
if (bindingTargetParts.length == 1) {
- instance.
- setEntityContainer(new FullQualifiedName(defaultContainer.getNamespace(), defaultContainer.getName())).
- setTargetName(bindingTargetParts[0]);
+ instance.setEntityContainer(defaultContainer.getFullQualifiedName()).
+ setTargetName(bindingTargetParts[0]);
} else {
- final int idx = bindingTargetParts[0].lastIndexOf('.');
- instance.
- setEntityContainer(new FullQualifiedName(
- bindingTargetParts[0].substring(0, idx), bindingTargetParts[0].substring(idx))).
- setTargetName(bindingTargetParts[1]);
+ instance.setEntityContainer(new FullQualifiedName(bindingTargetParts[0])).
+ setTargetName(bindingTargetParts[1]);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
index 36b07d0..a18971f 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
@@ -20,6 +20,7 @@ package org.apache.olingo.commons.core.domain;
import java.sql.Timestamp;
import java.util.Calendar;
+import java.util.UUID;
import org.apache.olingo.commons.api.Constants;
import org.apache.olingo.commons.api.domain.AbstractODataValue;
import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
@@ -130,6 +131,37 @@ public abstract class AbstractODataPrimitiveValue extends AbstractODataValue imp
return getInstance();
}
+
+ @Override
+ public ODataPrimitiveValue buildBoolean(final Boolean value) {
+ return setType(EdmPrimitiveTypeKind.Boolean).setValue(value).build();
+ }
+
+ @Override
+ public ODataPrimitiveValue buildInt32(final Integer value) {
+ return setType(EdmPrimitiveTypeKind.Int32).setValue(value).build();
+ }
+
+ @Override
+ public ODataPrimitiveValue buildSingle(final Float value) {
+ return setType(EdmPrimitiveTypeKind.Single).setValue(value).build();
+ }
+
+ @Override
+ public ODataPrimitiveValue buildDouble(final Double value) {
+ return setType(EdmPrimitiveTypeKind.Double).setValue(value).build();
+ }
+
+ @Override
+ public ODataPrimitiveValue buildString(final String value) {
+ return setType(EdmPrimitiveTypeKind.String).setValue(value).build();
+ }
+
+ @Override
+ public ODataPrimitiveValue buildGuid(final UUID value) {
+ return setType(EdmPrimitiveTypeKind.Guid).setValue(value).build();
+ }
+
}
/**
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
index 815a00f..cf08fe3 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
@@ -70,6 +70,11 @@ public abstract class AbstractEdmEntityContainer extends EdmNamedImpl implements
return entityContainerName.getNamespace();
}
+ @Override
+ public FullQualifiedName getFullQualifiedName() {
+ return new FullQualifiedName(getNamespace(), getName());
+ }
+
protected abstract EdmSingleton createSingleton(String singletonName);
@Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
index 3c2f894..9be59aa 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
@@ -35,83 +35,83 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
public abstract class AbstractEdmOperation extends EdmTypeImpl implements EdmOperation {
- private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
+ private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
- private String entitySetPath;
+ private String entitySetPath;
- private boolean isBound;
+ private boolean isBound;
- private EdmReturnType returnType;
+ private EdmReturnType returnType;
- private List<String> parameterNames;
+ private List<String> parameterNames;
- protected AbstractEdmOperation(
- final Edm edm,
- final FullQualifiedName fqn,
- final EdmTypeKind kind) {
- super(edm, fqn, kind);
- }
-
- protected void setParameters(final List<EdmParameter> _parameters) {
- for (EdmParameter parameter : _parameters) {
- parameters.put(parameter.getName(), parameter);
- }
- }
-
- protected void setEntitySetPath(final String entitySetPath) {
- this.entitySetPath = entitySetPath;
- }
-
- protected void setIsBound(final boolean isBound) {
- this.isBound = isBound;
- }
+ protected AbstractEdmOperation(
+ final Edm edm,
+ final FullQualifiedName fqn,
+ final EdmTypeKind kind) {
+ super(edm, fqn, kind);
+ }
- protected void setReturnType(final EdmReturnType returnType) {
- this.returnType = returnType;
+ protected void setParameters(final List<EdmParameter> _parameters) {
+ for (EdmParameter parameter : _parameters) {
+ parameters.put(parameter.getName(), parameter);
}
-
- @Override
- public EdmParameter getParameter(final String name) {
- return parameters.get(name);
+ }
+
+ protected void setEntitySetPath(final String entitySetPath) {
+ this.entitySetPath = entitySetPath;
+ }
+
+ protected void setIsBound(final boolean isBound) {
+ this.isBound = isBound;
+ }
+
+ protected void setReturnType(final EdmReturnType returnType) {
+ this.returnType = returnType;
+ }
+
+ @Override
+ public EdmParameter getParameter(final String name) {
+ return parameters.get(name);
+ }
+
+ @Override
+ public List<String> getParameterNames() {
+ if (parameterNames == null) {
+ parameterNames = new ArrayList<String>(parameters.size());
+ for (String parameterName : parameters.keySet()) {
+ parameterNames.add(parameterName);
+ }
}
-
- @Override
- public List<String> getParameterNames() {
- if (parameterNames == null) {
- parameterNames = new ArrayList<String>(parameters.size());
- for (String parameterName : parameters.keySet()) {
- parameterNames.add(parameterName);
- }
- }
- return parameterNames;
- }
-
- @Override
- public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
- EdmEntitySet returnedEntitySet = null;
- if (bindingParameterEntitySet != null && entitySetPath != null) {
- final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.
- getRelatedBindingTarget(entitySetPath);
- if (relatedBindingTarget == null) {
- throw new EdmException("Cannot find entity set with path: " + entitySetPath);
- }
- if (relatedBindingTarget instanceof EdmEntitySet) {
- returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
- } else {
- throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName()
- + " must be an entity set");
- }
- }
- return returnedEntitySet;
- }
-
- @Override
- public EdmReturnType getReturnType() {
- return returnType;
- }
-
- @Override
- public boolean isBound() {
- return isBound;
+ return parameterNames;
+ }
+
+ @Override
+ public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
+ EdmEntitySet returnedEntitySet = null;
+ if (bindingParameterEntitySet != null && entitySetPath != null) {
+ final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.
+ getRelatedBindingTarget(entitySetPath);
+ if (relatedBindingTarget == null) {
+ throw new EdmException("Cannot find entity set with path: " + entitySetPath);
+ }
+ if (relatedBindingTarget instanceof EdmEntitySet) {
+ returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
+ } else {
+ throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName()
+ + " must be an entity set");
+ }
}
+ return returnedEntitySet;
+ }
+
+ @Override
+ public EdmReturnType getReturnType() {
+ return returnType;
+ }
+
+ @Override
+ public boolean isBound() {
+ return isBound;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmSchema.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmSchema.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmSchema.java
index 64bd3b9..6c4184d 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmSchema.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmSchema.java
@@ -137,7 +137,7 @@ public abstract class AbstractEdmSchema implements EdmSchema {
? null
: name == null
? getEntityContainer()
- : name.equals(new FullQualifiedName(getEntityContainer().getNamespace(), getEntityContainer().getName()))
+ : name.equals(getEntityContainer().getFullQualifiedName())
? getEntityContainer()
: null;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmTypeDefinition.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmTypeDefinition.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmTypeDefinition.java
index 9ce14de..12b1dd1 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmTypeDefinition.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmTypeDefinition.java
@@ -83,6 +83,11 @@ public abstract class AbstractEdmTypeDefinition extends EdmNamedImpl implements
}
@Override
+ public FullQualifiedName getFullQualifiedName() {
+ return new FullQualifiedName(getNamespace(), getName());
+ }
+
+ @Override
public String getNamespace() {
return namespace;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNamedImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNamedImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNamedImpl.java
index 0f0bd5d..3b2914d 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNamedImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNamedImpl.java
@@ -23,17 +23,17 @@ import org.apache.olingo.commons.api.edm.EdmNamed;
public abstract class EdmNamedImpl implements EdmNamed {
- protected final Edm edm;
+ protected final Edm edm;
- private final String name;
+ private final String name;
- public EdmNamedImpl(final Edm edm, final String name) {
- this.edm = edm;
- this.name = name;
- }
+ public EdmNamedImpl(final Edm edm, final String name) {
+ this.edm = edm;
+ this.name = name;
+ }
- @Override
- public String getName() {
- return name;
- }
+ @Override
+ public String getName() {
+ return name;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeImpl.java
index 6b9e7cb..3a174e2 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeImpl.java
@@ -26,6 +26,7 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
public class EdmTypeImpl extends EdmNamedImpl implements EdmType {
protected final FullQualifiedName typeName;
+
protected final EdmTypeKind kind;
public EdmTypeImpl(final Edm edm, final FullQualifiedName typeName, final EdmTypeKind kind) {
@@ -35,6 +36,11 @@ public class EdmTypeImpl extends EdmNamedImpl implements EdmType {
}
@Override
+ public FullQualifiedName getFullQualifiedName() {
+ return typeName;
+ }
+
+ @Override
public String getNamespace() {
return typeName.getNamespace();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3b513cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/AbstractPrimitiveType.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/AbstractPrimitiveType.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/AbstractPrimitiveType.java
index 09ceb31..f9d0a73 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/AbstractPrimitiveType.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/AbstractPrimitiveType.java
@@ -32,6 +32,11 @@ abstract class AbstractPrimitiveType implements EdmPrimitiveType {
protected String uriSuffix = "";
@Override
+ public FullQualifiedName getFullQualifiedName() {
+ return new FullQualifiedName(getNamespace(), getName());
+ }
+
+ @Override
public boolean isCompatible(final EdmPrimitiveType primitiveType) {
return equals(primitiveType);
}
@@ -88,10 +93,10 @@ abstract class AbstractPrimitiveType implements EdmPrimitiveType {
@Override
public String toUriLiteral(final String literal) {
return literal == null
- ? null
- : uriPrefix.isEmpty() && uriSuffix.isEmpty()
- ? literal
- : uriPrefix + literal + uriSuffix;
+ ? null
+ : uriPrefix.isEmpty() && uriSuffix.isEmpty()
+ ? literal
+ : uriPrefix + literal + uriSuffix;
}
@Override
@@ -101,7 +106,7 @@ abstract class AbstractPrimitiveType implements EdmPrimitiveType {
} else if (uriPrefix.isEmpty() && uriSuffix.isEmpty()) {
return literal;
} else if (literal.length() >= uriPrefix.length() + uriSuffix.length()
- && literal.startsWith(uriPrefix) && literal.endsWith(uriSuffix)) {
+ && literal.startsWith(uriPrefix) && literal.endsWith(uriSuffix)) {
return literal.substring(uriPrefix.length(), literal.length() - uriSuffix.length());
} else {
[3/3] git commit: [OLINGO-234] V4 bound Action / Function invoke
tests ready - still using external service
Posted by il...@apache.org.
[OLINGO-234] V4 bound Action / Function invoke tests ready - still using external service
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/7104c65f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/7104c65f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/7104c65f
Branch: refs/heads/master
Commit: 7104c65f843c2414579f51b235e482be23be98bd
Parents: d3b513c
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Apr 9 14:11:07 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Apr 9 14:11:07 2014 +0200
----------------------------------------------------------------------
.../it/v4/BoundOperationInvokeTestITCase.java | 387 +++++++++++++++++++
1 file changed, 387 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7104c65f/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/BoundOperationInvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/BoundOperationInvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/BoundOperationInvokeTestITCase.java
new file mode 100644
index 0000000..b381da8
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/BoundOperationInvokeTestITCase.java
@@ -0,0 +1,387 @@
+/*
+ * 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.client.core.it.v4;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.apache.commons.io.IOUtils;
+import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
+import org.apache.olingo.client.api.uri.v4.URIBuilder;
+import org.apache.olingo.commons.api.domain.ODataCollectionValue;
+import org.apache.olingo.commons.api.domain.ODataComplexValue;
+import org.apache.olingo.commons.api.domain.ODataOperation;
+import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
+import org.apache.olingo.commons.api.domain.ODataValue;
+import org.apache.olingo.commons.api.domain.v4.ODataEntity;
+import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
+import org.apache.olingo.commons.api.domain.v4.ODataEnumValue;
+import org.apache.olingo.commons.api.domain.v4.ODataProperty;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.EdmFunction;
+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.ODataPubFormat;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.junit.Assume;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class BoundOperationInvokeTestITCase extends AbstractTestITCase {
+
+ private static final String serviceRoot = "http://odatae2etest.azurewebsites.net/javatest/DefaultService";
+
+ // TODO: remove once fit provides function / action imports
+ @BeforeClass
+ public static void checkServerIsOnline() throws IOException {
+ final Socket socket = new Socket();
+ boolean reachable = false;
+ try {
+ socket.connect(new InetSocketAddress("odatae2etest.azurewebsites.net", 80), 2000);
+ reachable = true;
+ } catch (Exception e) {
+ LOG.warn("External test service not reachable, ignoring this whole class: {}",
+ OperationImportInvokeTestITCase.class.getName());
+ } finally {
+ IOUtils.closeQuietly(socket);
+ }
+ Assume.assumeTrue(reachable);
+ }
+
+ private Edm getEdm() {
+ final Edm edm = getClient().getRetrieveRequestFactory().
+ getMetadataRequest(serviceRoot).execute().getBody();
+ assertNotNull(edm);
+
+ return edm;
+ }
+
+ private void functions(final ODataPubFormat format) throws EdmPrimitiveTypeException {
+ final Edm edm = getEdm();
+ final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+ assertNotNull(container);
+
+ // GetEmployeesCount
+ URIBuilder builder = getClient().getURIBuilder(serviceRoot).appendSingletonSegment("Company");
+ ODataEntityRequest<ODataEntity> entityReq =
+ getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ ODataEntity entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ ODataOperation boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetEmployeesCount");
+ assertNotNull(boundOp);
+
+ EdmFunction func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false, null);
+ assertNotNull(func);
+
+ final ODataInvokeRequest<ODataProperty> getEmployeesCountReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func);
+ getEmployeesCountReq.setFormat(format);
+ final ODataProperty getEmployeesCountRes = getEmployeesCountReq.execute().getBody();
+ assertNotNull(getEmployeesCountRes);
+ assertTrue(getEmployeesCountRes.hasPrimitiveValue());
+
+ // GetProductDetails
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("Products").appendKeySegment(5);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetProductDetails");
+ assertNotNull(boundOp);
+
+ func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false, null);
+ assertNotNull(func);
+
+ final ODataPrimitiveValue count = getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(1);
+ final ODataInvokeRequest<ODataEntitySet> getProductDetailsReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func,
+ Collections.<String, ODataValue>singletonMap("count", count));
+ getProductDetailsReq.setFormat(format);
+ final ODataEntitySet getProductDetailsRes = getProductDetailsReq.execute().getBody();
+ assertNotNull(getProductDetailsRes);
+ assertEquals(1, getProductDetailsRes.getCount());
+
+ // GetRelatedProduct
+ final Map<String, Object> keyMap = new HashMap<String, Object>();
+ keyMap.put("ProductID", 6);
+ keyMap.put("ProductDetailID", 1);
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("ProductDetails").
+ appendKeySegment(keyMap);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetRelatedProduct");
+ assertNotNull(boundOp);
+
+ func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false,
+ null);
+ assertNotNull(func);
+
+ final ODataInvokeRequest<ODataEntity> getRelatedProductReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func);
+ getRelatedProductReq.setFormat(format);
+ //TODO test service returns error instead of Products(6)
+ try {
+ final ODataEntity getRelatedProductRes = getRelatedProductReq.execute().getBody();
+ assertNotNull(getRelatedProductRes);
+ assertEquals("#Microsoft.Test.OData.Services.ODataWCFService.Product", getRelatedProductRes.getName());
+ assertEquals(6, getRelatedProductRes.getProperty("ProductID").getPrimitiveValue().toCastValue(Integer.class), 0);
+ } catch (Exception e) {
+ // ignore
+ }
+
+ // GetDefaultPI
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("Accounts").appendKeySegment(101);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetDefaultPI");
+ assertNotNull(boundOp);
+
+ func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false, null);
+ assertNotNull(func);
+
+ final ODataInvokeRequest<ODataEntity> getDefaultPIReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func);
+ getDefaultPIReq.setFormat(format);
+ final ODataEntity getDefaultPIRes = getDefaultPIReq.execute().getBody();
+ assertNotNull(getDefaultPIRes);
+ assertEquals("#Microsoft.Test.OData.Services.ODataWCFService.PaymentInstrument", getDefaultPIRes.getName());
+ assertEquals(101901,
+ getDefaultPIRes.getProperty("PaymentInstrumentID").getPrimitiveValue().toCastValue(Integer.class), 0);
+
+ // GetAccountInfo
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetAccountInfo");
+ assertNotNull(boundOp);
+
+ func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false, null);
+ assertNotNull(func);
+
+ final ODataInvokeRequest<ODataProperty> getAccountInfoReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func);
+ getAccountInfoReq.setFormat(format);
+ final ODataProperty getAccountInfoRes = getAccountInfoReq.execute().getBody();
+ assertNotNull(getAccountInfoRes);
+ assertTrue(getAccountInfoRes.hasComplexValue());
+ assertEquals("Microsoft.Test.OData.Services.ODataWCFService.AccountInfo",
+ getAccountInfoRes.getComplexValue().getTypeName());
+
+ // GetActualAmount
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(
+ entity.getNavigationLink("MyGiftCard").getLink());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+ assertEquals(301, entity.getProperty("GiftCardID").getPrimitiveValue().toCastValue(Integer.class), 0);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.GetActualAmount");
+ assertNotNull(boundOp);
+
+ func = edm.getBoundFunction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false, null);
+ assertNotNull(func);
+
+ final ODataPrimitiveValue bonusRate = getClient().getObjectFactory().newPrimitiveValueBuilder().buildDouble(1.1);
+ final ODataInvokeRequest<ODataProperty> getActualAmountReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), func,
+ Collections.<String, ODataValue>singletonMap("bonusRate", bonusRate));
+ getActualAmountReq.setFormat(format);
+ final ODataProperty getActualAmountRes = getActualAmountReq.execute().getBody();
+ assertNotNull(getActualAmountRes);
+ assertEquals(41.79, getActualAmountRes.getPrimitiveValue().toCastValue(Double.class), 0);
+ }
+
+ @Test
+ public void atomFunctions() throws EdmPrimitiveTypeException {
+ functions(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ public void jsonFunctions() throws EdmPrimitiveTypeException {
+ functions(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+ private void actions(final ODataPubFormat format) throws EdmPrimitiveTypeException {
+ final Edm edm = getEdm();
+ final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+ assertNotNull(container);
+
+ // IncreaseRevenue
+ URIBuilder builder = getClient().getURIBuilder(serviceRoot).appendSingletonSegment("Company");
+ ODataEntityRequest<ODataEntity> entityReq =
+ getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ ODataEntity entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ ODataOperation boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.IncreaseRevenue");
+ assertNotNull(boundOp);
+
+ EdmAction act = edm.getBoundAction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false);
+ assertNotNull(act);
+
+ final ODataPrimitiveValue increaseValue = getClient().getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.Int64).setValue(12).build();
+ final ODataInvokeRequest<ODataProperty> increaseRevenueReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), act,
+ Collections.<String, ODataValue>singletonMap("IncreaseValue", increaseValue));
+ increaseRevenueReq.setFormat(format);
+ final ODataProperty increaseRevenueRes = increaseRevenueReq.execute().getBody();
+ assertNotNull(increaseRevenueRes);
+ assertTrue(increaseRevenueRes.hasPrimitiveValue());
+
+ // AddAccessRight
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("Products").appendKeySegment(5);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.AddAccessRight");
+ assertNotNull(boundOp);
+
+ act = edm.getBoundAction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false);
+ assertNotNull(act);
+
+ final ODataEnumValue accessRight = getClient().getObjectFactory().
+ newEnumValue("Microsoft.Test.OData.Services.ODataWCFService.AccessLevel", "Execute");
+ final ODataInvokeRequest<ODataProperty> getProductDetailsReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), act,
+ Collections.<String, ODataValue>singletonMap("accessRight", accessRight));
+ getProductDetailsReq.setFormat(format);
+ final ODataProperty getProductDetailsRes = getProductDetailsReq.execute().getBody();
+ assertNotNull(getProductDetailsRes);
+ assertTrue(getProductDetailsRes.hasEnumValue());
+
+ // ResetAddress
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("Customers").appendKeySegment(2);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.ResetAddress");
+ assertNotNull(boundOp);
+
+ act = edm.getBoundAction(new FullQualifiedName(boundOp.getTitle()),
+ edm.getEntityType(new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().
+ getFullQualifiedName()).getBaseType().getFullQualifiedName(), false);
+ assertNotNull(act);
+
+ final ODataCollectionValue<org.apache.olingo.commons.api.domain.v4.ODataValue> addresses =
+ getClient().getObjectFactory().
+ newCollectionValue("Collection(Microsoft.Test.OData.Services.ODataWCFService.Address)");
+ final ODataComplexValue<ODataProperty> address = getClient().getObjectFactory().
+ newLinkedComplexValue("Microsoft.Test.OData.Services.ODataWCFService.Address");
+ address.add(client.getObjectFactory().newPrimitiveProperty("Street",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Piazza La Bomba E Scappa")));
+ address.add(client.getObjectFactory().newPrimitiveProperty("City",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Tollo")));
+ address.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("66010")));
+ addresses.add(address);
+ final ODataPrimitiveValue index = getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(0);
+ final Map<String, ODataValue> params = new LinkedHashMap<String, ODataValue>(2);
+ params.put("addresses", addresses);
+ params.put("index", index);
+ final ODataInvokeRequest<ODataEntity> resetAddressReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), act, params);
+ resetAddressReq.setFormat(format);
+ final ODataEntity resetAddressRes = resetAddressReq.execute().getBody();
+ assertNotNull(resetAddressRes);
+ assertEquals(2, resetAddressRes.getProperty("PersonID").getPrimitiveValue().toCastValue(Integer.class), 0);
+
+ // RefreshDefaultPI
+ builder = getClient().getURIBuilder(serviceRoot).appendEntitySetSegment("Accounts").appendKeySegment(101);
+ entityReq = getClient().getRetrieveRequestFactory().getEntityRequest(builder.build());
+ // TODO: remove when fit is used since external test server does not advertise actions in Atom
+ entityReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+ entity = entityReq.execute().getBody();
+ assertNotNull(entity);
+
+ boundOp = entity.getOperation("Microsoft.Test.OData.Services.ODataWCFService.RefreshDefaultPI");
+ assertNotNull(boundOp);
+
+ act = edm.getBoundAction(new FullQualifiedName(boundOp.getTitle()),
+ new EdmTypeInfo.Builder().setTypeExpression(entity.getName()).build().getFullQualifiedName(), false);
+ assertNotNull(act);
+
+ final ODataPrimitiveValue newDate = getClient().getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.DateTimeOffset).setText("2014-04-09T00:00:00Z").build();
+ final ODataInvokeRequest<ODataEntity> getDefaultPIReq =
+ getClient().getInvokeRequestFactory().getInvokeRequest(boundOp.getTarget(), act,
+ Collections.<String, ODataValue>singletonMap("newDate", newDate));
+ getDefaultPIReq.setFormat(format);
+ final ODataEntity getDefaultPIRes = getDefaultPIReq.execute().getBody();
+ assertNotNull(getDefaultPIRes);
+ assertEquals("#Microsoft.Test.OData.Services.ODataWCFService.PaymentInstrument", getDefaultPIRes.getName());
+ assertEquals(101901,
+ getDefaultPIRes.getProperty("PaymentInstrumentID").getPrimitiveValue().toCastValue(Integer.class), 0);
+ }
+
+ @Test
+ public void atomActions() throws EdmPrimitiveTypeException {
+ //TODO test service doesn't support yet Atom POST params
+ try {
+ actions(ODataPubFormat.ATOM);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ @Test
+ public void jsonActions() throws EdmPrimitiveTypeException {
+ actions(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+}