Repository: olingo-odata4 Updated Branches: refs/heads/master d4c2b89e4 -> 05935a0c3
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); } }
