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:33 UTC
[06/51] [abbrv] git commit: [OLINGO-194] complex and collection
literals + URI escape tests
[OLINGO-194] complex and collection literals + URI escape tests
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/3e53ac5b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/3e53ac5b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/3e53ac5b
Branch: refs/heads/master
Commit: 3e53ac5b7d4069fb0e8566105d75d7e9e1ff2c22
Parents: 7651350
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 26 18:15:16 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 26 18:15:16 2014 +0100
----------------------------------------------------------------------
.../request/invoke/ODataInvokeRequestImpl.java | 2 +-
.../apache/olingo/client/core/uri/URIUtils.java | 129 ++++++++++----
.../olingo/client/core/uri/URIEscapeTest.java | 79 +++++++++
.../client/core/uri/v3/FilterFactoryTest.java | 167 +++++++++++++++++++
.../client/core/uri/v3/URIBuilderTest.java | 131 +++++++++++++++
.../client/core/uri/v4/FilterFactoryTest.java | 86 ++++++++++
.../client/core/uri/v4/URIBuilderTest.java | 136 +++++++++++++++
.../client/core/v3/FilterFactoryTest.java | 167 -------------------
.../olingo/client/core/v3/URIBuilderTest.java | 131 ---------------
.../client/core/v4/FilterFactoryTest.java | 86 ----------
.../olingo/client/core/v4/URIBuilderTest.java | 136 ---------------
11 files changed, 692 insertions(+), 558 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
index ac6d162..9043fe8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
@@ -153,7 +153,7 @@ public class ODataInvokeRequestImpl<T extends ODataInvokeResult>
throw new IllegalArgumentException("Only primitive values can be passed via GET");
}
- uriBuilder.addParameter(param.getKey(), param.getValue().toString());
+ uriBuilder.addParameter(param.getKey(), URIUtils.escape(odataClient.getServiceVersion(), param.getValue()));
}
try {
((HttpRequestBase) this.request).setURI(uriBuilder.build());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index 1e0dd5b..8dce061 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -27,7 +27,11 @@ import java.net.URI;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.util.Calendar;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
import java.util.UUID;
+import java.util.regex.Pattern;
import javax.xml.datatype.Duration;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.io.IOUtils;
@@ -67,6 +71,8 @@ public final class URIUtils {
*/
private static final Logger LOG = LoggerFactory.getLogger(URIUtils.class);
+ private static final Pattern ENUM_VALUE = Pattern.compile("(.+\\.)?.+'.+'");
+
private URIUtils() {
// Empty private constructor for static utility classes
}
@@ -274,53 +280,102 @@ public final class URIUtils {
Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null), Constants.UTF8));
}
+ private static String quoteString(final String string, final boolean singleQuoteEscape)
+ throws UnsupportedEncodingException {
+
+ final String encoded = URLEncoder.encode(string, Constants.UTF8);
+ return ENUM_VALUE.matcher(string).matches()
+ ? encoded
+ : singleQuoteEscape
+ ? "'" + encoded + "'"
+ : "\"" + encoded + "\"";
+ }
+
/**
* Turns primitive values into their respective URI representation.
*
+ * @param version OData protocol version
* @param obj primitive value
* @return URI representation
*/
public static String escape(final ODataServiceVersion version, final Object obj) {
+ return escape(version, obj, true);
+ }
+
+ private static String escape(final ODataServiceVersion version, final Object obj, final boolean singleQuoteEscape) {
String value;
try {
- value = (obj instanceof Boolean)
- ? BooleanUtils.toStringTrueFalse((Boolean) obj)
- : (obj instanceof UUID)
- ? prefix(version, EdmPrimitiveTypeKind.Guid)
- + obj.toString()
- + suffix(version, EdmPrimitiveTypeKind.Guid)
- : (obj instanceof byte[])
- ? EdmBinary.getInstance().toUriLiteral(Hex.encodeHexString((byte[]) obj))
- : (obj instanceof Timestamp)
- ? timestamp(version, (Timestamp) obj)
- : (obj instanceof Calendar)
- ? calendar(version, (Calendar) obj)
- : (obj instanceof Duration)
- ? duration(version, (Duration) obj)
- : (obj instanceof BigDecimal)
- ? EdmDecimal.getInstance().valueToString(obj, null, null,
- Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
- + suffix(version, EdmPrimitiveTypeKind.Decimal)
- : (obj instanceof Double)
- ? EdmDouble.getInstance().valueToString(obj, null, null,
- Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
- + suffix(version, EdmPrimitiveTypeKind.Double)
- : (obj instanceof Float)
- ? EdmSingle.getInstance().valueToString(obj, null, null,
- Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
- + suffix(version, EdmPrimitiveTypeKind.Single)
- : (obj instanceof Long)
- ? EdmInt64.getInstance().valueToString(obj, null, null,
- Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
- + suffix(version, EdmPrimitiveTypeKind.Int64)
- : (obj instanceof Geospatial)
- ? URLEncoder.encode(EdmPrimitiveTypeFactory.getInstance(((Geospatial) obj).getEdmPrimitiveTypeKind()).
- valueToString(obj, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null),
- Constants.UTF8)
- : (obj instanceof String)
- ? "'" + URLEncoder.encode((String) obj, Constants.UTF8) + "'"
- : obj.toString();
+ if (obj == null) {
+ value = Constants.ATTR_NULL;
+ } else if (version == ODataServiceVersion.V40 && obj instanceof Collection) {
+ final StringBuffer buffer = new StringBuffer("[");
+ for (@SuppressWarnings("unchecked")
+ final Iterator<Object> itor = ((Collection<Object>) obj).iterator(); itor.hasNext();) {
+ buffer.append(escape(version, itor.next(), false));
+ if (itor.hasNext()) {
+ buffer.append(',');
+ }
+ }
+ buffer.append(']');
+
+ value = buffer.toString();
+ } else if (version == ODataServiceVersion.V40 && obj instanceof Map) {
+ final StringBuffer buffer = new StringBuffer("{");
+ for (@SuppressWarnings("unchecked")
+ final Iterator<Map.Entry<Object, Object>> itor =
+ ((Map<Object, Object>) obj).entrySet().iterator(); itor.hasNext();) {
+
+ final Map.Entry<Object, Object> entry = itor.next();
+ buffer.append("\"").append(URLEncoder.encode(entry.getKey().toString(), Constants.UTF8)).append("\"");
+ buffer.append(':').append(escape(version, entry.getValue(), false));
+
+ if (itor.hasNext()) {
+ buffer.append(',');
+ }
+ }
+ buffer.append('}');
+
+ value = buffer.toString();
+ } else {
+ value = (obj instanceof Boolean)
+ ? BooleanUtils.toStringTrueFalse((Boolean) obj)
+ : (obj instanceof UUID)
+ ? prefix(version, EdmPrimitiveTypeKind.Guid)
+ + obj.toString()
+ + suffix(version, EdmPrimitiveTypeKind.Guid)
+ : (obj instanceof byte[])
+ ? EdmBinary.getInstance().toUriLiteral(Hex.encodeHexString((byte[]) obj))
+ : (obj instanceof Timestamp)
+ ? timestamp(version, (Timestamp) obj)
+ : (obj instanceof Calendar)
+ ? calendar(version, (Calendar) obj)
+ : (obj instanceof Duration)
+ ? duration(version, (Duration) obj)
+ : (obj instanceof BigDecimal)
+ ? EdmDecimal.getInstance().valueToString(obj, null, null,
+ Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
+ + suffix(version, EdmPrimitiveTypeKind.Decimal)
+ : (obj instanceof Double)
+ ? EdmDouble.getInstance().valueToString(obj, null, null,
+ Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
+ + suffix(version, EdmPrimitiveTypeKind.Double)
+ : (obj instanceof Float)
+ ? EdmSingle.getInstance().valueToString(obj, null, null,
+ Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
+ + suffix(version, EdmPrimitiveTypeKind.Single)
+ : (obj instanceof Long)
+ ? EdmInt64.getInstance().valueToString(obj, null, null,
+ Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
+ + suffix(version, EdmPrimitiveTypeKind.Int64)
+ : (obj instanceof Geospatial)
+ ? URLEncoder.encode(EdmPrimitiveTypeFactory.getInstance(((Geospatial) obj).getEdmPrimitiveTypeKind()).
+ valueToString(obj, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null),
+ Constants.UTF8)
+ : (obj instanceof String)
+ ? quoteString((String) obj, singleQuoteEscape)
+ : obj.toString();
+ }
} catch (Exception e) {
LOG.warn("While escaping '{}', using toString()", obj, e);
value = obj.toString();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
new file mode 100644
index 0000000..886d1e8
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Arrays;
+import java.util.Collections;
+import org.apache.olingo.client.core.edm.EdmEnumTypeImpl;
+import org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl;
+import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.edm.EdmEnumType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.junit.Test;
+
+public class URIEscapeTest {
+
+ @Test
+ public void _null() {
+ assertEquals("null", URIUtils.escape(ODataServiceVersion.V40, null));
+ }
+
+ @Test
+ public void _boolean() {
+ assertEquals("true", URIUtils.escape(ODataServiceVersion.V40, Boolean.TRUE));
+ }
+
+ @Test
+ public void _enum() throws UnsupportedEncodingException {
+ final EdmEnumType pattern = new EdmEnumTypeImpl(ODataServiceVersion.V40,
+ null, new FullQualifiedName("Sales", "Pattern"), new EnumTypeImpl());
+
+ assertEquals(URLEncoder.encode("Sales.Pattern'Yellow'", Constants.UTF8),
+ URIUtils.escape(ODataServiceVersion.V40, pattern.toUriLiteral("Yellow")));
+ }
+
+ @Test
+ public void geospatial() throws UnsupportedEncodingException {
+ final Point point = new Point(Geospatial.Dimension.GEOGRAPHY, 0);
+ point.setX(142.1);
+ point.setY(64.1);
+
+ assertEquals(URLEncoder.encode("geography'SRID=0;Point(142.1 64.1)'", Constants.UTF8),
+ URIUtils.escape(ODataServiceVersion.V40, point));
+ }
+
+ @Test
+ public void collection() {
+ assertEquals("[\"red\",\"green\"]",
+ URIUtils.escape(ODataServiceVersion.V40, Arrays.asList(new String[] {"red", "green"})));
+ }
+
+ @Test
+ public void complex() {
+ assertEquals("{\"Name\":\"Value\"}",
+ URIUtils.escape(ODataServiceVersion.V40, Collections.singletonMap("Name", "Value")));
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/FilterFactoryTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/FilterFactoryTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/FilterFactoryTest.java
new file mode 100644
index 0000000..666edf7
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/FilterFactoryTest.java
@@ -0,0 +1,167 @@
+/*
+ * 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 org.apache.olingo.client.api.v3.ODataClient;
+import org.apache.olingo.client.api.uri.URIFilter;
+import org.apache.olingo.client.api.uri.v3.FilterArgFactory;
+import org.apache.olingo.client.api.uri.v3.FilterFactory;
+import org.apache.olingo.client.core.AbstractTest;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class FilterFactoryTest extends AbstractTest {
+
+ @Override
+ protected ODataClient getClient() {
+ return v3Client;
+ }
+
+ private FilterFactory getFilterFactory() {
+ return getClient().getFilterFactory();
+ }
+
+ private FilterArgFactory getFilterArgFactory() {
+ return getFilterFactory().getArgFactory();
+ }
+
+ @Test
+ public void simple() {
+ final URIFilter filter = getFilterFactory().lt("VIN", 16);
+ assertEquals("(VIN lt 16)", filter.build());
+ }
+
+ @Test
+ public void _null() {
+ final URIFilter filter = getFilterFactory().eq(
+ getFilterArgFactory().property("NullValue"), getFilterArgFactory()._null());
+
+ assertEquals("(NullValue eq null)", filter.build());
+ }
+
+ @Test
+ public void and() {
+ final URIFilter filter = getFilterFactory().and(
+ getFilterFactory().lt("VIN", 16),
+ getFilterFactory().gt("VIN", 12));
+
+ assertEquals("((VIN lt 16) and (VIN gt 12))", filter.build());
+ }
+
+ @Test
+ public void not() {
+ final URIFilter filter = getFilterFactory().not(
+ getFilterFactory().or(
+ getFilterFactory().ge("VIN", 16),
+ getFilterFactory().le("VIN", 12)));
+
+ assertEquals("not (((VIN ge 16) or (VIN le 12)))", filter.build());
+ }
+
+ @Test
+ public void operator() {
+ URIFilter filter = getFilterFactory().eq(
+ getFilterArgFactory().add(
+ getFilterArgFactory().property("VIN"),
+ getFilterArgFactory().literal(1)),
+ getFilterArgFactory().literal(16));
+
+ assertEquals("((VIN add 1) eq 16)", filter.build());
+
+ filter = getFilterFactory().eq(
+ getFilterArgFactory().add(
+ getFilterArgFactory().literal(1),
+ getFilterArgFactory().property("VIN")),
+ getFilterArgFactory().literal(16));
+
+ assertEquals("((1 add VIN) eq 16)", filter.build());
+
+ filter = getFilterFactory().eq(
+ getFilterArgFactory().literal(16),
+ getFilterArgFactory().add(
+ getFilterArgFactory().literal(1),
+ getFilterArgFactory().property("VIN")));
+
+ assertEquals("(16 eq (1 add VIN))", filter.build());
+ }
+
+ @Test
+ public void function() {
+ final URIFilter filter = getFilterFactory().match(
+ getFilterArgFactory().startswith(
+ getFilterArgFactory().property("Description"),
+ getFilterArgFactory().literal("cen")));
+
+ assertEquals("startswith(Description,'cen')", filter.build());
+ }
+
+ @Test
+ public void composed() {
+ final URIFilter filter = getFilterFactory().gt(
+ getFilterArgFactory().length(
+ getFilterArgFactory().property("Description")),
+ getFilterArgFactory().add(
+ getFilterArgFactory().property("VIN"),
+ getFilterArgFactory().literal(10)));
+
+ assertEquals("(length(Description) gt (VIN add 10))", filter.build());
+ }
+
+ @Test
+ public void propertyPath() {
+ URIFilter filter = getFilterFactory().eq(
+ getFilterArgFactory().indexof(
+ getFilterArgFactory().property("PrimaryContactInfo/HomePhone/PhoneNumber"),
+ getFilterArgFactory().literal("ODataJClient")),
+ getFilterArgFactory().literal(1));
+
+ assertEquals("(indexof(PrimaryContactInfo/HomePhone/PhoneNumber,'ODataJClient') eq 1)", filter.build());
+
+ filter = getFilterFactory().ne(
+ getFilterArgFactory().indexof(
+ getFilterArgFactory().property("PrimaryContactInfo/HomePhone/PhoneNumber"),
+ getFilterArgFactory().literal("lccvussrv")),
+ getFilterArgFactory().literal(-1));
+
+ assertEquals("(indexof(PrimaryContactInfo/HomePhone/PhoneNumber,'lccvussrv') ne -1)", filter.build());
+ }
+
+ @Test
+ public void datetime() {
+ final URIFilter filter = getFilterFactory().eq(
+ getFilterArgFactory().month(
+ getFilterArgFactory().property("PurchaseDate")),
+ getFilterArgFactory().literal(12));
+
+ assertEquals("(month(PurchaseDate) eq 12)", filter.build());
+ }
+
+ @Test
+ public void isof() {
+ final URIFilter filter = getFilterFactory().match(
+ getFilterArgFactory().isof(
+ getFilterArgFactory().literal(
+ "Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee")));
+
+ assertEquals("isof('Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee')", filter.build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
----------------------------------------------------------------------
diff --git 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
new file mode 100644
index 0000000..78badef
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v3/URIBuilderTest.java
@@ -0,0 +1,131 @@
+/*
+ * 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));
+
+ 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());
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/FilterFactoryTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/FilterFactoryTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/FilterFactoryTest.java
new file mode 100644
index 0000000..06a07e6
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/FilterFactoryTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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 org.apache.olingo.client.api.v4.ODataClient;
+import org.apache.olingo.client.api.uri.URIFilter;
+import org.apache.olingo.client.api.uri.v4.FilterArgFactory;
+import org.apache.olingo.client.api.uri.v4.FilterFactory;
+import org.apache.olingo.client.core.AbstractTest;
+import org.apache.olingo.client.core.edm.EdmEnumTypeImpl;
+import org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl;
+import org.apache.olingo.commons.api.edm.EdmEnumType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class FilterFactoryTest extends AbstractTest {
+
+ @Override
+ protected ODataClient getClient() {
+ return v4Client;
+ }
+
+ private FilterFactory getFilterFactory() {
+ return getClient().getFilterFactory();
+ }
+
+ private FilterArgFactory getFilterArgFactory() {
+ return getFilterFactory().getArgFactory();
+ }
+
+ @Test
+ public void has() {
+ final EdmEnumType pattern = new EdmEnumTypeImpl(ODataServiceVersion.V40,
+ null, new FullQualifiedName("Sales", "Pattern"), new EnumTypeImpl());
+ final URIFilter filter = getFilterFactory().has(getFilterArgFactory().property("style"), pattern, "Yellow");
+
+ assertEquals("(style has Sales.Pattern'Yellow')", filter.build());
+ }
+
+ @Test
+ public void contains() {
+ final URIFilter filter = getFilterFactory().match(
+ getFilterArgFactory().contains(
+ getFilterArgFactory().property("CompanyName"), getFilterArgFactory().literal("Alfreds")));
+
+ assertEquals("contains(CompanyName,'Alfreds')", filter.build());
+ }
+
+ @Test
+ public void maxdatetime() {
+ final URIFilter filter = getFilterFactory().eq(
+ getFilterArgFactory().property("EndTime"),
+ getFilterArgFactory().maxdatetime());
+
+ assertEquals("(EndTime eq maxdatetime())", filter.build());
+ }
+
+ @Test
+ public void any() {
+ final URIFilter filter = getFilterFactory().match(
+ getFilterArgFactory().any(getFilterArgFactory().property("Items"),
+ getFilterFactory().gt("d:d/Quantity", 100)));
+
+ assertEquals("Items/any(d:d/Quantity gt 100)", filter.build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
----------------------------------------------------------------------
diff --git 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
new file mode 100644
index 0000000..1518cf0
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
@@ -0,0 +1,136 @@
+/*
+ * 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 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 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());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/FilterFactoryTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/FilterFactoryTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/FilterFactoryTest.java
deleted file mode 100644
index 9d7e0a3..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/FilterFactoryTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.v3;
-
-import org.apache.olingo.client.api.v3.ODataClient;
-import org.apache.olingo.client.api.uri.URIFilter;
-import org.apache.olingo.client.api.uri.v3.FilterArgFactory;
-import org.apache.olingo.client.api.uri.v3.FilterFactory;
-import org.apache.olingo.client.core.AbstractTest;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-public class FilterFactoryTest extends AbstractTest {
-
- @Override
- protected ODataClient getClient() {
- return v3Client;
- }
-
- private FilterFactory getFilterFactory() {
- return getClient().getFilterFactory();
- }
-
- private FilterArgFactory getFilterArgFactory() {
- return getFilterFactory().getArgFactory();
- }
-
- @Test
- public void simple() {
- final URIFilter filter = getFilterFactory().lt("VIN", 16);
- assertEquals("(VIN lt 16)", filter.build());
- }
-
- @Test
- public void _null() {
- final URIFilter filter = getFilterFactory().eq(
- getFilterArgFactory().property("NullValue"), getFilterArgFactory()._null());
-
- assertEquals("(NullValue eq null)", filter.build());
- }
-
- @Test
- public void and() {
- final URIFilter filter = getFilterFactory().and(
- getFilterFactory().lt("VIN", 16),
- getFilterFactory().gt("VIN", 12));
-
- assertEquals("((VIN lt 16) and (VIN gt 12))", filter.build());
- }
-
- @Test
- public void not() {
- final URIFilter filter = getFilterFactory().not(
- getFilterFactory().or(
- getFilterFactory().ge("VIN", 16),
- getFilterFactory().le("VIN", 12)));
-
- assertEquals("not (((VIN ge 16) or (VIN le 12)))", filter.build());
- }
-
- @Test
- public void operator() {
- URIFilter filter = getFilterFactory().eq(
- getFilterArgFactory().add(
- getFilterArgFactory().property("VIN"),
- getFilterArgFactory().literal(1)),
- getFilterArgFactory().literal(16));
-
- assertEquals("((VIN add 1) eq 16)", filter.build());
-
- filter = getFilterFactory().eq(
- getFilterArgFactory().add(
- getFilterArgFactory().literal(1),
- getFilterArgFactory().property("VIN")),
- getFilterArgFactory().literal(16));
-
- assertEquals("((1 add VIN) eq 16)", filter.build());
-
- filter = getFilterFactory().eq(
- getFilterArgFactory().literal(16),
- getFilterArgFactory().add(
- getFilterArgFactory().literal(1),
- getFilterArgFactory().property("VIN")));
-
- assertEquals("(16 eq (1 add VIN))", filter.build());
- }
-
- @Test
- public void function() {
- final URIFilter filter = getFilterFactory().match(
- getFilterArgFactory().startswith(
- getFilterArgFactory().property("Description"),
- getFilterArgFactory().literal("cen")));
-
- assertEquals("startswith(Description,'cen')", filter.build());
- }
-
- @Test
- public void composed() {
- final URIFilter filter = getFilterFactory().gt(
- getFilterArgFactory().length(
- getFilterArgFactory().property("Description")),
- getFilterArgFactory().add(
- getFilterArgFactory().property("VIN"),
- getFilterArgFactory().literal(10)));
-
- assertEquals("(length(Description) gt (VIN add 10))", filter.build());
- }
-
- @Test
- public void propertyPath() {
- URIFilter filter = getFilterFactory().eq(
- getFilterArgFactory().indexof(
- getFilterArgFactory().property("PrimaryContactInfo/HomePhone/PhoneNumber"),
- getFilterArgFactory().literal("ODataJClient")),
- getFilterArgFactory().literal(1));
-
- assertEquals("(indexof(PrimaryContactInfo/HomePhone/PhoneNumber,'ODataJClient') eq 1)", filter.build());
-
- filter = getFilterFactory().ne(
- getFilterArgFactory().indexof(
- getFilterArgFactory().property("PrimaryContactInfo/HomePhone/PhoneNumber"),
- getFilterArgFactory().literal("lccvussrv")),
- getFilterArgFactory().literal(-1));
-
- assertEquals("(indexof(PrimaryContactInfo/HomePhone/PhoneNumber,'lccvussrv') ne -1)", filter.build());
- }
-
- @Test
- public void datetime() {
- final URIFilter filter = getFilterFactory().eq(
- getFilterArgFactory().month(
- getFilterArgFactory().property("PurchaseDate")),
- getFilterArgFactory().literal(12));
-
- assertEquals("(month(PurchaseDate) eq 12)", filter.build());
- }
-
- @Test
- public void isof() {
- final URIFilter filter = getFilterFactory().match(
- getFilterArgFactory().isof(
- getFilterArgFactory().literal(
- "Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee")));
-
- assertEquals("isof('Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee')", filter.build());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/URIBuilderTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/URIBuilderTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/URIBuilderTest.java
deleted file mode 100644
index 1838cf8..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/URIBuilderTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.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));
-
- 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());
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/FilterFactoryTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/FilterFactoryTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/FilterFactoryTest.java
deleted file mode 100644
index fd2a696..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/FilterFactoryTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.v4;
-
-import org.apache.olingo.client.api.v4.ODataClient;
-import org.apache.olingo.client.api.uri.URIFilter;
-import org.apache.olingo.client.api.uri.v4.FilterArgFactory;
-import org.apache.olingo.client.api.uri.v4.FilterFactory;
-import org.apache.olingo.client.core.AbstractTest;
-import org.apache.olingo.client.core.edm.EdmEnumTypeImpl;
-import org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-public class FilterFactoryTest extends AbstractTest {
-
- @Override
- protected ODataClient getClient() {
- return v4Client;
- }
-
- private FilterFactory getFilterFactory() {
- return getClient().getFilterFactory();
- }
-
- private FilterArgFactory getFilterArgFactory() {
- return getFilterFactory().getArgFactory();
- }
-
- @Test
- public void has() {
- final EdmEnumType pattern = new EdmEnumTypeImpl(ODataServiceVersion.V40,
- null, new FullQualifiedName("Sales", "Pattern"), new EnumTypeImpl());
- final URIFilter filter = getFilterFactory().has(getFilterArgFactory().property("style"), pattern, "Yellow");
-
- assertEquals("(style has Sales.Pattern'Yellow')", filter.build());
- }
-
- @Test
- public void contains() {
- final URIFilter filter = getFilterFactory().match(
- getFilterArgFactory().contains(
- getFilterArgFactory().property("CompanyName"), getFilterArgFactory().literal("Alfreds")));
-
- assertEquals("contains(CompanyName,'Alfreds')", filter.build());
- }
-
- @Test
- public void maxdatetime() {
- final URIFilter filter = getFilterFactory().eq(
- getFilterArgFactory().property("EndTime"),
- getFilterArgFactory().maxdatetime());
-
- assertEquals("(EndTime eq maxdatetime())", filter.build());
- }
-
- @Test
- public void any() {
- final URIFilter filter = getFilterFactory().match(
- getFilterArgFactory().any(getFilterArgFactory().property("Items"),
- getFilterFactory().gt("d:d/Quantity", 100)));
-
- assertEquals("Items/any(d:d/Quantity gt 100)", filter.build());
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3e53ac5b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/URIBuilderTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/URIBuilderTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/URIBuilderTest.java
deleted file mode 100644
index 868b363..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/URIBuilderTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.v4;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-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 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());
- }
-
-}