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());
 +  }
- 
 +}