[olingo-odata4] branch master updated: [OLINGO-1323]OData v4.0: Context url should have navigation properties within when expanded

2018-12-13 Thread archanarai
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

2018-12-13 Thread archanarai
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

2018-12-13 Thread archanarai
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