[olingo-odata4] branch master updated: [OLINGO-1323]OData v4.0: Context url should have navigation properties within when expanded
This is an automated email from the ASF dual-hosted git repository. archanarai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git The following commit(s) were added to refs/heads/master by this push: new f344a3c [OLINGO-1323]OData v4.0: Context url should have navigation properties within when expanded f344a3c is described below commit f344a3c565b6a67233de1d1169104a728136e7a3 Author: Archana Rai AuthorDate: Thu Dec 13 16:10:10 2018 +0530 [OLINGO-1323]OData v4.0: Context url should have navigation properties within when expanded --- .../core/serializer/json/ODataJsonSerializer.java | 2 +- .../core/serializer/utils/ContextURLHelper.java| 26 ++--- .../olingo/server/tecsvc/data/DataCreator.java | 12 .../tecsvc/processor/TechnicalActionProcessor.java | 3 +- .../tecsvc/processor/TechnicalEntityProcessor.java | 2 +- .../serializer/json/ODataJsonSerializerTest.java | 23 ++- .../json/ODataJsonSerializerv01Test.java | 34 +- .../serializer/utils/ContextURLHelperTest.java | 3 +- .../serializer/xml/ODataXmlSerializerTest.java | 9 -- 9 files changed, 82 insertions(+), 32 deletions(-) diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java index 31029f2..65f9675 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java @@ -1131,7 +1131,7 @@ public class ODataJsonSerializer extends AbstractODataSerializer { writeContextURL(contextURL, json); writeMetadataETag(metadata, json); writeOperations(property.getOperations(), json); - if (property.isNull()) { + if (property.isNull() && options!=null && options.isNullable() != null && !options.isNullable()) { throw new SerializerException("Property value can not be null.", SerializerException.MessageKeys.NULL_INPUT); } else { json.writeFieldName(Constants.VALUE); diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java index 8352ef4..6e20ef4 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java @@ -67,6 +67,8 @@ public final class ContextURLHelper { if (ExpandSelectHelper.hasExpand(expand) && !(null != ExpandSelectHelper.getExpandAll(expand))) { handleExpand(type, expand, result); +}else if(expand != null && null != ExpandSelectHelper.getExpandAll(expand)){ + handleExpandAll(type, expand, result); } return result.length() == 0 ? null : result.toString(); } @@ -267,6 +269,8 @@ public final class ContextURLHelper { final Set expandedPropertyNames = ExpandSelectHelper.getExpandedPropertyNames(expand.getExpandItems()); for (final String propertyName : type.getNavigationPropertyNames()) { if (expandedPropertyNames.contains(propertyName)) { + + final ExpandItem expandItem = ExpandSelectHelper.getExpandItem(expand.getExpandItems(), propertyName); if (ExpandSelectHelper.hasExpand(expandItem.getExpandOption()) && !(null != ExpandSelectHelper.getExpandAll(expandItem.getExpandOption())) @@ -290,15 +294,29 @@ public final class ContextURLHelper { result.append(Encoder.encode(propertyName)); result.append("/").append(propertyPath); } else { -if (result.length() > 0) { - result.append(','); -} -result.append(Encoder.encode(propertyName) + "()"); +appendExpandedProperty(result, propertyName); } } + + } } } + + private static void handleExpandAll(final EdmStructuredType type, + final ExpandOption expand, final StringBuilder result) throws SerializerException { +for (final String propertyName : type.getNavigationPropertyNames()) { + appendExpandedProperty(result, propertyName); +} + } + + private static void appendExpandedProperty(StringBuilder result, String propertyName) + throws SerializerException { +if (result.length() > 0) { + result.append(','); +} +result.append(Encoder.encode(propertyName) + "()"); + } private static List getPropertyPath(final List path) { List result = new LinkedList(); diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo
[olingo-odata2] branch master updated: [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser
This is an automated email from the ASF dual-hosted git repository. archanarai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git The following commit(s) were added to refs/heads/master by this push: new 7284619 [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser 7284619 is described below commit 7284619af7cdc55d0d1b01505bc27f7df600f4b8 Author: Archana Rai AuthorDate: Thu Dec 13 14:08:06 2018 +0530 [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser --- .../java/org/apache/olingo/odata2/core/uri/UriParserImpl.java | 4 .../java/org/apache/olingo/odata2/core/uri/UriParserTest.java | 11 +++ 2 files changed, 15 insertions(+) diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java index 8373df7..3a31ad7 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java @@ -468,6 +468,10 @@ public class UriParserImpl extends UriParser { throw new UriSyntaxException(UriSyntaxException.MISSINGKEYPREDICATENAME.addContent(key)); } } + + if("''".equals(value) || value==null){ +throw new UriSyntaxException(UriSyntaxException.INVALIDVALUE.addContent(value)); + } EdmProperty keyProperty = null; for (final EdmProperty testKeyProperty : keyProperties) { diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java index f08012a..51a2669 100644 --- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java +++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java @@ -254,6 +254,17 @@ public class UriParserTest extends BaseTest { assertEquals("1", result.getKeyPredicates().get(0).getLiteral()); assertEquals("EmployeeId", result.getKeyPredicates().get(0).getProperty().getName()); } + + @Test + public void parseEmployeesEntityWithEmptyKey() throws Exception { +parseWrongUri("/Employees('')", UriSyntaxException.INVALIDVALUE.addContent("''")); + } + + @Test + public void parseEmployeesEntityWithNullKey() throws Exception { +parseWrongUri("/Employees(null)", UriSyntaxException.INCOMPATIBLELITERAL); + } + @Test public void parseEmployeesEntityWithKeyWithComma() throws Exception {
[olingo-odata2] branch master updated: [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode
This is an automated email from the ASF dual-hosted git repository. archanarai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git The following commit(s) were added to refs/heads/master by this push: new f5ee664 [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode f5ee664 is described below commit f5ee664c909d2e9d269469bfd1b882c42ac721d3 Author: Archana Rai AuthorDate: Thu Dec 13 13:38:24 2018 +0530 [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode --- .../odata2/api/uri/ExpandSelectTreeNode.java | 8 +- .../odata2/core/ep/consumer/JsonEntryConsumer.java | 8 + .../odata2/core/ep/consumer/XmlEntryConsumer.java | 9 + .../odata2/core/uri/ExpandSelectTreeNodeImpl.java | 9 +- .../core/ep/consumer/JsonEntryConsumerTest.java| 28 ++ .../core/ep/consumer/XmlEntityConsumerTest.java| 28 ++ .../resources/employeesWithDifferentInlines.xml| 307 + .../jsonEmployeesWithDifferentInlines.json | 160 +++ 8 files changed, 554 insertions(+), 3 deletions(-) diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java index b12eb43..a1915ec 100644 --- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java +++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java @@ -53,7 +53,13 @@ public abstract class ExpandSelectTreeNode { * otherwise the link must be expanded with information found in that node */ public abstract Map getLinks(); - + + /** + * A list of all expanded links within the parent entity. + * @return {@link ExpandSelectTreeNodeBuilder} for method chaining. + */ + public abstract List getExpandedList(); + /** * Creates a builder instance and sets the entitySet for this node. * @param entitySet on which this node is based diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java index d9d8e6e..d1c4179 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java @@ -389,6 +389,14 @@ public class JsonEntryConsumer { List entries = feed.getEntries(); if (!entries.isEmpty()) { updateExpandSelectTree(navigationPropertyName, entries.get(0)); + for(ODataEntry entry : entries){ +ExpandSelectTreeNodeImpl newExpandedSelectedTree = new ExpandSelectTreeNodeImpl(); +newExpandedSelectedTree.setExpanded(); +newExpandedSelectedTree.setExplicitlySelected(); +newExpandedSelectedTree.putLink(navigationPropertyName, +(ExpandSelectTreeNodeImpl) entry.getExpandSelectTree()); +expandSelectTree.getExpandedList().add(newExpandedSelectedTree); + } } else { expandSelectTree.setExpanded(); expandSelectTree.setExplicitlySelected(); diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java index 962fc34..8c5a240 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java @@ -345,6 +345,15 @@ public class XmlEntryConsumer { expandSelectTree.setExpanded(); ExpandSelectTreeNodeImpl subNode = getExpandSelectTreeNode(inlineEntries); expandSelectTree.putLink(navigationPropertyName, subNode); +for(ODataEntry entry : inlineEntries){ + ExpandSelectTreeNodeImpl newExpandedSelectedTree = new ExpandSelectTreeNodeImpl(); + newExpandedSelectedTree.setExpanded(); + newExpandedSelectedTree.setExplicitlySelected(); + newExpandedSelectedTree.putLink(navigationPropertyName, + (ExpandSelectTreeNodeImpl) entry.getExpandSelectTree()); + expandSelectTree.getExpandedList().add(newExpandedSelectedTree); +} + } /** diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java index 0237cdf..b7b646d 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java @@ -60,7 +60,8 @@ public class ExpandSelectTreeNodeImpl