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/01 16:18:35 UTC
[08/51] [abbrv] git commit: Merge from origin/olingo200
Merge from origin/olingo200
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/59d54d84
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/59d54d84
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/59d54d84
Branch: refs/heads/master
Commit: 59d54d844ea882165afc8ac9ca731b8a8b4723e8
Parents: d12ab65 1a6a548
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 26 18:20:48 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 26 18:20:48 2014 +0100
----------------------------------------------------------------------
.../org/apache/olingo/fit/AbstractServices.java | 37 +-
.../olingo/fit/utils/AbstractXMLUtilities.java | 20 +-
.../org/apache/olingo/fit/utils/Commons.java | 22 +-
.../org/apache/olingo/fit/utils/Constants.java | 10 +-
.../olingo/fit/utils/MetadataLinkInfo.java | 22 +
.../olingo/fit/utils/v4/XMLUtilities.java | 4 +
.../main/resources/v4/Company/entity.full.json | 38 ++
fit/src/main/resources/v4/Company/entity.xml | 49 +++
.../resources/v4/Customers/1/entity.full.json | 67 +++
.../main/resources/v4/Customers/1/entity.xml | 67 +++
.../v4/Customers/1/links/Company.full.json | 4 +
.../resources/v4/Customers/1/links/Company.xml | 22 +
.../v4/Customers/1/links/Orders.full.json | 10 +
.../resources/v4/Customers/1/links/Orders.xml | 25 ++
.../main/resources/v4/Orders/8/entity.full.json | 23 +
fit/src/main/resources/v4/Orders/8/entity.xml | 50 +++
fit/src/main/resources/v4/Orders/8/etag.txt | 1 +
.../main/resources/v4/Orders/8/links/.full.json | 4 +
.../Orders/8/links/CustomerForOrder.full.json | 4 +
.../v4/Orders/8/links/CustomerForOrder.xml | 22 +
fit/src/main/resources/v4/Orders/feed.full.json | 48 +++
fit/src/main/resources/v4/Orders/feed.xml | 72 ++++
.../main/resources/v4/People/5/entity.full.json | 51 +++
fit/src/main/resources/v4/People/5/entity.xml | 55 +++
.../v4/ProductDetails/6 1/entity.full.json | 19 +
.../resources/v4/ProductDetails/6 1/entity.xml | 41 ++
fit/src/main/resources/v4/badRequest.json | 17 +
fit/src/main/resources/v4/badRequest.xml | 30 ++
fit/src/main/resources/v4/notFound.json | 11 +
fit/src/main/resources/v4/notFound.xml | 25 ++
...JkZXJzKDgpL0N1c3RvbWVyRm9yT3JkZXI=.full.json | 4 +
.../T3JkZXJzKDgpL0N1c3RvbWVyRm9yT3JkZXI=.xml | 22 +
.../main/resources/v4/unsupportedMediaType.json | 17 +
.../main/resources/v4/unsupportedMediaType.xml | 34 ++
.../api/communication/header/HeaderName.java | 111 ++++-
.../communication/header/ODataHeaderValues.java | 45 --
.../communication/header/ODataPreferences.java | 424 +++++++++++++++++++
.../api/communication/request/ODataRequest.java | 24 +-
.../olingo/client/api/uri/SegmentType.java | 1 +
.../olingo/client/api/uri/v3/URIBuilder.java | 3 +-
.../olingo/client/api/uri/v4/URIBuilder.java | 20 +-
.../communication/request/ODataRequestImpl.java | 30 +-
.../data/JSONServiceDocumentDeserializer.java | 2 +-
.../client/core/op/AbstractODataBinder.java | 27 +-
.../client/core/uri/AbstractURIBuilder.java | 48 ++-
.../client/core/uri/v4/URIBuilderImpl.java | 14 +-
.../olingo/client/core/v4/ODataClientImpl.java | 4 +-
.../core/it/v3/EntityCreateTestITCase.java | 8 +-
.../core/it/v3/EntityUpdateTestITCase.java | 6 +-
.../core/it/v3/PropertyValueTestITCase.java | 6 +-
.../core/it/v4/EntityRetrieveTestITCase.java | 280 ++++++++++++
.../client/core/it/v4/EntitySetTestITCase.java | 3 +
.../core/it/v4/PropertyValueTestITCase.java | 144 +++++++
.../client/core/uri/v3/URIBuilderTest.java | 20 +-
.../client/core/uri/v4/URIBuilderTest.java | 18 +-
.../apache/olingo/commons/api/Constants.java | 10 +-
.../apache/olingo/commons/api/data/Entry.java | 24 +-
.../apache/olingo/commons/api/data/Feed.java | 16 +-
.../olingo/commons/api/data/Property.java | 10 +
.../api/domain/AbstractODataPayload.java | 52 +++
.../olingo/commons/api/domain/ODataEntity.java | 31 +-
.../commons/api/domain/ODataEntitySet.java | 2 +-
.../olingo/commons/api/domain/ODataItem.java | 26 +-
.../olingo/commons/api/domain/ODataLink.java | 2 -
.../commons/core/data/AbstractAtomDealer.java | 14 +-
.../commons/core/data/AbstractAtomObject.java | 21 +-
.../commons/core/data/AbstractPropertyImpl.java | 18 +
.../commons/core/data/AtomDeserializer.java | 227 +++++-----
.../core/data/AtomPropertyDeserializer.java | 24 +-
.../core/data/AtomPropertySerializer.java | 8 +
.../commons/core/data/AtomSerializer.java | 14 +
.../core/data/JSONEntryDeserializer.java | 17 +-
.../olingo/commons/core/data/JSONEntryImpl.java | 29 +-
.../commons/core/data/JSONEntrySerializer.java | 8 +-
.../commons/core/data/JSONFeedDeserializer.java | 15 +-
.../olingo/commons/core/data/JSONFeedImpl.java | 26 +-
.../commons/core/data/JSONFeedSerializer.java | 10 +-
.../core/data/JSONPropertyDeserializer.java | 17 +-
.../commons/core/data/JSONPropertyImpl.java | 20 -
.../core/data/JSONPropertySerializer.java | 11 +-
.../olingo/commons/core/edm/EdmTypeInfo.java | 1 -
81 files changed, 2483 insertions(+), 355 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/59d54d84/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
index 746b016,bdc3536..a678834
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
@@@ -307,8 -312,11 +313,11 @@@ public abstract class AbstractODataBind
final ODataEntity entity = resource.getSelfLink() == null
? client.getObjectFactory().newEntity(resource.getType())
: client.getObjectFactory().newEntity(resource.getType(),
- URIUtils.getURI(base, resource.getSelfLink().getHref()));
+ URIUtils.getURI(base, resource.getSelfLink().getHref()));
+ entity.setContextURL(resource.getContextURL());
+ entity.setReference(resource.getId());
+
if (StringUtils.isNotBlank(resource.getETag())) {
entity.setETag(resource.getETag());
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/59d54d84/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
index 78badef,0000000..e949780
mode 100644,000000..100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
@@@ -1,131 -1,0 +1,149 @@@
+/*
+ * 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.uri.v3;
+
+import static org.junit.Assert.assertEquals;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.olingo.client.api.v3.ODataClient;
+import org.apache.olingo.client.api.uri.v3.URIBuilder;
+import org.apache.olingo.client.core.AbstractTest;
+import org.junit.Test;
+
+public class URIBuilderTest extends AbstractTest {
+
+ private static final String SERVICE_ROOT = "http://host/service";
+
+ @Override
+ protected ODataClient getClient() {
+ return v3Client;
+ }
+
+ @Test
+ public void metadata() throws URISyntaxException {
+ final URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendMetadataSegment().build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/$metadata").build(), uri);
+ }
+
+ @Test
+ public void entity() throws URISyntaxException {
+ final URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("AnEntitySet").
+ appendKeySegment(11).build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/AnEntitySet(11)").build(), uri);
+
+ final Map<String, Object> multiKey = new HashMap<String, Object>();
+ multiKey.put("OrderId", -10);
+ multiKey.put("ProductId", -10);
+ URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("OrderLine").appendKeySegment(multiKey).
+ appendPropertySegment("Quantity").appendValueSegment();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/OrderLine(OrderId=-10,ProductId=-10)/Quantity/$value").build(), uriBuilder.build());
+
+ uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Customer").appendKeySegment(-10).
+ select("CustomerId", "Name", "Orders").expand("Orders");
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Customer(-10)").
+ addParameter("$select", "CustomerId,Name,Orders").addParameter("$expand", "Orders").build(),
+ uriBuilder.build());
+
+ uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Customer").appendKeySegment(-10).appendLinksSegment("Orders");
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Customer(-10)/$links/Orders").build(),
+ uriBuilder.build());
+ }
+
+ @Test
+ public void count() throws URISyntaxException {
+ URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").count().build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products/$count").build(), uri);
+
+ uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").
+ inlineCount(URIBuilder.InlineCount.allpages).build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products").
+ addParameter("$inlinecount", "allpages").build(), uri);
+ }
+
+ @Test
+ public void filter() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("AnEntitySet").
+ filter(getClient().getFilterFactory().lt("VIN", 16));
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/AnEntitySet").
+ addParameter("$filter", "(VIN lt 16)").build(),
+ uriBuilder.build());
+ }
+
+ @Test
+ public void unboundAction() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendOperationCallSegment("ProductsByCategoryId",
- Collections.<String, Object>singletonMap("categoryId", 2));
++ Collections.<String, Object>singletonMap("categoryId", 2));
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/ProductsByCategoryId(categoryId=2)").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void boundAction() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Products").appendOperationCallSegment("MostExpensive", null);
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Products/MostExpensive").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void derived() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Customers").appendNavigationSegment("Model").
+ appendDerivedEntityTypeSegment("Namespace.VipCustomer").appendKeySegment(1);
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Customers/Model/Namespace.VipCustomer(1)").build(), uriBuilder.build());
+ }
++
++ @Test
++ public void expandMoreThenOnce() throws URISyntaxException {
++ URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").appendKeySegment(5).
++ expand("Orders", "Customers").expand("Info").build();
++
++ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products(5)").
++ addParameter("$expand", "Orders,Customers,Info").build(), uri);
++ }
++
++ @Test
++ public void selectMoreThenOnce() throws URISyntaxException {
++ URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Customers").appendKeySegment(5).
++ select("Name", "Surname").expand("Info").select("Gender").build();
++
++ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Customers(5)").
++ addParameter("$select", "Name,Surname,Gender").addParameter("$expand", "Info").build(), uri);
++ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/59d54d84/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
index 1518cf0,0000000..af26059
mode 100644,000000..100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
@@@ -1,136 -1,0 +1,152 @@@
+/*
+ * 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.uri.v4;
+
+import java.net.URI;
+import java.net.URISyntaxException;
++import java.util.LinkedHashMap;
+
+import org.apache.olingo.client.api.v4.ODataClient;
+import org.apache.olingo.client.api.uri.v4.URIBuilder;
+import org.apache.olingo.client.core.AbstractTest;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class URIBuilderTest extends AbstractTest {
+
+ private static final String SERVICE_ROOT = "http://host/service";
+
+ @Override
+ protected ODataClient getClient() {
+ return v4Client;
+ }
+
+ @Test
++ public void expandWithOptions() throws URISyntaxException {
++ URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").appendKeySegment(5).
++ expandWithOptions("ProductDetails", new LinkedHashMap<String, Object>() {
++ private static final long serialVersionUID = 3109256773218160485L;
++
++ {
++ put("$expand", "ProductInfo");
++ put("$select", "Price");
++ }
++ }).expand("Orders", "Customers").build();
++
++ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products(5)").
++ addParameter("$expand", "ProductDetails($expand=ProductInfo,$select=Price),Orders,Customers").build(), uri);
++ }
++
++ @Test
+ public void count() throws URISyntaxException {
+ URI uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").count().build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products/$count").build(), uri);
+
+ uri = getClient().getURIBuilder(SERVICE_ROOT).appendEntitySetSegment("Products").count(true).build();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(SERVICE_ROOT + "/Products").
+ addParameter("$count", "true").build(), uri);
+ }
+
+ @Test
+ public void singleton() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendSingletonSegment("BestProductEverCreated");
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/BestProductEverCreated").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void entityId() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntityIdSegment("Products(0)");
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/$entity").addParameter("$id", "Products(0)").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void boundAction() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Categories").appendKeySegment(1).
+ appendNavigationSegment("Products").appendNavigationSegment("Model").
+ appendOperationCallSegment("AllOrders", null);
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Categories(1)/Products/Model.AllOrders()").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void ref() throws URISyntaxException {
+ URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Categories").appendKeySegment(1).
+ appendNavigationSegment("Products").appendRefSegment();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Categories(1)/Products/$ref").build(), uriBuilder.build());
+
+ uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Categories").appendKeySegment(1).
+ appendNavigationSegment("Products").appendRefSegment().id("../../Products(0)");
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Categories(1)/Products/$ref").addParameter("$id", "../../Products(0)").build(),
+ uriBuilder.build());
+ }
+
+ @Test
+ public void derived() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Customers").appendNavigationSegment("Model").
+ appendDerivedEntityTypeSegment("VipCustomer").appendKeySegment(1);
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Customers/Model.VipCustomer(1)").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void crossjoin() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendCrossjoinSegment("Products", "Sales");
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/$crossjoin(Products,Sales)").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void all() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).appendAllSegment();
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/$all").build(), uriBuilder.build());
+ }
+
+ @Test
+ public void search() throws URISyntaxException {
+ final URIBuilder uriBuilder = getClient().getURIBuilder(SERVICE_ROOT).
+ appendEntitySetSegment("Products").search("blue OR green");
+
+ assertEquals(new org.apache.http.client.utils.URIBuilder(
+ SERVICE_ROOT + "/Products").addParameter("$search", "blue OR green").build(), uriBuilder.build());
+ }
-
+}