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