You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ra...@apache.org on 2015/04/20 16:28:28 UTC
[08/22] olingo-odata4 git commit: [OLINGO-603] Delete core
dependecies in Tec Scenario
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
index d47aa46..a203750 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
@@ -40,17 +40,12 @@ import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
-import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.data.ComplexValueImpl;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmString;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.deserializer.DeserializerException;
@@ -137,7 +132,7 @@ public class DataProvider {
final EntitySet entitySet = readAll(edmEntitySet);
final List<Entity> entities = entitySet.getEntities();
final Map<String, Object> newKey = findFreeComposedKey(entities, edmEntitySet.getEntityType());
- final Entity newEntity = new EntityImpl();
+ final Entity newEntity = new Entity();
newEntity.setType(edmEntityType.getFullQualifiedName().getFullQualifiedNameAsString());
for (final String keyName : edmEntityType.getKeyPredicateNames()) {
newEntity.addProperty(DataCreator.createPrimitive(keyName, newKey.get(keyName)));
@@ -154,17 +149,19 @@ public class DataProvider {
// Weak key construction
final HashMap<String, Object> keys = new HashMap<String, Object>();
for (final String keyName : entityType.getKeyPredicateNames()) {
- final EdmType type = entityType.getProperty(keyName).getType();
+ final FullQualifiedName typeName = entityType.getProperty(keyName).getType().getFullQualifiedName();
Object newValue = null;
- if (type instanceof EdmInt16 || type instanceof EdmInt32 || type instanceof EdmInt64) {
+ if (EdmPrimitiveTypeKind.Int16.getFullQualifiedName().equals(typeName)
+ || EdmPrimitiveTypeKind.Int32.getFullQualifiedName().equals(typeName)
+ || EdmPrimitiveTypeKind.Int64.getFullQualifiedName().equals(typeName)) {
// Integer keys
newValue = Integer.valueOf(1);
while (!isFree(newValue, keyName, entities)) {
newValue = ((Integer) newValue) + 1;
}
- } else if (type instanceof EdmString) {
+ } else if (EdmPrimitiveTypeKind.String.getFullQualifiedName().equals(typeName)) {
// String keys
newValue = String.valueOf(1);
int i = 0;
@@ -431,7 +428,7 @@ public class DataProvider {
private ComplexValue createComplexValue(final EdmProperty edmProperty, final ComplexValue complexValue,
final boolean patch) throws DataProviderException {
- final ComplexValueImpl result = new ComplexValueImpl();
+ final ComplexValue result = new ComplexValue();
final EdmComplexType edmType = (EdmComplexType) edmProperty.getType();
final List<Property> givenProperties = complexValue.getValue();
@@ -446,7 +443,7 @@ public class DataProvider {
updateProperty(innerEdmProperty, newProperty, currentProperty, patch);
} else {
if (innerEdmProperty.isNullable()) {
- // Check complex properties ... maybe null is not allowed
+ // Check complex properties ... may be null is not allowed
if (edmProperty.getType().getKind() == EdmTypeKind.COMPLEX) {
updateProperty(innerEdmProperty, newProperty, null, patch);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
index 5451d5d..1028cd8 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
@@ -6,9 +6,9 @@
* 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
@@ -27,8 +27,7 @@ import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.data.Property;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.uri.UriParameter;
import org.apache.olingo.server.tecsvc.data.DataProvider.DataProviderException;
@@ -38,7 +37,7 @@ public class FunctionData {
final Map<String, EntitySet> data) throws DataProviderException {
if (name.equals("UFCRTCollETTwoKeyNavParam")) {
final List<Entity> esTwoKeyNav = data.get("ESTwoKeyNav").getEntities();
- EntitySet result = new EntitySetImpl();
+ EntitySet result = new EntitySet();
final int endIndex = parameters.isEmpty() ? 0 : Short.valueOf(parameters.get(0).getText());
result.getEntities().addAll(
esTwoKeyNav.subList(0,
@@ -85,15 +84,16 @@ public class FunctionData {
DataCreator.createPrimitive("PropertyString", "UFCRTCTTwoPrim string value"));
} else if (name.equals("UFCRTCTTwoPrimParam")) {
try {
+
+ OData oData = OData.newInstance();
return DataCreator.createComplex(name,
- DataCreator.createPrimitive("PropertyInt16",
- EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int16).valueOfString(
- getParameterText("ParameterInt16", parameters),
+ DataCreator.createPrimitive("PropertyInt16", oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16)
+ .valueOfString(getParameterText("ParameterInt16", parameters),
null, null, null, null, null, Short.class)),
- DataCreator.createPrimitive("PropertyString",
- EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String).valueOfString(
- EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String).fromUriLiteral(
- getParameterText("ParameterString", parameters)),
+ DataCreator.createPrimitive("PropertyString", oData
+ .createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String)
+ .valueOfString(oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String)
+ .fromUriLiteral(getParameterText("ParameterString", parameters)),
null, null, null, null, null, String.class)));
} catch (final EdmPrimitiveTypeException e) {
throw new DataProviderException("Error in function " + name + ".", e);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
index a2774e3..858963d 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
@@ -34,7 +34,6 @@ import org.apache.olingo.commons.api.http.HttpContentType;
import org.apache.olingo.commons.api.http.HttpHeader;
import org.apache.olingo.commons.api.http.HttpMethod;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.ODataRequest;
import org.apache.olingo.server.api.ODataResponse;
@@ -77,11 +76,8 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
EntityProcessor, ActionEntityProcessor, MediaEntityProcessor,
ActionVoidProcessor {
- private final ServiceMetadata serviceMetadata;
-
public TechnicalEntityProcessor(final DataProvider dataProvider, ServiceMetadata serviceMetadata) {
- super(dataProvider);
- this.serviceMetadata = serviceMetadata;
+ super(dataProvider, serviceMetadata);
}
@Override
@@ -101,7 +97,7 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
} else {
// Modifying the original entitySet means modifying the "database", so we have to make a shallow
// copy of the entity set (new EntitySet, but exactly the same data)
- EntitySet entitySet = new EntitySetImpl();
+ EntitySet entitySet = new EntitySet();
entitySet.getEntities().addAll(entitySetInitial.getEntities());
// Apply system query options
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java
index 8a9968f..303800f 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java
@@ -6,9 +6,9 @@
* 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
@@ -40,7 +40,6 @@ import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.commons.api.format.ODataFormat;
import org.apache.olingo.commons.api.http.HttpHeader;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.ODataRequest;
import org.apache.olingo.server.api.ODataResponse;
@@ -82,12 +81,9 @@ public class TechnicalPrimitiveComplexProcessor extends TechnicalProcessor
ComplexProcessor, ActionComplexProcessor,
ComplexCollectionProcessor, ActionComplexCollectionProcessor {
- private final ServiceMetadata serviceMetadata;
-
public TechnicalPrimitiveComplexProcessor(final DataProvider dataProvider,
ServiceMetadata serviceMetadata) {
- super(dataProvider);
- this.serviceMetadata = serviceMetadata;
+ super(dataProvider, serviceMetadata);
}
@Override
@@ -251,7 +247,7 @@ public class TechnicalPrimitiveComplexProcessor extends TechnicalProcessor
.build()).getContent());
break;
case COMPLEX:
- response.setContent(serializer.complex(this.serviceMetadata,(EdmComplexType) type, property,
+ response.setContent(serializer.complex(this.serviceMetadata, (EdmComplexType) type, property,
ComplexSerializerOptions.with().contextURL(contextURL)
.expand(expand).select(select)
.build()).getContent());
@@ -388,7 +384,7 @@ public class TechnicalPrimitiveComplexProcessor extends TechnicalProcessor
final EdmReturnType returnType = resourceParts.get(0) instanceof UriResourceFunction ?
((UriResourceFunction) resourceParts.get(0)).getFunction().getReturnType() : null;
final FixedFormatSerializer serializer = odata.createFixedFormatSerializer();
- response.setContent(type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Binary) ?
+ response.setContent(type == odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Binary) ?
serializer.binary((byte[]) property.getValue()) :
serializer.primitiveValue(type, property.getValue(),
PrimitiveValueSerializerOptions.with()
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
index 4fb2e5e..33cd98f 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
@@ -54,6 +54,11 @@ public abstract class TechnicalProcessor implements Processor {
protected TechnicalProcessor(final DataProvider dataProvider) {
this.dataProvider = dataProvider;
}
+
+ protected TechnicalProcessor(final DataProvider dataProvider, ServiceMetadata serviceMetadata) {
+ this.dataProvider = dataProvider;
+ this.serviceMetadata = serviceMetadata;
+ }
@Override
public void init(final OData odata, final ServiceMetadata serviceMetadata) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/ExpandSystemQueryOptionHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/ExpandSystemQueryOptionHandler.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/ExpandSystemQueryOptionHandler.java
index ce1b774..e6b9849 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/ExpandSystemQueryOptionHandler.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/ExpandSystemQueryOptionHandler.java
@@ -31,9 +31,6 @@ import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.uri.UriResource;
import org.apache.olingo.server.api.uri.UriResourceNavigation;
@@ -132,9 +129,7 @@ public class ExpandSystemQueryOptionHandler {
public Entity transformEntityGraphToTree(final Entity entity, EdmBindingTarget edmEntitySet,
final ExpandOption expand) throws ODataApplicationException {
-
final Entity newEntity = newEntity(entity);
-
if (hasExpandItems(expand)) {
final boolean expandAll = expandAll(expand);
final Set<String> expanded = expandAll ? null : getExpandedPropertyNames(expand.getExpandItems());
@@ -167,7 +162,7 @@ public class ExpandSystemQueryOptionHandler {
}
public EntitySet newEntitySet(final EntitySet entitySet) {
- final EntitySet newEntitySet = new EntitySetImpl();
+ final EntitySet newEntitySet = new EntitySet();
newEntitySet.setCount(entitySet.getCount());
newEntitySet.setDeltaLink(entitySet.getDeltaLink());
newEntitySet.setNext(entitySet.getNext());
@@ -176,7 +171,7 @@ public class ExpandSystemQueryOptionHandler {
}
private Entity newEntity(final Entity entity) {
- final Entity newEntity = new EntityImpl();
+ final Entity newEntity = new Entity();
newEntity.getProperties().addAll(entity.getProperties());
newEntity.getAnnotations().addAll(entity.getAnnotations());
@@ -195,7 +190,7 @@ public class ExpandSystemQueryOptionHandler {
}
private Link newLink(Link link) {
- final Link newLink = new LinkImpl();
+ final Link newLink = new Link();
newLink.setMediaETag(link.getMediaETag());
newLink.setTitle(link.getTitle());
newLink.setType(link.getType());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/TypedOperand.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/TypedOperand.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/TypedOperand.java
index d45e8a9..6391390 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/TypedOperand.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/TypedOperand.java
@@ -26,14 +26,6 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDouble;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.primitive.EdmNull;
@@ -73,13 +65,11 @@ public class TypedOperand extends VisitorOperand {
Object newValue = null;
for (EdmPrimitiveType asType : asTypes) {
// Use BigDecimal for unlimited precision
- if (asType.equals(EdmDouble.getInstance())
- || asType.equals(EdmSingle.getInstance())
- || asType.equals(EdmDecimal.getInstance())) {
-
+ if (asType.equals(primDouble) || asType.equals(primSingle) || asType.equals(primDecimal)) {
+
try {
newValue = new BigDecimal(value.toString());
- } catch(NumberFormatException e) {
+ } catch (NumberFormatException e) {
// Nothing to do
}
} else {
@@ -117,18 +107,18 @@ public class TypedOperand extends VisitorOperand {
return this;
}
- if (type.equals(EdmDouble.getInstance()) || oType.equals(EdmDouble.getInstance())) {
- return asTypedOperand(EdmDouble.getInstance());
- } else if (type.equals(EdmSingle.getInstance()) || oType.equals(EdmSingle.getInstance())) {
- return asTypedOperand(EdmSingle.getInstance());
- } else if (type.equals(EdmDecimal.getInstance()) || oType.equals(EdmDecimal.getInstance())) {
- return asTypedOperand(EdmDecimal.getInstance());
- } else if (type.equals(EdmInt64.getInstance()) || oType.equals(EdmInt64.getInstance())) {
- return asTypedOperand(EdmInt64.getInstance());
- } else if (type.equals(EdmInt32.getInstance()) || oType.equals(EdmInt32.getInstance())) {
- return asTypedOperand(EdmInt32.getInstance());
- } else if (type.equals(EdmInt16.getInstance()) || oType.equals(EdmInt16.getInstance())) {
- return asTypedOperand(EdmInt16.getInstance());
+ if (type.equals(primDouble) || oType.equals(primDouble)) {
+ return asTypedOperand(primDouble);
+ } else if (type.equals(primSingle) || oType.equals(primSingle)) {
+ return asTypedOperand(primSingle);
+ } else if (type.equals(primDecimal) || oType.equals(primDecimal)) {
+ return asTypedOperand(primDecimal);
+ } else if (type.equals(primInt64) || oType.equals(primInt64)) {
+ return asTypedOperand(primInt64);
+ } else if (type.equals(primInt32) || oType.equals(primInt32)) {
+ return asTypedOperand(primInt32);
+ } else if (type.equals(primInt16) || oType.equals(primInt16)) {
+ return asTypedOperand(primInt16);
} else {
return asTypedOperand((EdmPrimitiveType) type);
}
@@ -151,17 +141,19 @@ public class TypedOperand extends VisitorOperand {
}
public boolean isIntegerType() {
- return is(EdmByte.getInstance(),
- EdmSByte.getInstance(),
- EdmInt16.getInstance(),
- EdmInt32.getInstance(),
- EdmInt64.getInstance());
+ return is(
+ primByte,
+ primSByte,
+ primInt16,
+ primInt32,
+ primInt64);
}
public boolean isDecimalType() {
- return is(EdmSingle.getInstance(),
- EdmDouble.getInstance(),
- EdmDecimal.getInstance());
+ return is(
+ primSingle,
+ primDouble,
+ primDecimal);
}
public boolean is(EdmPrimitiveType... types) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/UntypedOperand.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/UntypedOperand.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/UntypedOperand.java
index ddb33af..f9652da 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/UntypedOperand.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/UntypedOperand.java
@@ -23,20 +23,6 @@ import java.util.Locale;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmBoolean;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDate;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTimeOffset;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDouble;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDuration;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmString;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmTimeOfDay;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.primitive.EdmNull;
@@ -84,65 +70,65 @@ public class UntypedOperand extends VisitorOperand {
}
// String
- if ((newValue = tryCast(literal, EdmString.getInstance())) != null) {
- return new TypedOperand(newValue, EdmString.getInstance());
+ if ((newValue = tryCast(literal, primString)) != null) {
+ return new TypedOperand(newValue, primString);
}
// Boolean
- if ((newValue = tryCast(literal, EdmBoolean.getInstance())) != null) {
- return new TypedOperand(newValue, EdmBoolean.getInstance());
+ if ((newValue = tryCast(literal, primBoolean)) != null) {
+ return new TypedOperand(newValue, primBoolean);
}
// Date
- if ((newValue = tryCast(literal, EdmDateTimeOffset.getInstance())) != null) {
- return new TypedOperand(newValue, EdmDateTimeOffset.getInstance());
+ if ((newValue = tryCast(literal, primDateTimeOffset)) != null) {
+ return new TypedOperand(newValue, primDateTimeOffset);
}
- if ((newValue = tryCast(literal, EdmDate.getInstance())) != null) {
- return new TypedOperand(newValue, EdmDate.getInstance());
+ if ((newValue = tryCast(literal, primDate)) != null) {
+ return new TypedOperand(newValue, primDate);
}
- if ((newValue = tryCast(literal, EdmTimeOfDay.getInstance())) != null) {
- return new TypedOperand(newValue, EdmTimeOfDay.getInstance());
+ if ((newValue = tryCast(literal, primTimeOfDay)) != null) {
+ return new TypedOperand(newValue, primTimeOfDay);
}
- if ((newValue = tryCast(literal, EdmDuration.getInstance())) != null) {
- return new TypedOperand(newValue, EdmDuration.getInstance());
+ if ((newValue = tryCast(literal, primDuration)) != null) {
+ return new TypedOperand(newValue, primDuration);
}
// Integer
- if ((newValue = tryCast(literal, EdmSByte.getInstance())) != null) {
- return new TypedOperand(newValue, EdmSByte.getInstance());
+ if ((newValue = tryCast(literal, primSByte)) != null) {
+ return new TypedOperand(newValue, primSByte);
}
- if ((newValue = tryCast(literal, EdmByte.getInstance())) != null) {
- return new TypedOperand(newValue, EdmByte.getInstance());
+ if ((newValue = tryCast(literal, primByte)) != null) {
+ return new TypedOperand(newValue, primByte);
}
- if ((newValue = tryCast(literal, EdmInt16.getInstance())) != null) {
- return new TypedOperand(newValue, EdmInt16.getInstance());
+ if ((newValue = tryCast(literal, primInt16)) != null) {
+ return new TypedOperand(newValue, primInt16);
}
- if ((newValue = tryCast(literal, EdmInt32.getInstance())) != null) {
- return new TypedOperand(newValue, EdmInt32.getInstance());
+ if ((newValue = tryCast(literal, primInt32)) != null) {
+ return new TypedOperand(newValue, primInt32);
}
- if ((newValue = tryCast(literal, EdmInt64.getInstance())) != null) {
- return new TypedOperand(newValue, EdmInt64.getInstance());
+ if ((newValue = tryCast(literal, primInt64)) != null) {
+ return new TypedOperand(newValue, primInt64);
}
// Decimal
- if ((newValue = tryCast(literal, EdmDecimal.getInstance())) != null) {
- return new TypedOperand(newValue, EdmDecimal.getInstance());
+ if ((newValue = tryCast(literal, primDecimal)) != null) {
+ return new TypedOperand(newValue, primDecimal);
}
// Float
- if ((newValue = tryCast(literal, EdmSingle.getInstance())) != null) {
- return new TypedOperand(newValue, EdmSingle.getInstance());
+ if ((newValue = tryCast(literal, primSingle)) != null) {
+ return new TypedOperand(newValue, primSingle);
}
- if ((newValue = tryCast(literal, EdmDouble.getInstance())) != null) {
- return new TypedOperand(newValue, EdmDouble.getInstance());
+ if ((newValue = tryCast(literal, primDouble)) != null) {
+ return new TypedOperand(newValue, primDouble);
}
throw new ODataApplicationException("Could not determine type for literal " + literal,
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/VisitorOperand.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/VisitorOperand.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/VisitorOperand.java
index ed9f60e..5c0e65a 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/VisitorOperand.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operand/VisitorOperand.java
@@ -24,32 +24,57 @@ import java.util.HashMap;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.EdmType;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDouble;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
public abstract class VisitorOperand {
final static private HashMap<EdmType, Class<?>> defaultTypeMapping = new HashMap<EdmType, Class<?>>();
protected Object value;
+ protected static final OData oData;
+ protected static final EdmPrimitiveType primString;
+ protected static final EdmPrimitiveType primBoolean;
+ protected static final EdmPrimitiveType primDateTimeOffset;
+ protected static final EdmPrimitiveType primDate;
+ protected static final EdmPrimitiveType primTimeOfDay;
+ protected static final EdmPrimitiveType primDuration;
+ protected static final EdmPrimitiveType primSByte;
+ protected static final EdmPrimitiveType primByte;
+ protected static final EdmPrimitiveType primInt16;
+ protected static final EdmPrimitiveType primInt32;
+ protected static final EdmPrimitiveType primInt64;
+ protected static final EdmPrimitiveType primDecimal;
+ protected static final EdmPrimitiveType primSingle;
+ protected static final EdmPrimitiveType primDouble;
static {
- defaultTypeMapping.put(EdmByte.getInstance(), BigInteger.class);
- defaultTypeMapping.put(EdmSByte.getInstance(), BigInteger.class);
- defaultTypeMapping.put(EdmInt16.getInstance(), BigInteger.class);
- defaultTypeMapping.put(EdmInt32.getInstance(), BigInteger.class);
- defaultTypeMapping.put(EdmInt64.getInstance(), BigInteger.class);
+ oData = OData.newInstance();
+ primString = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String);
+ primBoolean = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean);
+ primDateTimeOffset = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset);
+ primDate = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date);
+ primTimeOfDay = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay);
+ primDuration = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration);
+ primSByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte);
+ primByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte);
+ primInt16 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16);
+ primInt32 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32);
+ primInt64 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64);
+ primDecimal = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal);
+ primSingle = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single);
+ primDouble = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double);
+
+ defaultTypeMapping.put(primByte, BigInteger.class);
+ defaultTypeMapping.put(primSByte, BigInteger.class);
+ defaultTypeMapping.put(primInt16, BigInteger.class);
+ defaultTypeMapping.put(primInt32, BigInteger.class);
+ defaultTypeMapping.put(primInt64, BigInteger.class);
- defaultTypeMapping.put(EdmSingle.getInstance(), BigDecimal.class);
- defaultTypeMapping.put(EdmDouble.getInstance(), BigDecimal.class);
- defaultTypeMapping.put(EdmDecimal.getInstance(), BigDecimal.class);
+ defaultTypeMapping.put(primSingle, BigDecimal.class);
+ defaultTypeMapping.put(primDouble, BigDecimal.class);
+ defaultTypeMapping.put(primDecimal, BigDecimal.class);
}
public VisitorOperand(Object value) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/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 9d9e23f..6d49243 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
@@ -24,19 +24,11 @@ import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Locale;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmBoolean;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDate;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTimeOffset;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDouble;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDuration;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSByte;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.TypedOperand;
@@ -62,6 +54,40 @@ public class BinaryOperator {
private static final int EQUALS = 0;
private static final int LESS_THAN = -1;
private static final int GREATER_THAN = 1;
+
+ protected static final OData oData;
+ protected static final EdmPrimitiveType primString;
+ protected static final EdmPrimitiveType primBoolean;
+ protected static final EdmPrimitiveType primDateTimeOffset;
+ protected static final EdmPrimitiveType primDate;
+ protected static final EdmPrimitiveType primTimeOfDay;
+ protected static final EdmPrimitiveType primDuration;
+ protected static final EdmPrimitiveType primSByte;
+ protected static final EdmPrimitiveType primByte;
+ protected static final EdmPrimitiveType primInt16;
+ protected static final EdmPrimitiveType primInt32;
+ protected static final EdmPrimitiveType primInt64;
+ protected static final EdmPrimitiveType primDecimal;
+ protected static final EdmPrimitiveType primSingle;
+ protected static final EdmPrimitiveType primDouble;
+
+ static {
+ oData = OData.newInstance();
+ primString = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String);
+ primBoolean = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean);
+ primDateTimeOffset = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset);
+ primDate = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date);
+ primTimeOfDay = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay);
+ primDuration = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration);
+ primSByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte);
+ primByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte);
+ primInt16 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16);
+ primInt32 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32);
+ primInt64 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64);
+ primDecimal = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal);
+ primSingle = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single);
+ primDouble = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double);
+ }
private TypedOperand right;
private TypedOperand left;
@@ -77,14 +103,14 @@ public class BinaryOperator {
public VisitorOperand andOperator() throws ODataApplicationException {
Boolean result = null;
- if (left.is(EdmBoolean.getInstance()) && right.is(EdmBoolean.getInstance())) {
+ if (left.is(primBoolean) && right.is(primBoolean)) {
if (Boolean.TRUE.equals(left.getValue()) && Boolean.TRUE.equals(right.getValue())) {
result = true;
} else if (Boolean.FALSE.equals(left.getValue()) || Boolean.FALSE.equals(right.getValue())) {
result = false;
}
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
} else {
throw new ODataApplicationException("Add operator needs two binary operands",
HttpStatusCode.BAD_REQUEST.getStatusCode(), Locale.ROOT);
@@ -93,14 +119,14 @@ public class BinaryOperator {
public VisitorOperand orOperator() throws ODataApplicationException {
Boolean result = null;
- if (left.is(EdmBoolean.getInstance()) && right.is(EdmBoolean.getInstance())) {
+ if (left.is(primBoolean) && right.is(primBoolean)) {
if (Boolean.TRUE.equals(left.getValue()) || Boolean.TRUE.equals(right.getValue())) {
result = true;
} else if (Boolean.FALSE.equals(left.getValue()) && Boolean.FALSE.equals(right.getValue())) {
result = false;
}
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
} else {
throw new ODataApplicationException("Or operator needs two binary operands",
HttpStatusCode.BAD_REQUEST.getStatusCode(), Locale.ROOT);
@@ -109,12 +135,12 @@ public class BinaryOperator {
public VisitorOperand equalsOperator() {
final boolean result = isBinaryComparisonNecessary() && binaryComparison(EQUALS);
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
}
public VisitorOperand notEqualsOperator() {
final VisitorOperand equalsOperator = equalsOperator();
- return new TypedOperand(!(Boolean) equalsOperator.getValue(), EdmBoolean.getInstance());
+ return new TypedOperand(!(Boolean) equalsOperator.getValue(), primBoolean);
}
private boolean isBinaryComparisonNecessary() {
@@ -124,22 +150,22 @@ public class BinaryOperator {
public VisitorOperand greaterEqualsOperator() {
final boolean result = isBinaryComparisonNecessary() && binaryComparison(GREATER_THAN, EQUALS);
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
}
public VisitorOperand greaterThanOperator() {
final boolean result = isBinaryComparisonNecessary() && binaryComparison(GREATER_THAN);
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
}
public VisitorOperand lessEqualsOperator() {
final boolean result = isBinaryComparisonNecessary() && binaryComparison(LESS_THAN, EQUALS);
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
}
public VisitorOperand lessThanOperator() {
final boolean result = isBinaryComparisonNecessary() && binaryComparison(LESS_THAN);
- return new TypedOperand(result, EdmBoolean.getInstance());
+ return new TypedOperand(result, primBoolean);
}
private boolean binaryComparison(int... expect) {
@@ -176,7 +202,7 @@ public class BinaryOperator {
} else if (left.isDecimalType()) {
final BigDecimal result = decimalArithmeticOperation(operator);
return new TypedOperand(result, determineResultType(result, left));
- } else if (left.is(EdmDate.getInstance(), EdmDuration.getInstance(), EdmDateTimeOffset.getInstance())) {
+ } else if (left.is(primDate, primDuration, primDateTimeOffset)) {
return dateArithmeticOperation(operator);
} else {
throw new ODataApplicationException("Invalid type", HttpStatusCode.BAD_REQUEST.getStatusCode(),
@@ -190,81 +216,81 @@ public class BinaryOperator {
if (leftOperand.isDecimalType()) {
final BigDecimal value = (BigDecimal) arithmeticResult;
if (value.compareTo(EDM_SINGLE_MIN) >= 0 && value.compareTo(EDM_SINGLE_MAX) <= 0) {
- return EdmSingle.getInstance();
+ return primSingle;
} else {
- return EdmDouble.getInstance();
+ return primDouble;
}
} else {
final BigInteger value = (BigInteger) arithmeticResult;
if (value.compareTo(EDN_SBYTE_MAX) <= 0 && value.compareTo(EDM_SBYTE_MIN) >= 0) {
- return EdmSByte.getInstance();
+ return primSByte;
}
if (value.compareTo(EDM_BYTE_MAX) <= 0 && value.compareTo(EDM_BYTE_MIN) >= 0) {
- return EdmByte.getInstance();
+ return primByte;
}
if (value.compareTo(EDM_INT16_MAX) <= 0 && value.compareTo(EDM_INT16_MIN) >= 0) {
- return EdmInt16.getInstance();
+ return primInt16;
}
if (value.compareTo(EDM_INT32_MAX) <= 0 && value.compareTo(EDM_INT32_MIN) >= 0) {
- return EdmInt32.getInstance();
+ return primInt32;
}
if (value.compareTo(EDM_INT64_MAX) <= 0 && value.compareTo(EDM_INT64_MIN) >= 0) {
- return EdmInt64.getInstance();
+ return primInt64;
}
// Choose double instead single because precision is higher (52 bits instead of 23)
- return EdmDouble.getInstance();
+ return primDouble;
}
}
private VisitorOperand dateArithmeticOperation(BinaryOperatorKind operator) throws ODataApplicationException {
VisitorOperand result = null;
- if (left.is(EdmDate.getInstance())) {
- if (right.is(EdmDate.getInstance()) && operator == BinaryOperatorKind.SUB) {
+ if (left.is(primDate)) {
+ if (right.is(primDate) && operator == BinaryOperatorKind.SUB) {
long millis = left.getTypedValue(Calendar.class).getTimeInMillis()
- left.getTypedValue(Calendar.class).getTimeInMillis();
- result = new TypedOperand(new BigDecimal(millis).divide(FACTOR_SECOND), EdmDuration.getInstance());
- } else if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.ADD) {
+ result = new TypedOperand(new BigDecimal(millis).divide(FACTOR_SECOND), primDuration);
+ } else if (right.is(primDuration) && operator == BinaryOperatorKind.ADD) {
long millis = left.getTypedValue(Calendar.class).getTimeInMillis()
+ (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
- result = new TypedOperand(new Timestamp(millis), EdmDateTimeOffset.getInstance());
- } else if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.SUB) {
+ result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
+ } else if (right.is(primDuration) && operator == BinaryOperatorKind.SUB) {
long millis = left.getTypedValue(Calendar.class).getTimeInMillis()
- (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
- result = new TypedOperand(new Timestamp(millis), EdmDateTimeOffset.getInstance());
+ result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
}
- } else if (left.is(EdmDuration.getInstance())) {
- if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.ADD) {
+ } else if (left.is(primDuration)) {
+ if (right.is(primDuration) && operator == BinaryOperatorKind.ADD) {
long seconds = left.getTypedValue(BigDecimal.class).longValue()
+ right.getTypedValue(BigDecimal.class).longValue();
- result = new TypedOperand(new BigDecimal(seconds), EdmDuration.getInstance());
- } else if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.SUB) {
+ result = new TypedOperand(new BigDecimal(seconds), primDuration);
+ } else if (right.is(primDuration) && operator == BinaryOperatorKind.SUB) {
long seconds = left.getTypedValue(BigDecimal.class).longValue()
- right.getTypedValue(BigDecimal.class).longValue();
- result = new TypedOperand(new BigDecimal(seconds), EdmDuration.getInstance());
+ result = new TypedOperand(new BigDecimal(seconds), primDuration);
}
- } else if (left.is(EdmDateTimeOffset.getInstance())) {
- if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.ADD) {
+ } else if (left.is(primDateTimeOffset)) {
+ if (right.is(primDuration) && operator == BinaryOperatorKind.ADD) {
long millis = left.getTypedValue(Timestamp.class).getTime()
+ (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
- result = new TypedOperand(new Timestamp(millis), EdmDateTimeOffset.getInstance());
- } else if (right.is(EdmDuration.getInstance()) && operator == BinaryOperatorKind.SUB) {
+ result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
+ } else if (right.is(primDuration) && operator == BinaryOperatorKind.SUB) {
long millis = left.getTypedValue(Timestamp.class).getTime()
- (right.getTypedValue(BigDecimal.class).longValue() * FACTOR_SECOND_INT);
- result = new TypedOperand(new Timestamp(millis), EdmDateTimeOffset.getInstance());
- } else if (right.is(EdmDateTimeOffset.getInstance()) && operator == BinaryOperatorKind.SUB) {
+ result = new TypedOperand(new Timestamp(millis), primDateTimeOffset);
+ } else if (right.is(primDateTimeOffset) && operator == BinaryOperatorKind.SUB) {
long millis = left.getTypedValue(Timestamp.class).getTime()
- right.getTypedValue(Timestamp.class).getTime();
- result = new TypedOperand(new BigDecimal(millis).divide(FACTOR_SECOND), EdmDuration.getInstance());
+ result = new TypedOperand(new BigDecimal(millis).divide(FACTOR_SECOND), primDuration);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/MethodCallOperator.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/MethodCallOperator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/MethodCallOperator.java
index 62fbb6d..5f8575b 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/MethodCallOperator.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/MethodCallOperator.java
@@ -30,21 +30,50 @@ import java.util.Locale;
import java.util.TimeZone;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmBoolean;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDate;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTimeOffset;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmString;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmTimeOfDay;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.TypedOperand;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.VisitorOperand;
public class MethodCallOperator {
+ protected static final OData oData;
+ protected static final EdmPrimitiveType primString;
+ protected static final EdmPrimitiveType primBoolean;
+ protected static final EdmPrimitiveType primDateTimeOffset;
+ protected static final EdmPrimitiveType primDate;
+ protected static final EdmPrimitiveType primTimeOfDay;
+ protected static final EdmPrimitiveType primDuration;
+ protected static final EdmPrimitiveType primSByte;
+ protected static final EdmPrimitiveType primByte;
+ protected static final EdmPrimitiveType primInt16;
+ protected static final EdmPrimitiveType primInt32;
+ protected static final EdmPrimitiveType primInt64;
+ protected static final EdmPrimitiveType primDecimal;
+ protected static final EdmPrimitiveType primSingle;
+ protected static final EdmPrimitiveType primDouble;
+
+ static {
+ oData = OData.newInstance();
+ primString = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String);
+ primBoolean = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean);
+ primDateTimeOffset = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset);
+ primDate = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date);
+ primTimeOfDay = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay);
+ primDuration = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration);
+ primSByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte);
+ primByte = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte);
+ primInt16 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16);
+ primInt32 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32);
+ primInt64 = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64);
+ primDecimal = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal);
+ primSingle = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single);
+ primDouble = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double);
+ }
+
final private List<VisitorOperand> parameters;
public MethodCallOperator(List<VisitorOperand> parameters) {
@@ -57,7 +86,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).endsWith(params.get(1));
}
- }, EdmBoolean.getInstance());
+ }, primBoolean);
}
public VisitorOperand indexOf() throws ODataApplicationException {
@@ -67,7 +96,7 @@ public class MethodCallOperator {
// If the first string do not contain the second string, return -1. See OASIS JIRA ODATA-780
return params.get(0).indexOf(params.get(1));
}
- }, EdmInt32.getInstance());
+ }, primInt32);
}
public VisitorOperand startsWith() throws ODataApplicationException {
@@ -76,7 +105,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).startsWith(params.get(1));
}
- }, EdmBoolean.getInstance());
+ }, primBoolean);
}
public VisitorOperand toLower() throws ODataApplicationException {
@@ -85,7 +114,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).toLowerCase();
}
- }, EdmString.getInstance());
+ }, primString);
}
public VisitorOperand toUpper() throws ODataApplicationException {
@@ -94,7 +123,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).toUpperCase();
}
- }, EdmString.getInstance());
+ }, primString);
}
public VisitorOperand trim() throws ODataApplicationException {
@@ -103,7 +132,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).trim();
}
- }, EdmString.getInstance());
+ }, primString);
}
public VisitorOperand substring() throws ODataApplicationException {
@@ -113,8 +142,8 @@ public class MethodCallOperator {
final TypedOperand startOperand = parameters.get(1).asTypedOperand();
if (valueOperand.isNull() || startOperand.isNull()) {
- return new TypedOperand(null, EdmString.getInstance());
- } else if (valueOperand.is(EdmString.getInstance()) && startOperand.isIntegerType()) {
+ return new TypedOperand(null, primString);
+ } else if (valueOperand.is(primString) && startOperand.isIntegerType()) {
final String value = valueOperand.getTypedValue(String.class);
int start = Math.min(startOperand.getTypedValue(BigInteger.class).intValue(), value.length());
start = start < 0 ? 0 : start;
@@ -125,7 +154,7 @@ public class MethodCallOperator {
final TypedOperand lengthOperand = parameters.get(2).asTypedOperand();
if (lengthOperand.isNull()) {
- return new TypedOperand(null, EdmString.getInstance());
+ return new TypedOperand(null, primString);
} else if (lengthOperand.isIntegerType()) {
end = Math.min(start + lengthOperand.getTypedValue(BigInteger.class).intValue(), value.length());
end = end < 0 ? 0 : end;
@@ -136,7 +165,7 @@ public class MethodCallOperator {
}
return new TypedOperand(value.substring(start, end),
- EdmString.getInstance());
+ primString);
} else {
throw new ODataApplicationException("Substring has invalid parameters. First parameter should be Edm.String,"
+ " second parameter should be Edm.Int32", HttpStatusCode.BAD_REQUEST.getStatusCode(), Locale.ROOT);
@@ -149,7 +178,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).contains(params.get(1));
}
- }, EdmBoolean.getInstance());
+ }, primBoolean);
}
public VisitorOperand concat() throws ODataApplicationException {
@@ -158,7 +187,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0) + params.get(1);
}
- }, EdmString.getInstance());
+ }, primString);
}
public VisitorOperand length() throws ODataApplicationException {
@@ -167,7 +196,7 @@ public class MethodCallOperator {
public Object perform(List<String> params) {
return params.get(0).length();
}
- }, EdmInt32.getInstance());
+ }, primInt32);
}
public VisitorOperand year() throws ODataApplicationException {
@@ -176,7 +205,7 @@ public class MethodCallOperator {
public Object perform(Calendar calendar, TypedOperand operand) {
return calendar.get(Calendar.YEAR);
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmDate.getInstance());
+ }, primInt32, primDateTimeOffset, primDate);
}
public VisitorOperand month() throws ODataApplicationException {
@@ -186,7 +215,7 @@ public class MethodCallOperator {
// Month is 0-based!
return calendar.get(Calendar.MONTH) + 1;
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmDate.getInstance());
+ }, primInt32, primDateTimeOffset, primDate);
}
public VisitorOperand day() throws ODataApplicationException {
@@ -195,7 +224,7 @@ public class MethodCallOperator {
public Object perform(Calendar calendar, TypedOperand operand) {
return calendar.get(Calendar.DAY_OF_MONTH);
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmDate.getInstance());
+ }, primInt32, primDateTimeOffset, primDate);
}
public VisitorOperand hour() throws ODataApplicationException {
@@ -204,7 +233,7 @@ public class MethodCallOperator {
public Object perform(Calendar calendar, TypedOperand operand) {
return calendar.get(Calendar.HOUR_OF_DAY);
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmTimeOfDay.getInstance());
+ }, primInt32, primDateTimeOffset, primTimeOfDay);
}
public VisitorOperand minute() throws ODataApplicationException {
@@ -213,7 +242,7 @@ public class MethodCallOperator {
public Object perform(Calendar calendar, TypedOperand operand) {
return calendar.get(Calendar.MINUTE);
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmTimeOfDay.getInstance());
+ }, primInt32, primDateTimeOffset, primTimeOfDay);
}
public VisitorOperand second() throws ODataApplicationException {
@@ -222,7 +251,7 @@ public class MethodCallOperator {
public Object perform(Calendar calendar, TypedOperand operand) {
return calendar.get(Calendar.SECOND);
}
- }, EdmInt32.getInstance(), EdmDateTimeOffset.getInstance(), EdmTimeOfDay.getInstance());
+ }, primInt32, primDateTimeOffset, primTimeOfDay);
}
public VisitorOperand fractionalseconds() throws ODataApplicationException {
@@ -236,7 +265,7 @@ public class MethodCallOperator {
return new BigDecimal(calendar.get(Calendar.MILLISECOND)).divide(BigDecimal.valueOf(1000));
}
}
- }, EdmDecimal.getInstance(), EdmDateTimeOffset.getInstance(), EdmTimeOfDay.getInstance());
+ }, primDecimal, primDateTimeOffset, primTimeOfDay);
}
public VisitorOperand round() throws ODataApplicationException {
@@ -290,13 +319,13 @@ public class MethodCallOperator {
if (operand.is(expectedTypes)) {
if (!operand.isNull()) {
Calendar calendar = null;
- if (operand.is(EdmDate.getInstance())) {
+ if (operand.is(primDate)) {
calendar = operand.getTypedValue(Calendar.class);
- } else if (operand.is(EdmDateTimeOffset.getInstance())) {
+ } else if (operand.is(primDateTimeOffset)) {
final Timestamp timestamp = operand.getTypedValue(Timestamp.class);
calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTimeInMillis(timestamp.getTime());
- } else if (operand.is(EdmTimeOfDay.getInstance())) {
+ } else if (operand.is(primTimeOfDay)) {
calendar = operand.getTypedValue(Calendar.class);
} else {
throw new ODataApplicationException("Invalid type", HttpStatusCode.BAD_REQUEST.getStatusCode(), Locale.ROOT);
@@ -327,7 +356,7 @@ public class MethodCallOperator {
TypedOperand operand = param.asTypedOperand();
if (operand.isNull()) {
result.add(null);
- } else if (operand.is(EdmString.getInstance())) {
+ } else if (operand.is(primString)) {
result.add(operand.getTypedValue(String.class));
} else {
throw new ODataApplicationException("Invalid parameter. Expected Edm.String", HttpStatusCode.BAD_REQUEST
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/UnaryOperator.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/UnaryOperator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/UnaryOperator.java
index 7f5ba21..5e0c2bc 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/UnaryOperator.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/operation/UnaryOperator.java
@@ -23,14 +23,26 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Locale;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmBoolean;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmDuration;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.TypedOperand;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.VisitorOperand;
public class UnaryOperator {
+
+ protected static final OData oData;
+ protected static final EdmPrimitiveType primBoolean;
+ protected static final EdmPrimitiveType primDuration;
+
+ static {
+ oData = OData.newInstance();
+ primBoolean = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean);
+ primDuration = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration);
+ }
+
final private TypedOperand operand;
public UnaryOperator(VisitorOperand operand) throws ODataApplicationException {
@@ -42,7 +54,7 @@ public class UnaryOperator {
return operand;
} else if (operand.isIntegerType()) {
return new TypedOperand(operand.getTypedValue(BigInteger.class).negate(), operand.getType());
- } else if (operand.isDecimalType() || operand.is(EdmDuration.getInstance())) {
+ } else if (operand.isDecimalType() || operand.is(primDuration)) {
return new TypedOperand(operand.getTypedValue(BigDecimal.class).negate(), operand.getType());
} else {
throw new ODataApplicationException("Unsupported type", HttpStatusCode.BAD_REQUEST.getStatusCode(),
@@ -53,7 +65,7 @@ public class UnaryOperator {
public VisitorOperand notOperation() throws ODataApplicationException {
if (operand.isNull()) {
return operand;
- } else if (operand.is(EdmBoolean.getInstance())) {
+ } else if (operand.is(primBoolean)) {
return new TypedOperand(!operand.getTypedValue(Boolean.class), operand.getType());
} else {
throw new ODataApplicationException("Unsupported type", HttpStatusCode.BAD_REQUEST.getStatusCode(),
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/primitive/EdmNull.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/primitive/EdmNull.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/primitive/EdmNull.java
index b46aa28..156e2cb 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/primitive/EdmNull.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/expression/primitive/EdmNull.java
@@ -18,11 +18,13 @@
*/
package org.apache.olingo.server.tecsvc.processor.queryoptions.expression.primitive;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.core.edm.primitivetype.SingletonPrimitiveType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-public final class EdmNull extends SingletonPrimitiveType {
+public final class EdmNull implements EdmPrimitiveType {
private static final EdmNull instance = new EdmNull();
@@ -34,8 +36,88 @@ public final class EdmNull extends SingletonPrimitiveType {
public Class<?> getDefaultType() {
return Object.class;
}
+
+ protected String uriPrefix = "";
+
+ protected String uriSuffix = "";
+
+ @Override
+ public FullQualifiedName getFullQualifiedName() {
+ return new FullQualifiedName(getNamespace(), getName());
+ }
+
+ @Override
+ public boolean isCompatible(final EdmPrimitiveType primitiveType) {
+ return equals(primitiveType);
+ }
+
+ @Override
+ public boolean validate(final String value,
+ final Boolean isNullable, final Integer maxLength, final Integer precision, final Integer scale,
+ final Boolean isUnicode) {
+
+ try {
+ valueOfString(value, isNullable, maxLength, precision, scale, isUnicode, getDefaultType());
+ return true;
+ } catch (final EdmPrimitiveTypeException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public final <T> T valueOfString(final String value,
+ final Boolean isNullable, final Integer maxLength, final Integer precision,
+ final Integer scale, final Boolean isUnicode, final Class<T> returnType)
+ throws EdmPrimitiveTypeException {
+
+ if (value == null) {
+ if (isNullable != null && !isNullable) {
+ throw new EdmPrimitiveTypeException("The literal 'null' is not allowed.");
+ }
+ return null;
+ }
+ return internalValueOfString(value, isNullable, maxLength, precision, scale, isUnicode, returnType);
+ }
+
+ @Override
+ public final String valueToString(final Object value,
+ final Boolean isNullable, final Integer maxLength, final Integer precision,
+ final Integer scale, final Boolean isUnicode) throws EdmPrimitiveTypeException {
+ if (value == null) {
+ if (isNullable != null && !isNullable) {
+ throw new EdmPrimitiveTypeException("The value NULL is not allowed.");
+ }
+ return null;
+ }
+ return internalValueToString(value, isNullable, maxLength, precision, scale, isUnicode);
+ }
+
+ @Override
+ public String toUriLiteral(final String literal) {
+ return literal == null ? null :
+ uriPrefix.isEmpty() && uriSuffix.isEmpty() ? literal : uriPrefix + literal + uriSuffix;
+ }
@Override
+ public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
+ if (literal == null) {
+ return null;
+ } else if (uriPrefix.isEmpty() && uriSuffix.isEmpty()) {
+ return literal;
+ } else if (literal.length() >= uriPrefix.length() + uriSuffix.length()
+ && literal.startsWith(uriPrefix) && literal.endsWith(uriSuffix)) {
+
+ return literal.substring(uriPrefix.length(), literal.length() - uriSuffix.length());
+ } else {
+ throw new EdmPrimitiveTypeException("The literal '" + literal + "' has illegal content.");
+ }
+ }
+
+ @Override
+ public String toString() {
+ return new FullQualifiedName(getNamespace(), getName()).getFullQualifiedNameAsString();
+ }
+
protected <T> T internalValueOfString(String value, Boolean isNullable, Integer maxLength, Integer precision,
Integer scale, Boolean isUnicode, Class<T> returnType) throws EdmPrimitiveTypeException {
if (!value.equals("null")) {
@@ -49,10 +131,34 @@ public final class EdmNull extends SingletonPrimitiveType {
}
}
- @Override
protected <T> String internalValueToString(T value, Boolean isNullable, Integer maxLength, Integer precision,
Integer scale, Boolean isUnicode) throws EdmPrimitiveTypeException {
return "null";
}
+ @Override
+ public boolean equals(final Object obj) {
+ return this == obj || obj != null && getClass() == obj.getClass();
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public String getNamespace() {
+ return EDM_NAMESPACE;
+ }
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName().substring(3);
+ }
+
+ @Override
+ public EdmTypeKind getKind() {
+ return EdmTypeKind.PRIMITIVE;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/FilterHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/FilterHandler.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/FilterHandler.java
index d4068a1..69fa2e4 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/FilterHandler.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/FilterHandler.java
@@ -24,34 +24,26 @@ import java.util.Locale;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmBoolean;
+import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.uri.queryoption.FilterOption;
import org.apache.olingo.server.api.uri.queryoption.expression.ExpressionVisitException;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.ExpressionVisitorImpl;
-/*
- * 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.
- */
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.TypedOperand;
import org.apache.olingo.server.tecsvc.processor.queryoptions.expression.operand.VisitorOperand;
public class FilterHandler {
+
+ protected static final OData oData;
+ protected static final EdmPrimitiveType primBoolean;
+
+ static {
+ oData = OData.newInstance();
+ primBoolean = oData.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean);
+ }
public static void applyFilterSystemQuery(FilterOption filterOption, EntitySet entitySet,
EdmBindingTarget edmEntitySet) throws ODataApplicationException {
@@ -68,7 +60,7 @@ public class FilterHandler {
.accept(new ExpressionVisitorImpl(iter.next(), edmEntitySet));
final TypedOperand typedOperand = operand.asTypedOperand();
- if (!(typedOperand.is(EdmBoolean.getInstance())
+ if (!(typedOperand.is(primBoolean)
&& Boolean.TRUE.equals(typedOperand.getTypedValue(Boolean.class)))) {
iter.remove();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
index b5aedac..a945edb 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
@@ -25,10 +25,10 @@ import java.util.Locale;
import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.http.HttpStatusCode;
-import org.apache.olingo.commons.core.Encoder;
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
import org.apache.olingo.server.api.uri.queryoption.SystemQueryOptionKind;
+import org.apache.olingo.server.tecsvc.Encoder;
public class ServerSidePagingHandler {
private static final int MAX_PAGE_SIZE = 10;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
index f8b1dab..801377e 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
@@ -39,7 +39,6 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.format.ODataFormat;
-import org.apache.olingo.commons.core.data.PropertyImpl;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ServiceMetadata;
import org.apache.olingo.server.api.edmx.EdmxReference;
@@ -615,7 +614,7 @@ public class ODataJsonSerializerTest {
public void primitivePropertyNull() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim");
final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyString");
- final Property property = new PropertyImpl("Edm.String", edmProperty.getName(), ValueType.PRIMITIVE, null);
+ final Property property = new Property("Edm.String", edmProperty.getName(), ValueType.PRIMITIVE, null);
serializer.primitive((EdmPrimitiveType) edmProperty.getType(), property,
PrimitiveSerializerOptions.with()
.contextURL(ContextURL.with()
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/samples/server/src/main/java/org/apache/olingo/server/sample/data/DataProvider.java
----------------------------------------------------------------------
diff --git a/samples/server/src/main/java/org/apache/olingo/server/sample/data/DataProvider.java b/samples/server/src/main/java/org/apache/olingo/server/sample/data/DataProvider.java
index 2e44e35..b8789bd 100644
--- a/samples/server/src/main/java/org/apache/olingo/server/sample/data/DataProvider.java
+++ b/samples/server/src/main/java/org/apache/olingo/server/sample/data/DataProvider.java
@@ -33,9 +33,6 @@ import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.PropertyImpl;
import org.apache.olingo.server.api.uri.UriParameter;
import org.apache.olingo.server.sample.edmprovider.CarsEdmProvider;
@@ -97,37 +94,37 @@ public class DataProvider {
}
private EntitySet createCars() {
- EntitySet entitySet = new EntitySetImpl();
+ EntitySet entitySet = new EntitySet();
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 1))
.addProperty(createPrimitive("Model", "F1 W03"))
.addProperty(createPrimitive("ModelYear", "2012"))
.addProperty(createPrimitive("Price", 189189.43))
.addProperty(createPrimitive("Currency", "EUR")));
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 2))
.addProperty(createPrimitive("Model", "F1 W04"))
.addProperty(createPrimitive("ModelYear", "2013"))
.addProperty(createPrimitive("Price", 199999.99))
.addProperty(createPrimitive("Currency", "EUR")));
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 3))
.addProperty(createPrimitive("Model", "F2012"))
.addProperty(createPrimitive("ModelYear", "2012"))
.addProperty(createPrimitive("Price", 137285.33))
.addProperty(createPrimitive("Currency", "EUR")));
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 4))
.addProperty(createPrimitive("Model", "F2013"))
.addProperty(createPrimitive("ModelYear", "2013"))
.addProperty(createPrimitive("Price", 145285.00))
.addProperty(createPrimitive("Currency", "EUR")));
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 5))
.addProperty(createPrimitive("Model", "F1 W02"))
.addProperty(createPrimitive("ModelYear", "2011"))
@@ -141,14 +138,14 @@ public class DataProvider {
}
private EntitySet createManufacturers() {
- EntitySet entitySet = new EntitySetImpl();
+ EntitySet entitySet = new EntitySet();
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 1))
.addProperty(createPrimitive("Name", "Star Powered Racing"))
.addProperty(createAddress("Star Street 137", "Stuttgart", "70173", "Germany")));
- entitySet.getEntities().add(new EntityImpl()
+ entitySet.getEntities().add(new Entity()
.addProperty(createPrimitive("Id", 2))
.addProperty(createPrimitive("Name", "Horse Powered Racing"))
.addProperty(createAddress("Horse Street 1", "Maranello", "41053", "Italy")));
@@ -165,10 +162,10 @@ public class DataProvider {
addressProperties.add(createPrimitive("City", city));
addressProperties.add(createPrimitive("ZipCode", zipCode));
addressProperties.add(createPrimitive("Country", country));
- return new PropertyImpl(null, "Address", ValueType.COMPLEX, addressProperties);
+ return new Property(null, "Address", ValueType.COMPLEX, addressProperties);
}
private Property createPrimitive(final String name, final Object value) {
- return new PropertyImpl(null, name, ValueType.PRIMITIVE, value);
+ return new Property(null, name, ValueType.PRIMITIVE, value);
}
}