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/03/09 17:51:00 UTC
[3/3] git commit: [OLINGO-194] V4 URIBuilder and FilterFactory
implemented
[OLINGO-194] V4 URIBuilder and FilterFactory implemented
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/edf8ab9d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/edf8ab9d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/edf8ab9d
Branch: refs/heads/master
Commit: edf8ab9d3a4907e364148deaba53c38a99630117
Parents: a9f74a8
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Sun Mar 9 17:50:37 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Sun Mar 9 17:50:37 2014 +0100
----------------------------------------------------------------------
.../olingo/odata4/client/api/Configuration.java | 18 --
.../olingo/odata4/client/api/ODataClient.java | 2 +-
.../olingo/odata4/client/api/ODataV3Client.java | 39 ++++
.../olingo/odata4/client/api/ODataV4Client.java | 39 ++++
.../odata4/client/api/V3Configuration.java | 44 +++++
.../odata4/client/api/V4Configuration.java | 24 +++
.../odata4/client/api/data/ServiceDocument.java | 3 +-
.../client/api/edm/xml/v4/XMLMetadata.java | 36 ++++
.../client/api/op/ODataV3Deserializer.java | 23 +++
.../client/api/op/ODataV4Deserializer.java | 29 +++
.../odata4/client/api/uri/QueryOption.java | 40 ++--
.../odata4/client/api/uri/SegmentType.java | 21 ++-
.../odata4/client/api/uri/URIBuilder.java | 167 +++++++----------
.../odata4/client/api/uri/V3URIBuilder.java | 47 +++++
.../odata4/client/api/uri/V4URIBuilder.java | 87 +++++++++
.../client/api/uri/filter/FilterArgFactory.java | 83 +++++++++
.../client/api/uri/filter/FilterFactory.java | 2 +
.../api/uri/filter/V3FilterArgFactory.java | 25 +++
.../client/api/uri/filter/V3FilterFactory.java | 26 +++
.../api/uri/filter/V4FilterArgFactory.java | 55 ++++++
.../client/api/uri/filter/V4FilterFactory.java | 32 ++++
.../client/core/AbstractConfiguration.java | 16 +-
.../odata4/client/core/ODataClientFactory.java | 8 +-
.../odata4/client/core/ODataV3Client.java | 138 --------------
.../odata4/client/core/ODataV3ClientImpl.java | 146 +++++++++++++++
.../odata4/client/core/ODataV4Client.java | 138 --------------
.../odata4/client/core/ODataV4ClientImpl.java | 146 +++++++++++++++
.../odata4/client/core/V3Configuration.java | 29 ---
.../odata4/client/core/V3ConfigurationImpl.java | 57 ++++++
.../odata4/client/core/V4Configuration.java | 29 ---
.../odata4/client/core/V4ConfigurationImpl.java | 31 ++++
.../client/core/edm/xml/v4/XMLMetadataImpl.java | 3 +-
.../client/core/op/impl/ODataV3BinderImpl.java | 37 ++++
.../core/op/impl/ODataV3DeserializerImpl.java | 69 +++++++
.../client/core/op/impl/ODataV3ReaderImpl.java | 47 +++++
.../core/op/impl/ODataV3SerializerImpl.java | 32 ++++
.../client/core/op/impl/ODataV4BinderImpl.java | 62 +++++++
.../core/op/impl/ODataV4DeserializerImpl.java | 70 +++++++
.../client/core/op/impl/ODataV4ReaderImpl.java | 47 +++++
.../core/op/impl/ODataV4SerializerImpl.java | 32 ++++
.../client/core/op/impl/v3/ODataBinderImpl.java | 37 ----
.../core/op/impl/v3/ODataDeserializerImpl.java | 68 -------
.../client/core/op/impl/v3/ODataReaderImpl.java | 47 -----
.../core/op/impl/v3/ODataSerializerImpl.java | 32 ----
.../client/core/op/impl/v4/ODataBinderImpl.java | 62 -------
.../core/op/impl/v4/ODataDeserializerImpl.java | 68 -------
.../client/core/op/impl/v4/ODataReaderImpl.java | 47 -----
.../core/op/impl/v4/ODataSerializerImpl.java | 32 ----
.../client/core/uri/AbstractURIBuilder.java | 181 +++++++++++--------
.../olingo/odata4/client/core/uri/URIUtils.java | 2 +-
.../odata4/client/core/uri/V3URIBuilder.java | 39 ----
.../client/core/uri/V3URIBuilderImpl.java | 93 ++++++++++
.../odata4/client/core/uri/V4URIBuilder.java | 39 ----
.../client/core/uri/V4URIBuilderImpl.java | 101 +++++++++++
.../uri/filter/AbstractFilterArgFactory.java | 178 ++++++++++++++++++
.../core/uri/filter/AbstractFilterFactory.java | 16 +-
.../core/uri/filter/FilterArgFactory.java | 155 ----------------
.../client/core/uri/filter/FilterConst.java | 41 +++++
.../client/core/uri/filter/FilterFunction.java | 6 +-
.../client/core/uri/filter/FilterLambda.java | 46 +++++
.../client/core/uri/filter/HasFilter.java | 34 ++++
.../core/uri/filter/V3FilterArgFactoryImpl.java | 31 ++++
.../client/core/uri/filter/V3FilterFactory.java | 25 ---
.../core/uri/filter/V3FilterFactoryImpl.java | 33 ++++
.../core/uri/filter/V4FilterArgFactoryImpl.java | 107 +++++++++++
.../client/core/uri/filter/V4FilterFactory.java | 25 ---
.../core/uri/filter/V4FilterFactoryImpl.java | 46 +++++
.../olingo/odata4/client/core/AbstractTest.java | 2 +
.../client/core/v3/FilterFactoryTest.java | 112 +++++++-----
.../odata4/client/core/v3/MetadataTest.java | 8 +-
.../client/core/v3/ServiceDocumentTest.java | 2 +-
.../odata4/client/core/v3/URIBuilderTest.java | 87 ++++++---
.../client/core/v4/FilterFactoryTest.java | 84 +++++++++
.../odata4/client/core/v4/MetadataTest.java | 14 +-
.../client/core/v4/ServiceDocumentTest.java | 2 +-
.../odata4/client/core/v4/URIBuilderTest.java | 133 ++++++++++++++
76 files changed, 2676 insertions(+), 1338 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
index 521c5a7..6e69032 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
@@ -137,24 +137,6 @@ public interface Configuration extends Serializable {
void setUseXHTTPMethod(boolean value);
/**
- * Checks whether URIs contain entity key between parentheses (standard) or instead as additional segment. Example:
- * http://services.odata.org/V4/OData/OData.svc/Products(0) or http://services.odata.org/V4/OData/OData.svc/Products/0
- *
- * @return whether URIs shall be built with entity key between parentheses (standard) or instead as additional
- * segment.
- */
- boolean isKeyAsSegment();
-
- /**
- * Sets whether URIs shall be built with entity key between parentheses (standard) or instead as additional segment.
- * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
- * http://services.odata.org/V4/OData/OData.svc/Products/0
- *
- * @param value 'TRUE' to use this feature.
- */
- void setKeyAsSegment(boolean value);
-
- /**
* Checks whether Gzip compression (e.g. support for <tt>Accept-Encoding: gzip</tt> and
* <tt>Content-Encoding: gzip</tt> HTTP headers) is enabled.
*
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
index ea78644..b13c866 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
@@ -33,7 +33,7 @@ public interface ODataClient {
//ODataHeaders getVersionHeaders();
Configuration getConfiguration();
- URIBuilder getURIBuilder(String serviceRoot);
+ URIBuilder<?> getURIBuilder(String serviceRoot);
FilterFactory getFilterFactory();
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV3Client.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV3Client.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV3Client.java
new file mode 100644
index 0000000..ed2d413
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV3Client.java
@@ -0,0 +1,39 @@
+/*
+ * 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.odata4.client.api;
+
+import org.apache.olingo.odata4.client.api.op.ODataV3Deserializer;
+import org.apache.olingo.odata4.client.api.uri.V3URIBuilder;
+import org.apache.olingo.odata4.client.api.uri.filter.V3FilterFactory;
+
+public interface ODataV3Client extends ODataClient {
+
+ @Override
+ V3Configuration getConfiguration();
+
+ @Override
+ V3URIBuilder getURIBuilder(String serviceRoot);
+
+ @Override
+ V3FilterFactory getFilterFactory();
+
+ @Override
+ ODataV3Deserializer getDeserializer();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV4Client.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV4Client.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV4Client.java
new file mode 100644
index 0000000..1f493b3
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataV4Client.java
@@ -0,0 +1,39 @@
+/*
+ * 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.odata4.client.api;
+
+import org.apache.olingo.odata4.client.api.op.ODataV4Deserializer;
+import org.apache.olingo.odata4.client.api.uri.V4URIBuilder;
+import org.apache.olingo.odata4.client.api.uri.filter.V4FilterFactory;
+
+public interface ODataV4Client extends ODataClient {
+
+ @Override
+ V4Configuration getConfiguration();
+
+ @Override
+ V4URIBuilder getURIBuilder(String serviceRoot);
+
+ @Override
+ V4FilterFactory getFilterFactory();
+
+ @Override
+ ODataV4Deserializer getDeserializer();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V3Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V3Configuration.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V3Configuration.java
new file mode 100644
index 0000000..c391705
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V3Configuration.java
@@ -0,0 +1,44 @@
+/*
+ * 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.odata4.client.api;
+
+public interface V3Configuration extends Configuration {
+
+ /**
+ * Checks whether URIs contain entity key between parentheses (standard) or instead as additional segment.
+ * <br/>
+ * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
+ * http://services.odata.org/V4/OData/OData.svc/Products/0
+ *
+ * @return whether URIs shall be built with entity key between parentheses (standard) or instead as additional
+ * segment.
+ */
+ boolean isKeyAsSegment();
+
+ /**
+ * Sets whether URIs shall be built with entity key between parentheses (standard) or instead as additional segment.
+ * <br/>
+ * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
+ * http://services.odata.org/V4/OData/OData.svc/Products/0
+ *
+ * @param value 'TRUE' to use this feature.
+ */
+ void setKeyAsSegment(boolean value);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V4Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V4Configuration.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V4Configuration.java
new file mode 100644
index 0000000..668b0aa
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/V4Configuration.java
@@ -0,0 +1,24 @@
+/*
+ * 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.odata4.client.api;
+
+public interface V4Configuration extends Configuration {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ServiceDocument.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ServiceDocument.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ServiceDocument.java
index b36e1c5..acd6103 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ServiceDocument.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ServiceDocument.java
@@ -20,12 +20,11 @@ package org.apache.olingo.odata4.client.api.data;
import java.net.URI;
import java.util.List;
-import org.apache.olingo.odata4.client.api.domain.ODataServiceDocument;
/**
* REST resource for an <tt>ODataServiceDocument</tt>.
*
- * @see ODataServiceDocument
+ * @see org.apache.olingo.odata4.client.api.domain.ODataServiceDocument
*/
public interface ServiceDocument {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/XMLMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/XMLMetadata.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/XMLMetadata.java
new file mode 100644
index 0000000..5b8d851
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/XMLMetadata.java
@@ -0,0 +1,36 @@
+/*
+ * 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.odata4.client.api.edm.xml.v4;
+
+import java.util.List;
+
+public interface XMLMetadata extends org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata {
+
+ @Override
+ List<Schema> getSchemas();
+
+ @Override
+ Schema getSchema(int index);
+
+ @Override
+ Schema getSchema(String key);
+
+ List<Reference> getReferences();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV3Deserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV3Deserializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV3Deserializer.java
new file mode 100644
index 0000000..0b9edc9
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV3Deserializer.java
@@ -0,0 +1,23 @@
+/*
+ * 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.odata4.client.api.op;
+
+public interface ODataV3Deserializer extends ODataDeserializer {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV4Deserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV4Deserializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV4Deserializer.java
new file mode 100644
index 0000000..5d54130
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataV4Deserializer.java
@@ -0,0 +1,29 @@
+/*
+ * 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.odata4.client.api.op;
+
+import java.io.InputStream;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.XMLMetadata;
+
+public interface ODataV4Deserializer extends ODataDeserializer {
+
+ @Override
+ XMLMetadata toMetadata(InputStream input);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/QueryOption.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/QueryOption.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/QueryOption.java
index 067fec5..544a71a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/QueryOption.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/QueryOption.java
@@ -24,64 +24,72 @@ package org.apache.olingo.odata4.client.api.uri;
public enum QueryOption {
/**
+ * The entity-id specified by $id may be expressed absolute or relative to the request URL.
+ */
+ ID,
+ /**
+ * The $count system query option allows clients to request a count of the matching resources included with the
+ * resources in the response. The $count query option has a Boolean value of true or false.
+ */
+ COUNT,
+ /**
* This option indicates entities associated with the EntityType instance or EntitySet, identified by the resource
* path section of the URI, and MUST be represented inline in the data service's response.
*/
- EXPAND("expand"),
+ EXPAND,
/**
* This option specifies the media type acceptable in a response. If present, this value SHOULD take precedence over
* value(s) specified in an Accept request header.
*/
- FORMAT("format"),
+ FORMAT,
/**
* This option is used to specify that a subset of the properties of the entities identified by the path of the
* request URI and $expand query option SHOULD be returned in the response from the data service.
*/
- SELECT("select"),
+ SELECT,
/**
* This option specifies the sort properties and sort direction (ascending or descending) that the data service MUST
* use to order the entities in the EntitySet, identified by the resource path section of the URI.
*/
- ORDERBY("orderby"),
+ ORDERBY,
/**
* This option specifies a positive integer N that is the maximum number of entities in the EntitySet, identified by
* the resource path section of the URI, that the data service MUST return.
*/
- TOP("top"),
+ TOP,
/**
* This option specifies a positive integer N that represents the number of entities, counted from the first entity in
* the EntitySet and ordered as specified by the $orderby option, that the data service should skip when returning the
* entities in the EntitySet, which is identified by the resource path section of the URI. The data service SHOULD
* return all subsequent entities, starting from the one in position N+1.
*/
- SKIP("skip"),
+ SKIP,
/**
* This query option applies only to the OData 2.0 protocol to the AtomPub protocol. The value of a $skiptoken query
* option is an opaque token which identifies an index into the collection of entities identified by the URI
* containing the $skiptoken parameter.
*/
- SKIPTOKEN("skiptoken"),
+ SKIPTOKEN,
/**
* This option specifies a predicate used to filter the elements from the EntitySet identified by the resource path
* section of the URI.
*/
- FILTER("filter"),
+ FILTER,
/**
* For a value of "allpages", this option indicates that the response to the request MUST include the count of the
* number of entities in the EntitySet, identified by the resource path section of the URI after all $filter system
* query options have been applied. For a value of "none", this option indicates that the response to the request MUST
* NOT include the count value.
*/
- INLINECOUNT("inlinecount");
-
- final String option;
-
- QueryOption(final String option) {
- this.option = option;
- }
+ INLINECOUNT,
+ /**
+ * Search expressions are used within the $search system query option to request entities matching the specified
+ * expression.
+ */
+ SEARCH;
@Override
public String toString() {
- return option;
+ return name().toLowerCase();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/SegmentType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/SegmentType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/SegmentType.java
index a029c0d..e3121b9 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/SegmentType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/SegmentType.java
@@ -25,21 +25,32 @@ import org.apache.commons.lang3.StringUtils;
*/
public enum SegmentType {
+ ENTITY("$entity"),
ENTITYSET,
- ENTITYTYPE,
+ SINGLETON,
KEY,
KEY_AS_SEGMENT,
+ PROPERTY,
NAVIGATION,
- STRUCTURAL,
+ DERIVED_ENTITY_TYPE,
VALUE("$value"),
- FUNCTIONIMPORT,
+ BOUND_OPERATION,
+ UNBOUND_OPERATION,
METADATA("$metadata"),
BATCH("$batch"),
LINKS("$links"),
- COUNT("$count"),
+ REF("$ref"),
+ CROSS_JOIN("$crossjoin"),
+ ALL("$all"),
+ /**
+ * For query options like as $count that needs to stay in their own segment, right after service root.
+ *
+ * @see QueryOption#COUNT
+ */
+ ROOT_QUERY_OPTION,
SERVICEROOT;
- private String value;
+ private final String value;
private SegmentType() {
this.value = StringUtils.EMPTY;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/URIBuilder.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/URIBuilder.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/URIBuilder.java
index b3104ff..bf23b7d 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/URIBuilder.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/URIBuilder.java
@@ -19,231 +19,200 @@
package org.apache.olingo.odata4.client.api.uri;
import org.apache.olingo.odata4.client.api.uri.filter.URIFilter;
-import java.io.Serializable;
import java.net.URI;
import java.util.Map;
/**
* OData URI builder.
*/
-public interface URIBuilder extends Serializable {
-
- public static class Segment {
-
- private final SegmentType type;
-
- private final String value;
-
- public Segment(final SegmentType type, final String value) {
- this.type = type;
- this.value = value;
- }
-
- public SegmentType getType() {
- return type;
- }
-
- public String getValue() {
- return value;
- }
-
- }
+public interface URIBuilder<UB extends URIBuilder<?>> {
/**
* Adds the specified query option to the URI.
*
* @param option query option.
* @param value query option value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder addQueryOption(QueryOption option, String value);
+ UB addQueryOption(QueryOption option, String value);
/**
* Adds the specified (custom) query option to the URI.
*
* @param option query option.
* @param value query option value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder addQueryOption(String option, String value);
+ UB addQueryOption(String option, String value);
/**
- * Append EntitySet segment to the URI.
+ * Appends EntitySet segment to the URI.
*
* @param segmentValue segment value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendEntitySetSegment(String segmentValue);
+ UB appendEntitySetSegment(String segmentValue);
/**
- * Append EntityType segment to the URI.
+ * Appends key segment to the URI.
*
- * @param segmentValue segment value.
- * @return current ODataURIBuilder object.
+ * @param val segment value.
+ * @return current URIBuilder instance
*/
- URIBuilder appendEntityTypeSegment(String segmentValue);
+ UB appendKeySegment(Object val);
/**
- * Append key segment to the URI.
+ * Appends key segment to the URI, for multiple keys.
*
- * @param val segment value.
- * @return current ODataURIBuilder object.
+ * @param segmentValues segment values.
+ * @return current URIBuilder instance
*/
- URIBuilder appendKeySegment(Object val);
+ UB appendKeySegment(Map<String, Object> segmentValues);
/**
- * Append key segment to the URI, for multiple keys.
+ * Appends property segment to the URI.
*
- * @param segmentValues segment values.
- * @return current ODataURIBuilder object.
+ * @param segmentValue segment value.
+ * @return current URIBuilder instance
*/
- URIBuilder appendKeySegment(Map<String, Object> segmentValues);
+ UB appendPropertySegment(String segmentValue);
/**
- * Append navigation link segment to the URI.
+ * Appends navigation segment to the URI.
*
* @param segmentValue segment value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendNavigationLinkSegment(String segmentValue);
+ UB appendNavigationSegment(String segmentValue);
/**
- * Append structural segment to the URI.
+ * Appends derived entity type segment to the URI.
*
* @param segmentValue segment value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendStructuralSegment(String segmentValue);
-
- URIBuilder appendLinksSegment(String segmentValue);
+ UB appendDerivedEntityTypeSegment(String segmentValue);
/**
- * Append value segment to the URI.
+ * Appends value segment to the URI.
*
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendValueSegment();
+ UB appendValueSegment();
/**
- * Append count segment to the URI.
+ * Appends operation (action or function) segment to the URI.
*
- * @return current ODataURIBuilder object.
+ * @param operation Operation (action or function) name
+ * @param arguments Operation arguments
+ * @return current URIBuilder instance
*/
- URIBuilder appendCountSegment();
+ UB appendOperationCallSegment(String operation, Map<String, Object> arguments);
/**
- * Append function import segment to the URI.
+ * Appends metadata segment to the URI.
*
- * @param segmentValue segment value.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendFunctionImportSegment(String segmentValue);
+ UB appendMetadataSegment();
/**
- * Append metadata segment to the URI.
+ * Appends batch segment to the URI.
*
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendMetadataSegment();
+ UB appendBatchSegment();
/**
- * Append batch segment to the URI.
+ * Adds count query option.
*
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
*/
- URIBuilder appendBatchSegment();
+ UB count();
/**
* Adds expand query option.
*
- * @param entityName entity object to be in-line expanded.
- * @return current ODataURIBuilder object.
+ * @param expandItems items to be expanded in-line
+ * @return current URIBuilder instance
* @see QueryOption#EXPAND
*/
- URIBuilder expand(String entityName);
+ UB expand(String... expandItems);
/**
* Adds format query option.
*
* @param format media type acceptable in a response.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#FORMAT
*/
- URIBuilder format(String format);
+ UB format(String format);
/**
* Adds filter for filter query option.
*
* @param filter filter instance (to be obtained via <tt>ODataFilterFactory</tt>): note that <tt>build()</tt> method
* will be immediately invoked.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#FILTER
- * @see ODataFilter
- * @see FilterFactory
+ * @see URIFilter
+ * @see org.apache.olingo.odata4.client.api.uri.filter.FilterFactory
*/
- URIBuilder filter(URIFilter filter);
+ UB filter(URIFilter filter);
/**
* Adds filter query option.
*
* @param filter filter string.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#FILTER
*/
- URIBuilder filter(String filter);
+ UB filter(String filter);
/**
* Adds select query option.
*
- * @param select select query option value.
- * @return current ODataURIBuilder object.
+ * @param selectItems select items
+ * @return current URIBuilder instance
* @see QueryOption#SELECT
*/
- URIBuilder select(String select);
+ UB select(String... selectItems);
/**
* Adds orderby query option.
*
* @param order order string.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#ORDERBY
*/
- URIBuilder orderBy(String order);
+ UB orderBy(String order);
/**
* Adds top query option.
*
* @param top maximum number of entities to be returned.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#TOP
*/
- URIBuilder top(int top);
+ UB top(int top);
/**
* Adds skip query option.
*
* @param skip number of entities to be skipped into the response.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#SKIP
*/
- URIBuilder skip(int skip);
+ UB skip(int skip);
/**
* Adds skiptoken query option.
*
* @param skipToken opaque token.
- * @return current ODataURIBuilder object.
+ * @return current URIBuilder instance
* @see QueryOption#SKIPTOKEN
*/
- URIBuilder skipToken(String skipToken);
-
- /**
- * Adds inlinecount query option.
- *
- * @return current ODataURIBuilder object.
- * @see QueryOption#INLINECOUNT
- */
- URIBuilder inlineCount();
+ UB skipToken(String skipToken);
/**
* Build OData URI.
@@ -252,10 +221,4 @@ public interface URIBuilder extends Serializable {
*/
URI build();
- /**
- * ${@inheritDoc }
- */
- @Override
- String toString();
-
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V3URIBuilder.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V3URIBuilder.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V3URIBuilder.java
new file mode 100644
index 0000000..ad0dfe4
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V3URIBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * 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.odata4.client.api.uri;
+
+public interface V3URIBuilder extends URIBuilder<V3URIBuilder> {
+
+ public enum InlineCount {
+
+ allpages,
+ none
+
+ }
+
+ /**
+ * Appends links segment to the URI.
+ *
+ * @param segmentValue segment value
+ * @return current URIBuilder instance
+ */
+ V3URIBuilder appendLinksSegment(String segmentValue);
+
+ /**
+ * Adds inlinecount query option.
+ *
+ * @param inlineCount value
+ * @return current URIBuilder instance
+ * @see QueryOption#INLINECOUNT
+ */
+ V3URIBuilder inlineCount(InlineCount inlineCount);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V4URIBuilder.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V4URIBuilder.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V4URIBuilder.java
new file mode 100644
index 0000000..c865846
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/V4URIBuilder.java
@@ -0,0 +1,87 @@
+/*
+ * 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.odata4.client.api.uri;
+
+public interface V4URIBuilder extends URIBuilder<V4URIBuilder> {
+
+ /**
+ * Appends Singleton segment to the URI.
+ *
+ * @param segmentValue segment value.
+ * @return current URIBuilder instance
+ */
+ V4URIBuilder appendSingletonSegment(String segmentValue);
+
+ /**
+ * Appends entity-id segment to the URI.
+ *
+ * @param segmentValue segment value
+ * @return current URIBuilder instance
+ */
+ V4URIBuilder appendEntityIdSegment(String segmentValue);
+
+ /**
+ * Appends ref segment to the URI.
+ *
+ * @return current URIBuilder instance
+ */
+ V4URIBuilder appendRefSegment();
+
+ /**
+ * Appends cross join segment to the URI.
+ *
+ * @param segmentValues segment values.
+ * @return current URIBuilder instance
+ */
+ V4URIBuilder appendCrossjoinSegment(String... segmentValues);
+
+ /**
+ * Appends all segment to the URI.
+ *
+ * @return current URIBuilder instance
+ */
+ V4URIBuilder appendAllSegment();
+
+ /**
+ * Adds id query option.
+ *
+ * @param idValue opaque token.
+ * @return current URIBuilder instance
+ * @see QueryOption#ID
+ */
+ V4URIBuilder id(String idValue);
+
+ /**
+ * Appends count query option.
+ *
+ * @param value true or false
+ * @return current URIBuilder instance
+ * @see QueryOption#COUNT
+ */
+ V4URIBuilder count(boolean value);
+
+ /**
+ * Appends search query option.
+ *
+ * @param expression search expression
+ * @return current URIBuilder instance
+ * @see QueryOption#SEARCH
+ */
+ V4URIBuilder search(String expression);
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterArgFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterArgFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterArgFactory.java
new file mode 100644
index 0000000..0db93e7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterArgFactory.java
@@ -0,0 +1,83 @@
+/*
+ * 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.odata4.client.api.uri.filter;
+
+public interface FilterArgFactory {
+
+ FilterArg _null();
+
+ FilterArg add(FilterArg first, FilterArg second);
+
+ FilterArg ceiling(FilterArg param);
+
+ FilterArg concat(FilterArg first, FilterArg second);
+
+ FilterArg day(FilterArg param);
+
+ FilterArg div(FilterArg first, FilterArg second);
+
+ FilterArg endswith(FilterArg first, FilterArg second);
+
+ FilterArg floor(FilterArg param);
+
+ FilterArg hour(FilterArg param);
+
+ FilterArg indexof(FilterArg first, FilterArg second);
+
+ FilterArg isof(FilterArg type);
+
+ FilterArg isof(FilterArg expression, FilterArg type);
+
+ FilterArg length(FilterArg param);
+
+ FilterArg literal(Object value);
+
+ FilterArg minute(FilterArg param);
+
+ FilterArg mod(FilterArg first, FilterArg second);
+
+ FilterArg month(FilterArg param);
+
+ FilterArg mul(FilterArg first, FilterArg second);
+
+ FilterArg property(String propertyPath);
+
+ FilterArg replace(FilterArg first, FilterArg second, FilterArg third);
+
+ FilterArg round(FilterArg param);
+
+ FilterArg second(FilterArg param);
+
+ FilterArg startswith(FilterArg first, FilterArg second);
+
+ FilterArg sub(FilterArg first, FilterArg second);
+
+ FilterArg substring(FilterArg arg, FilterArg pos);
+
+ FilterArg substring(FilterArg arg, FilterArg pos, FilterArg length);
+
+ FilterArg tolower(FilterArg param);
+
+ FilterArg toupper(FilterArg param);
+
+ FilterArg trim(FilterArg param);
+
+ FilterArg year(FilterArg param);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterFactory.java
index cf1260c..7cab185 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterFactory.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/FilterFactory.java
@@ -25,6 +25,8 @@ import java.io.Serializable;
*/
public interface FilterFactory extends Serializable {
+ FilterArgFactory getArgFactory();
+
URIFilter match(FilterArg arg);
URIFilter eq(String key, Object value);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterArgFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterArgFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterArgFactory.java
new file mode 100644
index 0000000..f12a970
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterArgFactory.java
@@ -0,0 +1,25 @@
+/*
+ * 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.odata4.client.api.uri.filter;
+
+public interface V3FilterArgFactory extends FilterArgFactory {
+
+ FilterArg substringof(FilterArg first, FilterArg second);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterFactory.java
new file mode 100644
index 0000000..66e7cc5
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V3FilterFactory.java
@@ -0,0 +1,26 @@
+/*
+ * 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.odata4.client.api.uri.filter;
+
+public interface V3FilterFactory extends FilterFactory {
+
+ @Override
+ V3FilterArgFactory getArgFactory();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterArgFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterArgFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterArgFactory.java
new file mode 100644
index 0000000..acf9c5c
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterArgFactory.java
@@ -0,0 +1,55 @@
+/*
+ * 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.odata4.client.api.uri.filter;
+
+public interface V4FilterArgFactory extends FilterArgFactory {
+
+ FilterArg contains(FilterArg first, FilterArg second);
+
+ FilterArg fractionalseconds(FilterArg param);
+
+ FilterArg date(FilterArg param);
+
+ FilterArg time(FilterArg param);
+
+ FilterArg totaloffsetminutes(FilterArg param);
+
+ FilterArg now();
+
+ FilterArg mindatetime();
+
+ FilterArg maxdatetime();
+
+ FilterArg totalseconds(FilterArg param);
+
+ FilterArg cast(FilterArg type);
+
+ FilterArg cast(FilterArg expression, FilterArg type);
+
+ FilterArg geoDistance(FilterArg first, FilterArg second);
+
+ FilterArg geoIntersects(FilterArg first, FilterArg second);
+
+ FilterArg geoLength(FilterArg first, FilterArg second);
+
+ FilterArg any(FilterArg collection, URIFilter expression);
+
+ FilterArg all(FilterArg collection, URIFilter expression);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterFactory.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterFactory.java
new file mode 100644
index 0000000..0328774
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/uri/filter/V4FilterFactory.java
@@ -0,0 +1,32 @@
+/*
+ * 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.odata4.client.api.uri.filter;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
+
+public interface V4FilterFactory extends FilterFactory {
+
+ @Override
+ V4FilterArgFactory getArgFactory();
+
+ URIFilter has(String key, EdmEnumType enumType, String memberName);
+
+ URIFilter has(FilterArg left, EdmEnumType enumType, String memberName);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/AbstractConfiguration.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/AbstractConfiguration.java
index 7ff6a89..787107b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/AbstractConfiguration.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/AbstractConfiguration.java
@@ -46,8 +46,6 @@ public abstract class AbstractConfiguration implements Configuration {
private static final String USE_XHTTP_METHOD = "useHTTPMethod";
- private static final String KEY_AS_SEGMENT = "keyAsSegment";
-
private static final String GZIP_COMPRESSION = "gzipCompression";
private static final String CHUNKING = "chunking";
@@ -63,7 +61,7 @@ public abstract class AbstractConfiguration implements Configuration {
* @param defaultValue default value to be used in case of the given key doesn't exist.
* @return property value if exists; default value if does not exist.
*/
- private Object getProperty(final String key, final Object defaultValue) {
+ protected Object getProperty(final String key, final Object defaultValue) {
return CONF.containsKey(key) ? CONF.get(key) : defaultValue;
}
@@ -74,7 +72,7 @@ public abstract class AbstractConfiguration implements Configuration {
* @param value configuration property value.
* @return given value.
*/
- private Object setProperty(final String key, final Object value) {
+ protected Object setProperty(final String key, final Object value) {
return CONF.put(key, value);
}
@@ -167,16 +165,6 @@ public abstract class AbstractConfiguration implements Configuration {
}
@Override
- public boolean isKeyAsSegment() {
- return (Boolean) getProperty(KEY_AS_SEGMENT, false);
- }
-
- @Override
- public void setKeyAsSegment(final boolean value) {
- setProperty(KEY_AS_SEGMENT, value);
- }
-
- @Override
public boolean isGzipCompression() {
return (Boolean) getProperty(GZIP_COMPRESSION, false);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataClientFactory.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataClientFactory.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataClientFactory.java
index e8276f5..5871740 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataClientFactory.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataClientFactory.java
@@ -20,12 +20,12 @@ package org.apache.olingo.odata4.client.core;
public final class ODataClientFactory {
- public static ODataV3Client getV3() {
- return new ODataV3Client();
+ public static ODataV3ClientImpl getV3() {
+ return new ODataV3ClientImpl();
}
- public static ODataV4Client getV4() {
- return new ODataV4Client();
+ public static ODataV4ClientImpl getV4() {
+ return new ODataV4ClientImpl();
}
private ODataClientFactory() {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3Client.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3Client.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3Client.java
deleted file mode 100644
index 15cc2d2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3Client.java
+++ /dev/null
@@ -1,138 +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.odata4.client.core;
-
-import org.apache.olingo.odata4.client.core.op.impl.v3.ODataBinderImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v3.ODataDeserializerImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v3.ODataReaderImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v3.ODataSerializerImpl;
-import org.apache.olingo.odata4.client.core.uri.V3URIBuilder;
-import org.apache.olingo.odata4.client.core.uri.filter.V3FilterFactory;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class ODataV3Client extends AbstractODataClient {
-
- private static final long serialVersionUID = -1655712193243609209L;
-
- private final V3Configuration configuration = new V3Configuration();
-
- private final V3FilterFactory filterFactory = new V3FilterFactory();
-
- private final ODataDeserializerImpl deserializer = new ODataDeserializerImpl(this);
-
- private final ODataSerializerImpl serializer = new ODataSerializerImpl(this);
-
- private final ODataReaderImpl reader = new ODataReaderImpl(this);
-
-// private final ODataWriterImpl writer = new ODataWriterImpl(this);
- private final ODataBinderImpl binder = new ODataBinderImpl(this);
-
-// private final ODataObjectFactoryImpl objectFactory = new ODataObjectFactoryImpl(this);
-//
-// private final V3RetrieveRequestFactory retrieveReqFact = new V3RetrieveRequestFactory(this);
-//
-// private final V3CUDRequestFactory cudReqFact = new V3CUDRequestFactory(this);
-//
-// private final V3StreamedRequestFactory streamedReqFact = new V3StreamedRequestFactory(this);
-//
-// private final V3InvokeRequestFactory invokeReqFact = new V3InvokeRequestFactory(this);
-//
-// private final V3BatchRequestFactory batchReqFact = new V3BatchRequestFactory(this);
- @Override
- public ODataServiceVersion getServiceVersion() {
- return ODataServiceVersion.V30;
- }
-
-// @Override
-// public ODataHeaders getVersionHeaders() {
-// final ODataHeaders odataHeaders = new ODataHeaders();
-// odataHeaders.setHeader(ODataHeaders.HeaderName.minDataServiceVersion, ODataVersion.V3.toString());
-// odataHeaders.setHeader(ODataHeaders.HeaderName.maxDataServiceVersion, ODataVersion.V3.toString());
-// odataHeaders.setHeader(ODataHeaders.HeaderName.dataServiceVersion, ODataVersion.V3.toString());
-// return odataHeaders;
-// }
- @Override
- public V3Configuration getConfiguration() {
- return configuration;
- }
-
- @Override
- public V3URIBuilder getURIBuilder(final String serviceRoot) {
- return new V3URIBuilder(configuration, serviceRoot);
- }
-
- @Override
- public V3FilterFactory getFilterFactory() {
- return filterFactory;
- }
-
- @Override
- public ODataDeserializerImpl getDeserializer() {
- return deserializer;
- }
-
- @Override
- public ODataSerializerImpl getSerializer() {
- return serializer;
- }
-
- @Override
- public ODataReaderImpl getReader() {
- return reader;
- }
-
-// @Override
-// public ODataWriterImpl getWriter() {
-// return writer;
-// }
- @Override
- public ODataBinderImpl getBinder() {
- return binder;
- }
-
-// @Override
-// public ODataObjectFactoryImpl getObjectFactory() {
-// return objectFactory;
-// }
-//
-// @Override
-// public V3RetrieveRequestFactory getRetrieveRequestFactory() {
-// return retrieveReqFact;
-// }
-//
-// @Override
-// public V3CUDRequestFactory getCUDRequestFactory() {
-// return cudReqFact;
-// }
-//
-// @Override
-// public V3StreamedRequestFactory getStreamedRequestFactory() {
-// return streamedReqFact;
-// }
-//
-// @Override
-// public V3InvokeRequestFactory getInvokeRequestFactory() {
-// return invokeReqFact;
-// }
-//
-// @Override
-// public V3BatchRequestFactory getBatchRequestFactory() {
-// return batchReqFact;
-// }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3ClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3ClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3ClientImpl.java
new file mode 100644
index 0000000..8c61eb9
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV3ClientImpl.java
@@ -0,0 +1,146 @@
+/*
+ * 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.odata4.client.core;
+
+import org.apache.olingo.odata4.client.api.ODataV3Client;
+import org.apache.olingo.odata4.client.api.V3Configuration;
+import org.apache.olingo.odata4.client.api.op.ODataBinder;
+import org.apache.olingo.odata4.client.api.op.ODataReader;
+import org.apache.olingo.odata4.client.api.op.ODataSerializer;
+import org.apache.olingo.odata4.client.api.op.ODataV3Deserializer;
+import org.apache.olingo.odata4.client.api.uri.V3URIBuilder;
+import org.apache.olingo.odata4.client.api.uri.filter.V3FilterFactory;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV3BinderImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV3DeserializerImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV3ReaderImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV3SerializerImpl;
+import org.apache.olingo.odata4.client.core.uri.V3URIBuilderImpl;
+import org.apache.olingo.odata4.client.core.uri.filter.V3FilterFactoryImpl;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+public class ODataV3ClientImpl extends AbstractODataClient implements ODataV3Client {
+
+ private static final long serialVersionUID = -1655712193243609209L;
+
+ private final V3Configuration configuration = new V3ConfigurationImpl();
+
+ private final V3FilterFactory filterFactory = new V3FilterFactoryImpl();
+
+ private final ODataV3Deserializer deserializer = new ODataV3DeserializerImpl(this);
+
+ private final ODataSerializer serializer = new ODataV3SerializerImpl(this);
+
+ private final ODataReader reader = new ODataV3ReaderImpl(this);
+
+// private final ODataWriterImpl writer = new ODataWriterImpl(this);
+ private final ODataBinder binder = new ODataV3BinderImpl(this);
+
+// private final ODataObjectFactory objectFactory = new ODataObjectFactoryImpl(this);
+//
+// private final V3RetrieveRequestFactory retrieveReqFact = new V3RetrieveRequestFactory(this);
+//
+// private final V3CUDRequestFactory cudReqFact = new V3CUDRequestFactory(this);
+//
+// private final V3StreamedRequestFactory streamedReqFact = new V3StreamedRequestFactory(this);
+//
+// private final V3InvokeRequestFactory invokeReqFact = new V3InvokeRequestFactory(this);
+//
+// private final V3BatchRequestFactory batchReqFact = new V3BatchRequestFactory(this);
+ @Override
+ public ODataServiceVersion getServiceVersion() {
+ return ODataServiceVersion.V30;
+ }
+
+// @Override
+// public ODataHeaders getVersionHeaders() {
+// final ODataHeaders odataHeaders = new ODataHeaders();
+// odataHeaders.setHeader(ODataHeaders.HeaderName.minDataServiceVersion, ODataVersion.V3.toString());
+// odataHeaders.setHeader(ODataHeaders.HeaderName.maxDataServiceVersion, ODataVersion.V3.toString());
+// odataHeaders.setHeader(ODataHeaders.HeaderName.dataServiceVersion, ODataVersion.V3.toString());
+// return odataHeaders;
+// }
+ @Override
+ public V3Configuration getConfiguration() {
+ return configuration;
+ }
+
+ @Override
+ public V3URIBuilder getURIBuilder(final String serviceRoot) {
+ return new V3URIBuilderImpl(configuration, serviceRoot);
+ }
+
+ @Override
+ public V3FilterFactory getFilterFactory() {
+ return filterFactory;
+ }
+
+ @Override
+ public ODataV3Deserializer getDeserializer() {
+ return deserializer;
+ }
+
+ @Override
+ public ODataSerializer getSerializer() {
+ return serializer;
+ }
+
+ @Override
+ public ODataReader getReader() {
+ return reader;
+ }
+
+// @Override
+// public ODataWriterImpl getWriter() {
+// return writer;
+// }
+ @Override
+ public ODataBinder getBinder() {
+ return binder;
+ }
+
+// @Override
+// public ODataObjectFactoryImpl getObjectFactory() {
+// return objectFactory;
+// }
+//
+// @Override
+// public V3RetrieveRequestFactory getRetrieveRequestFactory() {
+// return retrieveReqFact;
+// }
+//
+// @Override
+// public V3CUDRequestFactory getCUDRequestFactory() {
+// return cudReqFact;
+// }
+//
+// @Override
+// public V3StreamedRequestFactory getStreamedRequestFactory() {
+// return streamedReqFact;
+// }
+//
+// @Override
+// public V3InvokeRequestFactory getInvokeRequestFactory() {
+// return invokeReqFact;
+// }
+//
+// @Override
+// public V3BatchRequestFactory getBatchRequestFactory() {
+// return batchReqFact;
+// }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4Client.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4Client.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4Client.java
deleted file mode 100644
index 35e4809..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4Client.java
+++ /dev/null
@@ -1,138 +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.odata4.client.core;
-
-import org.apache.olingo.odata4.client.core.op.impl.v4.ODataBinderImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v4.ODataDeserializerImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v4.ODataReaderImpl;
-import org.apache.olingo.odata4.client.core.op.impl.v4.ODataSerializerImpl;
-import org.apache.olingo.odata4.client.core.uri.V4URIBuilder;
-import org.apache.olingo.odata4.client.core.uri.filter.V4FilterFactory;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class ODataV4Client extends AbstractODataClient {
-
- private static final long serialVersionUID = -6653176125573631964L;
-
- private final V4Configuration configuration = new V4Configuration();
-
- private final V4FilterFactory filterFactory = new V4FilterFactory();
-
- private final ODataDeserializerImpl deserializer = new ODataDeserializerImpl(this);
-
- private final ODataSerializerImpl serializer = new ODataSerializerImpl(this);
-
- private final ODataReaderImpl reader = new ODataReaderImpl(this);
-
-// private final ODataWriterImpl writer = new ODataWriterImpl(this);
- private final ODataBinderImpl binder = new ODataBinderImpl(this);
-
-// private final ODataObjectFactoryImpl objectFactory = new ODataObjectFactoryImpl(this);
-//
-// private final V4RetrieveRequestFactory retrieveReqFact = new V4RetrieveRequestFactory(this);
-//
-// private final V4CUDRequestFactory cudReqFact = new V4CUDRequestFactory(this);
-//
-// private final V4StreamedRequestFactory streamedReqFact = new V4StreamedRequestFactory(this);
-//
-// private final V4InvokeRequestFactory invokeReqFact = new V4InvokeRequestFactory(this);
-//
-// private final V4BatchRequestFactory batchReqFact = new V4BatchRequestFactory(this);
- @Override
- public ODataServiceVersion getServiceVersion() {
- return ODataServiceVersion.V40;
- }
-//
-// @Override
-// public ODataHeaders getVersionHeaders() {
-// final ODataHeaders odataHeaders = new ODataHeaders();
-// odataHeaders.setHeader(ODataHeaders.HeaderName.maxDataServiceVersion, ODataVersion.V4.toString());
-// odataHeaders.setHeader(ODataHeaders.HeaderName.dataServiceVersion, ODataVersion.V4.toString());
-// return odataHeaders;
-// }
-
- @Override
- public V4Configuration getConfiguration() {
- return configuration;
- }
-
- @Override
- public V4URIBuilder getURIBuilder(final String serviceRoot) {
- return new V4URIBuilder(configuration, serviceRoot);
- }
-
- @Override
- public V4FilterFactory getFilterFactory() {
- return filterFactory;
- }
-
- @Override
- public ODataDeserializerImpl getDeserializer() {
- return deserializer;
- }
-
- @Override
- public ODataSerializerImpl getSerializer() {
- return serializer;
- }
-
- @Override
- public ODataReaderImpl getReader() {
- return reader;
- }
-
-// @Override
-// public ODataWriterImpl getWriter() {
-// return writer;
-// }
- @Override
- public ODataBinderImpl getBinder() {
- return binder;
- }
-
-// @Override
-// public ODataObjectFactoryImpl getObjectFactory() {
-// return objectFactory;
-// }
-//
-// @Override
-// public V4RetrieveRequestFactory getRetrieveRequestFactory() {
-// return retrieveReqFact;
-// }
-//
-// @Override
-// public V4CUDRequestFactory getCUDRequestFactory() {
-// return cudReqFact;
-// }
-//
-// @Override
-// public V4StreamedRequestFactory getStreamedRequestFactory() {
-// return streamedReqFact;
-// }
-//
-// @Override
-// public V4InvokeRequestFactory getInvokeRequestFactory() {
-// return invokeReqFact;
-// }
-//
-// @Override
-// public V4BatchRequestFactory getBatchRequestFactory() {
-// return batchReqFact;
-// }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4ClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4ClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4ClientImpl.java
new file mode 100644
index 0000000..6d1c034
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/ODataV4ClientImpl.java
@@ -0,0 +1,146 @@
+/*
+ * 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.odata4.client.core;
+
+import org.apache.olingo.odata4.client.api.ODataV4Client;
+import org.apache.olingo.odata4.client.api.V4Configuration;
+import org.apache.olingo.odata4.client.api.op.ODataBinder;
+import org.apache.olingo.odata4.client.api.op.ODataReader;
+import org.apache.olingo.odata4.client.api.op.ODataSerializer;
+import org.apache.olingo.odata4.client.api.op.ODataV4Deserializer;
+import org.apache.olingo.odata4.client.api.uri.V4URIBuilder;
+import org.apache.olingo.odata4.client.api.uri.filter.V4FilterFactory;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV4BinderImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV4DeserializerImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV4ReaderImpl;
+import org.apache.olingo.odata4.client.core.op.impl.ODataV4SerializerImpl;
+import org.apache.olingo.odata4.client.core.uri.V4URIBuilderImpl;
+import org.apache.olingo.odata4.client.core.uri.filter.V4FilterFactoryImpl;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+public class ODataV4ClientImpl extends AbstractODataClient implements ODataV4Client {
+
+ private static final long serialVersionUID = -6653176125573631964L;
+
+ private final V4Configuration configuration = new V4ConfigurationImpl();
+
+ private final V4FilterFactory filterFactory = new V4FilterFactoryImpl();
+
+ private final ODataV4Deserializer deserializer = new ODataV4DeserializerImpl(this);
+
+ private final ODataSerializer serializer = new ODataV4SerializerImpl(this);
+
+ private final ODataReader reader = new ODataV4ReaderImpl(this);
+
+// private final ODataWriter writer = new ODataWriterImpl(this);
+ private final ODataBinder binder = new ODataV4BinderImpl(this);
+
+// private final ODataObjectFactory objectFactory = new ODataObjectFactoryImpl(this);
+//
+// private final V4RetrieveRequestFactory retrieveReqFact = new V4RetrieveRequestFactory(this);
+//
+// private final V4CUDRequestFactory cudReqFact = new V4CUDRequestFactory(this);
+//
+// private final V4StreamedRequestFactory streamedReqFact = new V4StreamedRequestFactory(this);
+//
+// private final V4InvokeRequestFactory invokeReqFact = new V4InvokeRequestFactory(this);
+//
+// private final V4BatchRequestFactory batchReqFact = new V4BatchRequestFactory(this);
+ @Override
+ public ODataServiceVersion getServiceVersion() {
+ return ODataServiceVersion.V40;
+ }
+//
+// @Override
+// public ODataHeaders getVersionHeaders() {
+// final ODataHeaders odataHeaders = new ODataHeaders();
+// odataHeaders.setHeader(ODataHeaders.HeaderName.maxDataServiceVersion, ODataVersion.V4.toString());
+// odataHeaders.setHeader(ODataHeaders.HeaderName.dataServiceVersion, ODataVersion.V4.toString());
+// return odataHeaders;
+// }
+
+ @Override
+ public V4Configuration getConfiguration() {
+ return configuration;
+ }
+
+ @Override
+ public V4URIBuilder getURIBuilder(final String serviceRoot) {
+ return new V4URIBuilderImpl(serviceRoot);
+ }
+
+ @Override
+ public V4FilterFactory getFilterFactory() {
+ return filterFactory;
+ }
+
+ @Override
+ public ODataV4Deserializer getDeserializer() {
+ return deserializer;
+ }
+
+ @Override
+ public ODataSerializer getSerializer() {
+ return serializer;
+ }
+
+ @Override
+ public ODataReader getReader() {
+ return reader;
+ }
+
+// @Override
+// public ODataWriterImpl getWriter() {
+// return writer;
+// }
+ @Override
+ public ODataBinder getBinder() {
+ return binder;
+ }
+
+// @Override
+// public ODataObjectFactoryImpl getObjectFactory() {
+// return objectFactory;
+// }
+//
+// @Override
+// public V4RetrieveRequestFactory getRetrieveRequestFactory() {
+// return retrieveReqFact;
+// }
+//
+// @Override
+// public V4CUDRequestFactory getCUDRequestFactory() {
+// return cudReqFact;
+// }
+//
+// @Override
+// public V4StreamedRequestFactory getStreamedRequestFactory() {
+// return streamedReqFact;
+// }
+//
+// @Override
+// public V4InvokeRequestFactory getInvokeRequestFactory() {
+// return invokeReqFact;
+// }
+//
+// @Override
+// public V4BatchRequestFactory getBatchRequestFactory() {
+// return batchReqFact;
+// }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3Configuration.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3Configuration.java
deleted file mode 100644
index 386cff7..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3Configuration.java
+++ /dev/null
@@ -1,29 +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.odata4.client.core;
-
-public class V3Configuration extends AbstractConfiguration {
-
- private static final long serialVersionUID = -8719958537946884777L;
-
- protected V3Configuration() {
- super();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3ConfigurationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3ConfigurationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3ConfigurationImpl.java
new file mode 100644
index 0000000..e84fdd1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V3ConfigurationImpl.java
@@ -0,0 +1,57 @@
+/*
+ * 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.odata4.client.core;
+
+import org.apache.olingo.odata4.client.api.V3Configuration;
+
+public class V3ConfigurationImpl extends AbstractConfiguration implements V3Configuration {
+
+ private static final long serialVersionUID = -8719958537946884777L;
+
+ private static final String KEY_AS_SEGMENT = "keyAsSegment";
+
+ protected V3ConfigurationImpl() {
+ super();
+ }
+
+ /**
+ * Checks whether URIs contain entity key between parentheses (standard) or instead as additional segment. Example:
+ * http://services.odata.org/V4/OData/OData.svc/Products(0) or http://services.odata.org/V4/OData/OData.svc/Products/0
+ *
+ * @return whether URIs shall be built with entity key between parentheses (standard) or instead as additional
+ * segment.
+ */
+ @Override
+ public boolean isKeyAsSegment() {
+ return (Boolean) getProperty(KEY_AS_SEGMENT, false);
+ }
+
+ /**
+ * Sets whether URIs shall be built with entity key between parentheses (standard) or instead as additional segment.
+ * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
+ * http://services.odata.org/V4/OData/OData.svc/Products/0
+ *
+ * @param value 'TRUE' to use this feature.
+ */
+ @Override
+ public void setKeyAsSegment(final boolean value) {
+ setProperty(KEY_AS_SEGMENT, value);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4Configuration.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4Configuration.java
deleted file mode 100644
index 1aaf534..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4Configuration.java
+++ /dev/null
@@ -1,29 +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.odata4.client.core;
-
-public class V4Configuration extends AbstractConfiguration {
-
- private static final long serialVersionUID = -1134213707190176857L;
-
- protected V4Configuration() {
- super();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/edf8ab9d/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4ConfigurationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4ConfigurationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4ConfigurationImpl.java
new file mode 100644
index 0000000..f5f870c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/V4ConfigurationImpl.java
@@ -0,0 +1,31 @@
+/*
+ * 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.odata4.client.core;
+
+import org.apache.olingo.odata4.client.api.V4Configuration;
+
+public class V4ConfigurationImpl extends AbstractConfiguration implements V4Configuration {
+
+ private static final long serialVersionUID = -1134213707190176857L;
+
+ protected V4ConfigurationImpl() {
+ super();
+ }
+
+}