You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/03/13 08:58:41 UTC

[1/2] olingo-odata4 git commit: [OLINGO-902] changes due to OASIS issue ODATA-917 (date handling)

Repository: olingo-odata4
Updated Branches:
  refs/heads/OLINGO-856_ODataHandlerInAPI 8c143c961 -> 64617c814


[OLINGO-902] changes due to OASIS issue ODATA-917 (date handling)

Signed-off-by: Christian Amend <ch...@sap.com>


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

Branch: refs/heads/OLINGO-856_ODataHandlerInAPI
Commit: 62783067c2d729c3b2c6e4248455cf77536bde30
Parents: 92fa7cd
Author: Klaus Straubinger <kl...@sap.com>
Authored: Fri Mar 11 10:12:29 2016 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Fri Mar 11 13:15:43 2016 +0100

----------------------------------------------------------------------
 .../fit/tecsvc/client/FilterSystemQueryITCase.java     |  4 ++--
 .../server/core/uri/parser/ExpressionParser.java       |  4 +---
 .../expression/operation/BinaryOperator.java           | 13 +++++++++----
 3 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62783067/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FilterSystemQueryITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FilterSystemQueryITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FilterSystemQueryITCase.java
index 40dbfd1..9e3a4f5 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FilterSystemQueryITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FilterSystemQueryITCase.java
@@ -806,7 +806,7 @@ public class FilterSystemQueryITCase extends AbstractParamTecSvcITCase {
   @Test
   public void dateAddDuration() {
     ODataRetrieveResponse<ClientEntitySet> response =
-        sendRequest(ES_ALL_PRIM, "PropertyDateTimeOffset ge 2012-12-01 add duration'P1DT7H16M23S'");
+        sendRequest(ES_ALL_PRIM, "PropertyDate eq 2012-12-01 add duration'P1DT27H16M23S'");
     assertEquals(1, response.getBody().getEntities().size());
 
     final ClientEntity clientEntity = response.getBody().getEntities().get(0);
@@ -836,7 +836,7 @@ public class FilterSystemQueryITCase extends AbstractParamTecSvcITCase {
   @Test
   public void dateSubDuration() {
     ODataRetrieveResponse<ClientEntitySet> response =
-        sendRequest(ES_ALL_PRIM, "PropertyDateTimeOffset ge 2012-12-03 sub duration'P0DT16H43M37S'");
+        sendRequest(ES_ALL_PRIM, "PropertyDate eq 2012-12-03 sub duration'P0DT16H43M37S'");
     assertEquals(1, response.getBody().getEntities().size());
 
     final ClientEntity clientEntity = response.getBody().getEntities().get(0);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62783067/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ExpressionParser.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ExpressionParser.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ExpressionParser.java
index a0ec676..ee83a53 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ExpressionParser.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ExpressionParser.java
@@ -1201,13 +1201,11 @@ public class ExpressionParser {
       }
     }
     if ((isType(leftType, EdmPrimitiveTypeKind.DateTimeOffset)
+        || isType(leftType, EdmPrimitiveTypeKind.Date)
         || isType(leftType, EdmPrimitiveTypeKind.Duration))
         && isType(rightType, EdmPrimitiveTypeKind.Duration)) {
       return leftType;
     }
-    if (isType(leftType, EdmPrimitiveTypeKind.Date) && isType(rightType, EdmPrimitiveTypeKind.Duration)) {
-      return odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset);
-    }
     if (isSub
         && (isType(leftType, EdmPrimitiveTypeKind.DateTimeOffset)
             && isType(rightType, EdmPrimitiveTypeKind.DateTimeOffset)

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62783067/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/BinaryOperator.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/BinaryOperator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/BinaryOperator.java
index a870f1a..57f2196 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/BinaryOperator.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/BinaryOperator.java
@@ -36,6 +36,7 @@ import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand
 import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.primitive.EdmNull;
 
 public class BinaryOperator {
+  private static final int MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
   private static final int FACTOR_SECOND_INT = 1000;
   private static final BigDecimal FACTOR_SECOND = BigDecimal.valueOf(FACTOR_SECOND_INT);
   private static final BigInteger EDM_SBYTE_MIN = BigInteger.valueOf(Byte.MIN_VALUE);
@@ -260,15 +261,19 @@ public class BinaryOperator {
 
         result = new TypedOperand(new BigDecimal(millis).divide(FACTOR_SECOND), primDuration);
       } else if (right.is(primDuration) && operator == BinaryOperatorKind.ADD) {
+        // Add only whole days.
         long millis = left.getTypedValue(Calendar.class).getTimeInMillis()
-            + (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
+            + ((right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT)
+                / MILLISECONDS_PER_DAY) * MILLISECONDS_PER_DAY;
 
-        result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
+        result = new TypedOperand(new Timestamp(millis), primDate);
       } else if (right.is(primDuration) && operator == BinaryOperatorKind.SUB) {
+        // Subtract only whole days.
         long millis = left.getTypedValue(Calendar.class).getTimeInMillis()
-            - (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
+            - ((right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT)
+                / MILLISECONDS_PER_DAY) * MILLISECONDS_PER_DAY;
 
-        result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
+        result = new TypedOperand(new Timestamp(millis), primDate);
       }
     } else if (left.is(primDuration)) {
       if (right.is(primDuration) && operator == BinaryOperatorKind.ADD) {


[2/2] olingo-odata4 git commit: [OLINGO-856] Merge branch 'master' into OLINGO-856_ODataHandlerInAPI

Posted by mi...@apache.org.
[OLINGO-856] Merge branch 'master' into OLINGO-856_ODataHandlerInAPI


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

Branch: refs/heads/OLINGO-856_ODataHandlerInAPI
Commit: 64617c814025c44c0ac28a546bfdb03e60800aa0
Parents: 8c143c9 6278306
Author: mibo <mi...@apache.org>
Authored: Sun Mar 13 08:45:32 2016 +0100
Committer: mibo <mi...@apache.org>
Committed: Sun Mar 13 08:49:24 2016 +0100

----------------------------------------------------------------------
 .../fit/tecsvc/client/FilterSystemQueryITCase.java     |  4 ++--
 .../main/java/org/apache/olingo/server/api/OData.java  |  2 +-
 .../apache/olingo/server/api/debug/DebugSupport.java   |  5 ++---
 .../java/org/apache/olingo/server/core/ODataImpl.java  |  2 +-
 .../server/core/uri/parser/ExpressionParser.java       |  4 +---
 .../expression/operation/BinaryOperator.java           | 13 +++++++++----
 6 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/64617c81/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
----------------------------------------------------------------------
diff --cc lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
index 4921ac4,26f5f61..118f07a
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
@@@ -98,13 -98,6 +98,13 @@@ public abstract class OData 
    public abstract ODataHttpHandler createHandler(ServiceMetadata serviceMetadata);
  
    /**
 +   * Creates a new ODataHandler for handling OData requests.
 +   *
 +   * @param serviceMetadata - metadata object required to handle an OData request
 +   */
-   public abstract ODataHandler createBasicHandler(ServiceMetadata serviceMetadata);
++  public abstract ODataHandler createRawHandler(ServiceMetadata serviceMetadata);
 +
 +  /**
     * Creates a metadata object for this service.
     *
     * @param edmProvider a custom or default implementation for creating metadata

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/64617c81/lib/server-api/src/main/java/org/apache/olingo/server/api/debug/DebugSupport.java
----------------------------------------------------------------------
diff --cc lib/server-api/src/main/java/org/apache/olingo/server/api/debug/DebugSupport.java
index 7fa7cd6,8a62427..054c23a
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/debug/DebugSupport.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/debug/DebugSupport.java
@@@ -25,17 -24,17 +25,17 @@@ import org.apache.olingo.server.api.Oli
  /**
   * Register this interface to add debug support to your service.
   */
- public interface DebugSupport extends OlingoExtension {
+ public interface DebugSupport {
  
 -  public static final String ODATA_DEBUG_QUERY_PARAMETER = "odata-debug";
 -  public static final String ODATA_DEBUG_JSON = "json";
 -  public static final String ODATA_DEBUG_HTML = "html";
 -  public static final String ODATA_DEBUG_DOWNLOAD = "download";
 +  String ODATA_DEBUG_QUERY_PARAMETER = "odata-debug";
 +  String ODATA_DEBUG_JSON = "json";
 +  String ODATA_DEBUG_HTML = "html";
 +  String ODATA_DEBUG_DOWNLOAD = "download";
  
    /**
     * Initializes the debug support implementation.
     * Is called before {@link #isUserAuthorized()} and {@link #createDebugResponse(String, DebugInformation)}.
--   * @param odata
++   * @param odata related OData/Olingo service factory
     */
    void init(OData odata);
  
@@@ -53,5 -52,5 +53,4 @@@
     * @return a new debug response which will be sent to the client
     */
    ODataResponse createDebugResponse(String debugFormat, DebugInformation debugInfo);
--
  }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/64617c81/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataImpl.java
----------------------------------------------------------------------
diff --cc lib/server-core/src/main/java/org/apache/olingo/server/core/ODataImpl.java
index e1e5553,e5c5437..65037f6
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataImpl.java
@@@ -86,13 -84,8 +86,13 @@@ public class ODataImpl extends OData 
    }
  
    @Override
 -  public ODataHttpHandler createHandler(final ServiceMetadata edm) {
 -    return new ODataHttpHandlerImpl(this, edm);
 +  public ODataHttpHandler createHandler(final ServiceMetadata serviceMetadata) {
 +    return new ODataHttpHandlerImpl(this, serviceMetadata);
 +  }
 +
 +  @Override
-   public ODataHandler createBasicHandler(ServiceMetadata serviceMetadata) {
++  public ODataHandler createRawHandler(ServiceMetadata serviceMetadata) {
 +    return new ODataHandlerImpl(this, serviceMetadata, new ServerCoreDebugger(this));
    }
  
    @Override