You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/02/27 16:53:15 UTC

olingo-odata4 git commit: [OLINGO-575] Continue merging

Repository: olingo-odata4
Updated Branches:
  refs/heads/master 4833b45c2 -> 55c7d1073


[OLINGO-575] Continue merging


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/55c7d107
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/55c7d107
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/55c7d107

Branch: refs/heads/master
Commit: 55c7d10737541adffcb933c8bc369dd040f475a7
Parents: 4833b45
Author: Christian Amend <ch...@apache.org>
Authored: Fri Feb 27 16:52:48 2015 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Feb 27 16:52:48 2015 +0100

----------------------------------------------------------------------
 .../fit/tecsvc/client/NavigationITCase.java     |  10 +-
 .../olingo/client/api/CommonODataClient.java    |   8 +-
 .../retrieve/CommonRetrieveRequestFactory.java  | 142 --------------
 .../retrieve/RetrieveRequestFactory.java        | 107 ++++++++++-
 .../client/api/uri/CommonFilterArgFactory.java  |  83 ---------
 .../client/api/uri/CommonFilterFactory.java     |  59 ------
 .../olingo/client/api/uri/FilterArgFactory.java |  62 ++++++-
 .../olingo/client/api/uri/FilterFactory.java    |  35 +++-
 .../AbstractRetrieveRequestFactory.java         |  79 --------
 .../retrieve/RetrieveRequestFactoryImpl.java    |  69 +++++--
 .../core/uri/AbstractFilterArgFactory.java      | 185 -------------------
 .../client/core/uri/AbstractFilterFactory.java  | 113 -----------
 .../client/core/uri/FilterArgFactoryImpl.java   | 157 +++++++++++++++-
 .../client/core/uri/FilterFactoryImpl.java      |  86 ++++++++-
 14 files changed, 500 insertions(+), 695 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/NavigationITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/NavigationITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/NavigationITCase.java
index e12faa5..4c6b848 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/NavigationITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/NavigationITCase.java
@@ -41,7 +41,7 @@ public final class NavigationITCase extends AbstractBaseTestITCase {
   @Test
   public void oneLevelToEntity() throws Exception {
     final ODataRetrieveResponse<ODataEntity> response =
-        client.getRetrieveRequestFactory().<ODataEntity> getEntityRequest(
+        client.getRetrieveRequestFactory().getEntityRequest(
             client.newURIBuilder(TecSvcConst.BASE_URI)
                 .appendEntitySetSegment("ESAllPrim").appendKeySegment(32767)
                 .appendNavigationSegment("NavPropertyETTwoPrimOne").build())
@@ -59,7 +59,7 @@ public final class NavigationITCase extends AbstractBaseTestITCase {
   @Test
   public void oneLevelToEntityWithKey() throws Exception {
     final ODataRetrieveResponse<ODataEntity> response =
-        client.getRetrieveRequestFactory().<ODataEntity> getEntityRequest(
+        client.getRetrieveRequestFactory().getEntityRequest(
             client.newURIBuilder(TecSvcConst.BASE_URI)
                 .appendEntitySetSegment("ESAllPrim").appendKeySegment(32767)
                 .appendNavigationSegment("NavPropertyETTwoPrimMany").appendKeySegment(-365).build())
@@ -77,7 +77,7 @@ public final class NavigationITCase extends AbstractBaseTestITCase {
   @Test
   public void twoLevelsToEntityWithKey() throws Exception {
     final ODataRetrieveResponse<ODataEntity> response =
-        client.getRetrieveRequestFactory().<ODataEntity> getEntityRequest(
+        client.getRetrieveRequestFactory().getEntityRequest(
             client.newURIBuilder(TecSvcConst.BASE_URI)
                 .appendEntitySetSegment("ESTwoPrim").appendKeySegment(32767)
                 .appendNavigationSegment("NavPropertyETAllPrimOne")
@@ -96,7 +96,7 @@ public final class NavigationITCase extends AbstractBaseTestITCase {
   @Test
   public void twoLevelsToEntitySet() throws Exception {
     final ODataRetrieveResponse<ODataEntitySet> response =
-        client.getRetrieveRequestFactory().<ODataEntitySet> getEntitySetRequest(
+        client.getRetrieveRequestFactory().getEntitySetRequest(
             client.newURIBuilder(TecSvcConst.BASE_URI)
                 .appendEntitySetSegment("ESTwoPrim").appendKeySegment(32767)
                 .appendNavigationSegment("NavPropertyETAllPrimOne")
@@ -118,7 +118,7 @@ public final class NavigationITCase extends AbstractBaseTestITCase {
   @Test
   public void twoLevelsToProperty() throws Exception {
     final ODataRetrieveResponse<ODataProperty> response =
-        client.getRetrieveRequestFactory().<ODataProperty> getPropertyRequest(
+        client.getRetrieveRequestFactory().getPropertyRequest(
             client.newURIBuilder(TecSvcConst.BASE_URI)
                 .appendEntitySetSegment("ESKeyNav").appendKeySegment(1)
                 .appendNavigationSegment("NavPropertyETKeyNavOne")

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
index 3e8843a..05b3f7a 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
@@ -24,12 +24,12 @@ import org.apache.olingo.client.api.communication.request.batch.CommonBatchReque
 import org.apache.olingo.client.api.communication.request.cud.CommonCUDRequestFactory;
 import org.apache.olingo.client.api.communication.request.cud.CommonUpdateType;
 import org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory;
-import org.apache.olingo.client.api.communication.request.retrieve.CommonRetrieveRequestFactory;
+import org.apache.olingo.client.api.communication.request.retrieve.RetrieveRequestFactory;
 import org.apache.olingo.client.api.serialization.ClientODataDeserializer;
 import org.apache.olingo.client.api.serialization.ODataBinder;
 import org.apache.olingo.client.api.serialization.ODataReader;
 import org.apache.olingo.client.api.serialization.ODataWriter;
-import org.apache.olingo.client.api.uri.CommonFilterFactory;
+import org.apache.olingo.client.api.uri.FilterFactory;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.domain.ODataObjectFactory;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
@@ -53,7 +53,7 @@ public interface CommonODataClient<UT extends CommonUpdateType> {
 
   URIBuilder newURIBuilder(String serviceRoot);
   
-  CommonFilterFactory getFilterFactory();
+  FilterFactory getFilterFactory();
 
   ODataSerializer getSerializer(ODataFormat format);
 
@@ -67,7 +67,7 @@ public interface CommonODataClient<UT extends CommonUpdateType> {
 
   ODataObjectFactory getObjectFactory();
 
-  CommonRetrieveRequestFactory getRetrieveRequestFactory();
+  RetrieveRequestFactory getRetrieveRequestFactory();
 
   CommonCUDRequestFactory<UT> getCUDRequestFactory();
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/CommonRetrieveRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/CommonRetrieveRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/CommonRetrieveRequestFactory.java
deleted file mode 100644
index 2f98c3f..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/CommonRetrieveRequestFactory.java
+++ /dev/null
@@ -1,142 +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.api.communication.request.retrieve;
-
-import java.net.URI;
-
-import org.apache.olingo.commons.api.domain.ODataEntity;
-import org.apache.olingo.commons.api.domain.ODataEntitySet;
-import org.apache.olingo.commons.api.domain.ODataProperty;
-
-/**
- * OData request factory class.
- */
-public interface CommonRetrieveRequestFactory {
-
-  /**
-   * Gets a metadata request instance.
-   * <br/>
-   * Compared to {@link #getMetadataRequest(java.lang.String)}, this method returns a request instance for fetching
-   * low-level metadata representation.
-   *
-   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
-   * service.
-   * @return new {@link XMLMetadataRequest} instance.
-   */
-  XMLMetadataRequest getXMLMetadataRequest(String serviceRoot);
-
-  /**
-   * Gets a metadata request instance.
-   *
-   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
-   * service.
-   * @return new {@link EdmMetadataRequest} instance.
-   */
-  EdmMetadataRequest getMetadataRequest(String serviceRoot);
-
-  /**
-   * Gets a service document request instance.
-   *
-   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
-   * service.
-   * @return new {@link ODataServiceDocumentRequest} instance.
-   */
-  ODataServiceDocumentRequest getServiceDocumentRequest(String serviceRoot);
-
-  /**
-   * Gets a uri request returning a set of one or more OData entities.
-   *
-   * @param <T> concrete ODataEntitySet implementation.
-   * @param uri request URI.
-   * @return new {@link ODataEntitySetRequest} instance.
-   */
-  <T extends ODataEntitySet> ODataEntitySetRequest<T> getEntitySetRequest(URI uri);
-
-  /**
-   * Gets a uri request returning a set of one or more OData entities.
-   * <br/>
-   * Returned request gives the possibility to consume entities iterating on them without parsing and loading in memory
-   * the entire entity set.
-   *
-   * @param <ES> concreate ODataEntitySet implementation.
-   * @param <E> concrete ODataEntity implementation.
-   * @param uri request URI.
-   * @return new {@link ODataEntitySetIteratorRequest} instance.
-   */
-  <ES extends ODataEntitySet, E extends ODataEntity>
-          ODataEntitySetIteratorRequest<ES, E> getEntitySetIteratorRequest(URI uri);
-
-  /**
-   * Gets a uri request returning a single OData entity.
-   *
-   * @param <T> concrete ODataEntity implementation.
-   * @param uri request URI.
-   * @return new {@link ODataEntityRequest} instance.
-   */
-  <T extends ODataEntity> ODataEntityRequest<T> getEntityRequest(URI uri);
-
-  /**
-   * Gets a uri request returning a single OData entity property.
-   *
-   * @param <T> concrete ODataProperty implementation.
-   * @param uri request URI.
-   * @return new {@link ODataPropertyRequest} instance.
-   */
-  <T extends ODataProperty> ODataPropertyRequest<T> getPropertyRequest(URI uri);
-  
-  /**
-   * Gets a uri request returning a single OData entity property value.
-   *
-   * @param uri request URI.
-   * @return new {@link ODataValueRequest} instance.
-   */
-  ODataValueRequest getPropertyValueRequest(URI uri);
-
-  /**
-   * Gets a uri request returning a single OData entity property value.
-   *
-   * @param uri request URI.
-   * @return new {@link ODataValueRequest} instance.
-   */
-  ODataValueRequest getValueRequest(URI uri);
-
-  /**
-   * Gets a uri request returning a media stream.
-   *
-   * @param uri request URI.
-   * @return new {@link ODataMediaRequest} instance.
-   */
-  ODataMediaRequest getMediaRequest(URI uri);
-  
-  /**
-   * Gets a uri request returning a media entity.
-   *
-   * @param uri request URI.
-   * @return new {@link ODataMediaRequest} instance.
-   */
-  ODataMediaRequest getMediaEntityRequest(URI uri);
-
-  /**
-   * Implements a raw request request without specifying any return type.
-   *
-   * @param uri request URI.
-   * @return new {@link ODataRawRequest} instance.
-   */
-  ODataRawRequest getRawRequest(URI uri);
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/RetrieveRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/RetrieveRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/RetrieveRequestFactory.java
index 58cd835..4d0db79 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/RetrieveRequestFactory.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/RetrieveRequestFactory.java
@@ -25,21 +25,114 @@ import org.apache.olingo.commons.api.domain.ODataEntitySet;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.domain.ODataSingleton;
 
-public interface RetrieveRequestFactory extends CommonRetrieveRequestFactory {
+public interface RetrieveRequestFactory {
 
-  @Override
+  /**
+   * Gets a metadata request instance.
+   * <br/>
+   * Compared to {@link #getMetadataRequest(java.lang.String)}, this method returns a request instance for fetching
+   * low-level metadata representation.
+   *
+   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
+   * service.
+   * @return new {@link XMLMetadataRequest} instance.
+   */
+  XMLMetadataRequest getXMLMetadataRequest(String serviceRoot);
+
+  /**
+   * Gets a metadata request instance.
+   *
+   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
+   * service.
+   * @return new {@link EdmMetadataRequest} instance.
+   */
+  EdmMetadataRequest getMetadataRequest(String serviceRoot);
+
+  /**
+   * Gets a service document request instance.
+   *
+   * @param serviceRoot absolute URL (schema, host and port included) representing the location of the root of the data
+   * service.
+   * @return new {@link ODataServiceDocumentRequest} instance.
+   */
+  ODataServiceDocumentRequest getServiceDocumentRequest(String serviceRoot);
+
+  /**
+   * Gets a uri request returning a set of one or more OData entities.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataEntitySetRequest} instance.
+   */
   ODataEntitySetRequest<ODataEntitySet> getEntitySetRequest(URI uri);
 
-  @Override
+  /**
+   * Gets a uri request returning a set of one or more OData entities.
+   * <br/>
+   * Returned request gives the possibility to consume entities iterating on them without parsing and loading in memory
+   * the entire entity set.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataEntitySetIteratorRequest} instance.
+   */
   ODataEntitySetIteratorRequest<ODataEntitySet, ODataEntity> getEntitySetIteratorRequest(URI uri);
 
-  ODataEntityRequest<ODataSingleton> getSingletonRequest(URI uri);
-
-  @Override
+  /**
+   * Gets a uri request returning a single OData entity.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataEntityRequest} instance.
+   */
   ODataEntityRequest<ODataEntity> getEntityRequest(URI uri);
 
-  @Override
+  /**
+   * Gets a uri request returning a single OData entity property.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataPropertyRequest} instance.
+   */
   ODataPropertyRequest<ODataProperty> getPropertyRequest(URI uri);
+  
+  /**
+   * Gets a uri request returning a single OData entity property value.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataValueRequest} instance.
+   */
+  ODataValueRequest getPropertyValueRequest(URI uri);
+
+  /**
+   * Gets a uri request returning a single OData entity property value.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataValueRequest} instance.
+   */
+  ODataValueRequest getValueRequest(URI uri);
+
+  /**
+   * Gets a uri request returning a media stream.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataMediaRequest} instance.
+   */
+  ODataMediaRequest getMediaRequest(URI uri);
+  
+  /**
+   * Gets a uri request returning a media entity.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataMediaRequest} instance.
+   */
+  ODataMediaRequest getMediaEntityRequest(URI uri);
+
+  /**
+   * Implements a raw request request without specifying any return type.
+   *
+   * @param uri request URI.
+   * @return new {@link ODataRawRequest} instance.
+   */
+  ODataRawRequest getRawRequest(URI uri);
+
+  ODataEntityRequest<ODataSingleton> getSingletonRequest(URI uri);
 
   ODataDeltaRequest getDeltaRequest(URI uri);
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterArgFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterArgFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterArgFactory.java
deleted file mode 100644
index dccb051..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterArgFactory.java
+++ /dev/null
@@ -1,83 +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.api.uri;
-
-public interface CommonFilterArgFactory {
-
-  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/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterFactory.java
deleted file mode 100644
index e65200d..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonFilterFactory.java
+++ /dev/null
@@ -1,59 +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.api.uri;
-
-/**
- * OData filter factory.
- */
-public interface CommonFilterFactory {
-
-  CommonFilterArgFactory getArgFactory();
-
-  URIFilter match(FilterArg arg);
-
-  URIFilter eq(String key, Object value);
-
-  URIFilter eq(FilterArg left, FilterArg right);
-
-  URIFilter ne(String key, Object value);
-
-  URIFilter ne(FilterArg left, FilterArg right);
-
-  URIFilter gt(String key, Object value);
-
-  URIFilter gt(FilterArg left, FilterArg right);
-
-  URIFilter ge(String key, Object value);
-
-  URIFilter ge(FilterArg left, FilterArg right);
-
-  URIFilter lt(String key, Object value);
-
-  URIFilter lt(FilterArg left, FilterArg right);
-
-  URIFilter le(String key, Object value);
-
-  URIFilter le(FilterArg left, FilterArg right);
-
-  URIFilter and(URIFilter left, URIFilter right);
-
-  URIFilter or(URIFilter left, URIFilter right);
-
-  URIFilter not(URIFilter filter);
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterArgFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterArgFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterArgFactory.java
index 3f1ac69..f03a78c 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterArgFactory.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterArgFactory.java
@@ -19,8 +19,68 @@
 package org.apache.olingo.client.api.uri;
 
 
-public interface FilterArgFactory extends CommonFilterArgFactory {
+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);
+  
   FilterArg contains(FilterArg first, FilterArg second);
 
   FilterArg fractionalseconds(FilterArg param);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterFactory.java
index b5829ed..252577c 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterFactory.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/FilterFactory.java
@@ -20,11 +20,42 @@ package org.apache.olingo.client.api.uri;
 
 import org.apache.olingo.commons.api.edm.EdmEnumType;
 
-public interface FilterFactory extends CommonFilterFactory {
+public interface FilterFactory {
 
-  @Override
   FilterArgFactory getArgFactory();
 
+  URIFilter match(FilterArg arg);
+
+  URIFilter eq(String key, Object value);
+
+  URIFilter eq(FilterArg left, FilterArg right);
+
+  URIFilter ne(String key, Object value);
+
+  URIFilter ne(FilterArg left, FilterArg right);
+
+  URIFilter gt(String key, Object value);
+
+  URIFilter gt(FilterArg left, FilterArg right);
+
+  URIFilter ge(String key, Object value);
+
+  URIFilter ge(FilterArg left, FilterArg right);
+
+  URIFilter lt(String key, Object value);
+
+  URIFilter lt(FilterArg left, FilterArg right);
+
+  URIFilter le(String key, Object value);
+
+  URIFilter le(FilterArg left, FilterArg right);
+
+  URIFilter and(URIFilter left, URIFilter right);
+
+  URIFilter or(URIFilter left, URIFilter right);
+
+  URIFilter not(URIFilter filter);
+  
   URIFilter has(String key, EdmEnumType enumType, String memberName);
 
   URIFilter has(FilterArg left, EdmEnumType enumType, String memberName);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractRetrieveRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractRetrieveRequestFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractRetrieveRequestFactory.java
deleted file mode 100644
index 02cdfff..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractRetrieveRequestFactory.java
+++ /dev/null
@@ -1,79 +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.communication.request.retrieve;
-
-import java.net.URI;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.communication.request.retrieve.CommonRetrieveRequestFactory;
-import org.apache.olingo.client.api.communication.request.retrieve.EdmMetadataRequest;
-import org.apache.olingo.client.api.communication.request.retrieve.ODataMediaRequest;
-import org.apache.olingo.client.api.communication.request.retrieve.ODataRawRequest;
-import org.apache.olingo.client.api.communication.request.retrieve.ODataServiceDocumentRequest;
-import org.apache.olingo.client.api.communication.request.retrieve.ODataValueRequest;
-import org.apache.olingo.client.core.uri.URIUtils;
-
-public abstract class AbstractRetrieveRequestFactory implements CommonRetrieveRequestFactory {
-
-  protected final CommonODataClient<?> client;
-
-  protected AbstractRetrieveRequestFactory(final CommonODataClient<?> client) {
-    this.client = client;
-  }
-
-  @Override
-  public ODataValueRequest getValueRequest(final URI uri) {
-    return new ODataValueRequestImpl(client, uri);
-  }
-
-  @Override
-  public ODataValueRequest getPropertyValueRequest(final URI uri) {
-    return getValueRequest(URIUtils.addValueSegment(uri));
-  }
-
-  @Override
-  public ODataMediaRequest getMediaRequest(final URI uri) {
-    return new ODataMediaRequestImpl(client, uri);
-  }
-
-  @Override
-  public ODataMediaRequest getMediaEntityRequest(final URI uri) {
-    return getMediaRequest(URIUtils.addValueSegment(uri));
-  }
-
-  @Override
-  public ODataRawRequest getRawRequest(final URI uri) {
-    return new ODataRawRequestImpl(client, uri);
-  }
-
-  @Override
-  public EdmMetadataRequest getMetadataRequest(final String serviceRoot) {
-    return new EdmMetadataRequestImpl(client, serviceRoot,
-            client.newURIBuilder(serviceRoot).appendMetadataSegment().build());
-  }
-
-  @Override
-  public ODataServiceDocumentRequest getServiceDocumentRequest(final String serviceRoot) {
-    return new ODataServiceDocumentRequestImpl(client,
-            StringUtils.isNotBlank(serviceRoot) && serviceRoot.endsWith("/")
-            ? client.newURIBuilder(serviceRoot).build()
-            : client.newURIBuilder(serviceRoot + "/").build());
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/RetrieveRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/RetrieveRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/RetrieveRequestFactoryImpl.java
index 7f5eb09..6b179ae 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/RetrieveRequestFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/RetrieveRequestFactoryImpl.java
@@ -1,18 +1,18 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -20,30 +20,77 @@ package org.apache.olingo.client.core.communication.request.retrieve;
 
 import java.net.URI;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.request.retrieve.EdmMetadataRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataDeltaRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetIteratorRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataMediaRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataPropertyRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataRawRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataServiceDocumentRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataValueRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.RetrieveRequestFactory;
 import org.apache.olingo.client.api.communication.request.retrieve.XMLMetadataRequest;
+import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.commons.api.domain.ODataEntity;
 import org.apache.olingo.commons.api.domain.ODataEntitySet;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.domain.ODataSingleton;
 
-public class RetrieveRequestFactoryImpl extends AbstractRetrieveRequestFactory
-        implements RetrieveRequestFactory {
+public class RetrieveRequestFactoryImpl implements RetrieveRequestFactory {
 
+  protected final ODataClient client;
+  
   public RetrieveRequestFactoryImpl(final ODataClient client) {
-    super(client);
+    this.client = client;
+  }
+
+  @Override
+  public ODataValueRequest getValueRequest(final URI uri) {
+    return new ODataValueRequestImpl(client, uri);
+  }
+
+  @Override
+  public ODataValueRequest getPropertyValueRequest(final URI uri) {
+    return getValueRequest(URIUtils.addValueSegment(uri));
+  }
+
+  @Override
+  public ODataMediaRequest getMediaRequest(final URI uri) {
+    return new ODataMediaRequestImpl(client, uri);
+  }
+
+  @Override
+  public ODataMediaRequest getMediaEntityRequest(final URI uri) {
+    return getMediaRequest(URIUtils.addValueSegment(uri));
+  }
+
+  @Override
+  public ODataRawRequest getRawRequest(final URI uri) {
+    return new ODataRawRequestImpl(client, uri);
+  }
+
+  @Override
+  public EdmMetadataRequest getMetadataRequest(final String serviceRoot) {
+    return new EdmMetadataRequestImpl(client, serviceRoot,
+        client.newURIBuilder(serviceRoot).appendMetadataSegment().build());
+  }
+
+  @Override
+  public ODataServiceDocumentRequest getServiceDocumentRequest(final String serviceRoot) {
+    return new ODataServiceDocumentRequestImpl(client,
+        StringUtils.isNotBlank(serviceRoot) && serviceRoot.endsWith("/")
+            ? client.newURIBuilder(serviceRoot).build()
+            : client.newURIBuilder(serviceRoot + "/").build());
   }
 
   @Override
   public XMLMetadataRequest getXMLMetadataRequest(final String serviceRoot) {
     return new XMLMetadataRequestImpl(((ODataClient) client),
-            client.newURIBuilder(serviceRoot).appendMetadataSegment().build());
+        client.newURIBuilder(serviceRoot).appendMetadataSegment().build());
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterArgFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterArgFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterArgFactory.java
deleted file mode 100644
index 182404c..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterArgFactory.java
+++ /dev/null
@@ -1,185 +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.uri;
-
-import org.apache.olingo.client.api.uri.CommonFilterArgFactory;
-import org.apache.olingo.client.api.uri.FilterArg;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-
-/**
- * OData filter arguments factory.
- */
-public abstract class AbstractFilterArgFactory implements CommonFilterArgFactory {
-
-  private final ODataServiceVersion version;
-
-  public AbstractFilterArgFactory(final ODataServiceVersion version) {
-    this.version = version;
-  }
-
-  @Override
-  public FilterArg _null() {
-    return new FilterConst("null");
-  }
-
-  @Override
-  public FilterArg property(final String propertyPath) {
-    return new FilterProperty(propertyPath);
-  }
-
-  @Override
-  public FilterArg literal(final Object value) {
-    return new FilterLiteral(version, value);
-  }
-
-  @Override
-  public FilterArg add(final FilterArg first, final FilterArg second) {
-    return new FilterOp("add", first, second);
-  }
-
-  @Override
-  public FilterArg sub(final FilterArg first, final FilterArg second) {
-    return new FilterOp("add", first, second);
-  }
-
-  @Override
-  public FilterArg mul(final FilterArg first, final FilterArg second) {
-    return new FilterOp("mul", first, second);
-  }
-
-  @Override
-  public FilterArg div(final FilterArg first, final FilterArg second) {
-    return new FilterOp("div", first, second);
-  }
-
-  @Override
-  public FilterArg mod(final FilterArg first, final FilterArg second) {
-    return new FilterOp("mod", first, second);
-  }
-
-  @Override
-  public FilterArg endswith(final FilterArg first, final FilterArg second) {
-    return new FilterFunction("endswith", first, second);
-  }
-
-  @Override
-  public FilterArg startswith(final FilterArg first, final FilterArg second) {
-    return new FilterFunction("startswith", first, second);
-  }
-
-  @Override
-  public FilterArg length(final FilterArg param) {
-    return new FilterFunction("length", param);
-  }
-
-  @Override
-  public FilterArg indexof(final FilterArg first, final FilterArg second) {
-    return new FilterFunction("indexof", first, second);
-  }
-
-  @Override
-  public FilterArg replace(final FilterArg first, final FilterArg second, final FilterArg third) {
-    return new FilterFunction("replace", first, second, third);
-  }
-
-  @Override
-  public FilterArg substring(final FilterArg arg, final FilterArg pos) {
-    return new FilterFunction("substring", arg, pos);
-  }
-
-  @Override
-  public FilterArg substring(final FilterArg arg, final FilterArg pos, final FilterArg length) {
-    return new FilterFunction("substring", arg, pos, length);
-  }
-
-  @Override
-  public FilterArg tolower(final FilterArg param) {
-    return new FilterFunction("tolower", param);
-  }
-
-  @Override
-  public FilterArg toupper(final FilterArg param) {
-    return new FilterFunction("toupper", param);
-  }
-
-  @Override
-  public FilterArg trim(final FilterArg param) {
-    return new FilterFunction("trim", param);
-  }
-
-  @Override
-  public FilterArg concat(final FilterArg first, final FilterArg second) {
-    return new FilterFunction("concat", first, second);
-  }
-
-  @Override
-  public FilterArg day(final FilterArg param) {
-    return new FilterFunction("day", param);
-  }
-
-  @Override
-  public FilterArg hour(final FilterArg param) {
-    return new FilterFunction("hour", param);
-  }
-
-  @Override
-  public FilterArg minute(final FilterArg param) {
-    return new FilterFunction("minute", param);
-  }
-
-  @Override
-  public FilterArg month(final FilterArg param) {
-    return new FilterFunction("month", param);
-  }
-
-  @Override
-  public FilterArg second(final FilterArg param) {
-    return new FilterFunction("second", param);
-  }
-
-  @Override
-  public FilterArg year(final FilterArg param) {
-    return new FilterFunction("year", param);
-  }
-
-  @Override
-  public FilterArg round(final FilterArg param) {
-    return new FilterFunction("round", param);
-  }
-
-  @Override
-  public FilterArg floor(final FilterArg param) {
-    return new FilterFunction("floor", param);
-  }
-
-  @Override
-  public FilterArg ceiling(final FilterArg param) {
-    return new FilterFunction("ceiling", param);
-  }
-
-  @Override
-  public FilterArg isof(final FilterArg type) {
-    return new FilterFunction("isof", type);
-  }
-
-  @Override
-  public FilterArg isof(final FilterArg expression, final FilterArg type) {
-    return new FilterFunction("isof", expression, type);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterFactory.java
deleted file mode 100644
index ff14d08..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractFilterFactory.java
+++ /dev/null
@@ -1,113 +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.uri;
-
-import org.apache.olingo.client.api.uri.CommonFilterFactory;
-import org.apache.olingo.client.api.uri.FilterArg;
-import org.apache.olingo.client.api.uri.URIFilter;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-
-public abstract class AbstractFilterFactory implements CommonFilterFactory {
-
-  protected final ODataServiceVersion version;
-
-  public AbstractFilterFactory(final ODataServiceVersion version) {
-    this.version = version;
-  }
-
-  @Override
-  public URIFilter match(final FilterArg arg) {
-    return new MatchFilter(arg);
-  }
-
-  @Override
-  public URIFilter eq(final String key, final Object value) {
-    return new EqFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter eq(final FilterArg left, final FilterArg right) {
-    return new EqFilter(left, right);
-  }
-
-  @Override
-  public URIFilter ne(final String key, final Object value) {
-    return new NeFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter ne(final FilterArg left, final FilterArg right) {
-    return new NeFilter(left, right);
-  }
-
-  @Override
-  public URIFilter gt(final String key, final Object value) {
-    return new GtFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter gt(final FilterArg left, final FilterArg right) {
-    return new GtFilter(left, right);
-  }
-
-  @Override
-  public URIFilter ge(final String key, final Object value) {
-    return new GeFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter ge(final FilterArg left, final FilterArg right) {
-    return new GeFilter(left, right);
-  }
-
-  @Override
-  public URIFilter lt(final String key, final Object value) {
-    return new LtFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter lt(final FilterArg left, final FilterArg right) {
-    return new LtFilter(left, right);
-  }
-
-  @Override
-  public URIFilter le(final String key, final Object value) {
-    return new LeFilter(getArgFactory().property(key), getArgFactory().literal(value));
-  }
-
-  @Override
-  public URIFilter le(final FilterArg left, final FilterArg right) {
-    return new LeFilter(left, right);
-  }
-
-  @Override
-  public URIFilter and(final URIFilter left, final URIFilter right) {
-    return new AndFilter(left, right);
-  }
-
-  @Override
-  public URIFilter or(final URIFilter left, final URIFilter right) {
-    return new OrFilter(left, right);
-  }
-
-  @Override
-  public URIFilter not(final URIFilter filter) {
-    return new NotFilter(filter);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterArgFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterArgFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterArgFactoryImpl.java
index be828b3..9eca1ba 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterArgFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterArgFactoryImpl.java
@@ -23,13 +23,166 @@ import org.apache.olingo.client.api.uri.FilterArgFactory;
 import org.apache.olingo.client.api.uri.URIFilter;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
-public class FilterArgFactoryImpl extends AbstractFilterArgFactory implements FilterArgFactory {
+public class FilterArgFactoryImpl implements FilterArgFactory {
+
+  private final ODataServiceVersion version;
 
   public FilterArgFactoryImpl(final ODataServiceVersion version) {
-    super(version);
+    this.version = version;
+  }
+
+
+  @Override
+  public FilterArg _null() {
+    return new FilterConst("null");
+  }
+
+  @Override
+  public FilterArg property(final String propertyPath) {
+    return new FilterProperty(propertyPath);
+  }
+
+  @Override
+  public FilterArg literal(final Object value) {
+    return new FilterLiteral(version, value);
+  }
+
+  @Override
+  public FilterArg add(final FilterArg first, final FilterArg second) {
+    return new FilterOp("add", first, second);
+  }
+
+  @Override
+  public FilterArg sub(final FilterArg first, final FilterArg second) {
+    return new FilterOp("add", first, second);
+  }
+
+  @Override
+  public FilterArg mul(final FilterArg first, final FilterArg second) {
+    return new FilterOp("mul", first, second);
+  }
+
+  @Override
+  public FilterArg div(final FilterArg first, final FilterArg second) {
+    return new FilterOp("div", first, second);
   }
 
   @Override
+  public FilterArg mod(final FilterArg first, final FilterArg second) {
+    return new FilterOp("mod", first, second);
+  }
+
+  @Override
+  public FilterArg endswith(final FilterArg first, final FilterArg second) {
+    return new FilterFunction("endswith", first, second);
+  }
+
+  @Override
+  public FilterArg startswith(final FilterArg first, final FilterArg second) {
+    return new FilterFunction("startswith", first, second);
+  }
+
+  @Override
+  public FilterArg length(final FilterArg param) {
+    return new FilterFunction("length", param);
+  }
+
+  @Override
+  public FilterArg indexof(final FilterArg first, final FilterArg second) {
+    return new FilterFunction("indexof", first, second);
+  }
+
+  @Override
+  public FilterArg replace(final FilterArg first, final FilterArg second, final FilterArg third) {
+    return new FilterFunction("replace", first, second, third);
+  }
+
+  @Override
+  public FilterArg substring(final FilterArg arg, final FilterArg pos) {
+    return new FilterFunction("substring", arg, pos);
+  }
+
+  @Override
+  public FilterArg substring(final FilterArg arg, final FilterArg pos, final FilterArg length) {
+    return new FilterFunction("substring", arg, pos, length);
+  }
+
+  @Override
+  public FilterArg tolower(final FilterArg param) {
+    return new FilterFunction("tolower", param);
+  }
+
+  @Override
+  public FilterArg toupper(final FilterArg param) {
+    return new FilterFunction("toupper", param);
+  }
+
+  @Override
+  public FilterArg trim(final FilterArg param) {
+    return new FilterFunction("trim", param);
+  }
+
+  @Override
+  public FilterArg concat(final FilterArg first, final FilterArg second) {
+    return new FilterFunction("concat", first, second);
+  }
+
+  @Override
+  public FilterArg day(final FilterArg param) {
+    return new FilterFunction("day", param);
+  }
+
+  @Override
+  public FilterArg hour(final FilterArg param) {
+    return new FilterFunction("hour", param);
+  }
+
+  @Override
+  public FilterArg minute(final FilterArg param) {
+    return new FilterFunction("minute", param);
+  }
+
+  @Override
+  public FilterArg month(final FilterArg param) {
+    return new FilterFunction("month", param);
+  }
+
+  @Override
+  public FilterArg second(final FilterArg param) {
+    return new FilterFunction("second", param);
+  }
+
+  @Override
+  public FilterArg year(final FilterArg param) {
+    return new FilterFunction("year", param);
+  }
+
+  @Override
+  public FilterArg round(final FilterArg param) {
+    return new FilterFunction("round", param);
+  }
+
+  @Override
+  public FilterArg floor(final FilterArg param) {
+    return new FilterFunction("floor", param);
+  }
+
+  @Override
+  public FilterArg ceiling(final FilterArg param) {
+    return new FilterFunction("ceiling", param);
+  }
+
+  @Override
+  public FilterArg isof(final FilterArg type) {
+    return new FilterFunction("isof", type);
+  }
+
+  @Override
+  public FilterArg isof(final FilterArg expression, final FilterArg type) {
+    return new FilterFunction("isof", expression, type);
+  }
+  
+  @Override
   public FilterArg contains(final FilterArg first, final FilterArg second) {
     return new FilterFunction("contains", first, second);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/55c7d107/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterFactoryImpl.java
index 5e9d24d..8ba09b8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterFactoryImpl.java
@@ -25,13 +25,95 @@ import org.apache.olingo.client.api.uri.URIFilter;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
-public class FilterFactoryImpl extends AbstractFilterFactory implements FilterFactory {
+public class FilterFactoryImpl implements FilterFactory {
 
+  private final ODataServiceVersion version;
+  
   public FilterFactoryImpl(ODataServiceVersion version) {
-    super(version);
+    this.version = version;
   }
 
   @Override
+  public URIFilter match(final FilterArg arg) {
+    return new MatchFilter(arg);
+  }
+
+  @Override
+  public URIFilter eq(final String key, final Object value) {
+    return new EqFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter eq(final FilterArg left, final FilterArg right) {
+    return new EqFilter(left, right);
+  }
+
+  @Override
+  public URIFilter ne(final String key, final Object value) {
+    return new NeFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter ne(final FilterArg left, final FilterArg right) {
+    return new NeFilter(left, right);
+  }
+
+  @Override
+  public URIFilter gt(final String key, final Object value) {
+    return new GtFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter gt(final FilterArg left, final FilterArg right) {
+    return new GtFilter(left, right);
+  }
+
+  @Override
+  public URIFilter ge(final String key, final Object value) {
+    return new GeFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter ge(final FilterArg left, final FilterArg right) {
+    return new GeFilter(left, right);
+  }
+
+  @Override
+  public URIFilter lt(final String key, final Object value) {
+    return new LtFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter lt(final FilterArg left, final FilterArg right) {
+    return new LtFilter(left, right);
+  }
+
+  @Override
+  public URIFilter le(final String key, final Object value) {
+    return new LeFilter(getArgFactory().property(key), getArgFactory().literal(value));
+  }
+
+  @Override
+  public URIFilter le(final FilterArg left, final FilterArg right) {
+    return new LeFilter(left, right);
+  }
+
+  @Override
+  public URIFilter and(final URIFilter left, final URIFilter right) {
+    return new AndFilter(left, right);
+  }
+
+  @Override
+  public URIFilter or(final URIFilter left, final URIFilter right) {
+    return new OrFilter(left, right);
+  }
+
+  @Override
+  public URIFilter not(final URIFilter filter) {
+    return new NotFilter(filter);
+  }
+  
+  @Override
   public FilterArgFactory getArgFactory() {
     return new FilterArgFactoryImpl(version);
   }