[olingo-odata4] branch master updated: [OLINGO-1490] Update(PUT) Collection Property

2020-10-30 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 a50c098  [OLINGO-1490] Update(PUT) Collection Property
a50c098 is described below

commit a50c098644f17a51a03289d01b3decc6e650c047
Author: Archana Rai 
AuthorDate: Fri Oct 30 16:01:49 2020 +0530

[OLINGO-1490] Update(PUT) Collection Property
---
 .../org/apache/olingo/server/core/ODataDispatcher.java| 15 ++-
 .../olingo/server/tecsvc/data/RequestValidator.java   |  4 
 .../apache/olingo/server/core/ODataHandlerImplTest.java   |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataDispatcher.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataDispatcher.java
index 985bee6..e922277 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataDispatcher.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataDispatcher.java
@@ -563,7 +563,20 @@ public class ODataDispatcher {
   ODataHandlerException.MessageKeys.INVALID_PAYLOAD);
 }
   }
-} else {
+} else if (method == HttpMethod.PUT && 
uriInfo.getUriResourceParts().size()==2) {
+if (isMedia) {
+validatePreferHeader(request);
+  }
+  validatePreconditions(request, false);
+  final ContentType requestFormat = getSupportedContentType(
+  request.getHeader(HttpHeader.CONTENT_TYPE),
+  RepresentationType.ENTITY, true);
+  final ContentType responseFormat = ContentNegotiator.
+  doContentNegotiation(uriInfo.getFormatOption(),
+  request, handler.getCustomContentTypeSupport(), 
RepresentationType.ENTITY);
+  handler.selectProcessor(EntityProcessor.class)
+  .updateEntity(request, response, uriInfo, requestFormat, 
responseFormat);
+} else {
   throwMethodNotAllowed(method);
 }
   }
diff --git 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/RequestValidator.java
 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/RequestValidator.java
index baf2f40..51ac9fa 100644
--- 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/RequestValidator.java
+++ 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/RequestValidator.java
@@ -140,13 +140,9 @@ public class RequestValidator {
 if (edmProperty.isCollection()) {
   final EntityCollection inlineEntitySet = 
navigationLink.getInlineEntitySet();
   if (inlineEntitySet != null) {
-if (!isInsert && inlineEntitySet.getEntities().size() > 0) {
-  throw new DataProvider.DataProviderException("Deep update is not 
allowed", HttpStatusCode.BAD_REQUEST);
-} else {
   for (final Entity entity : 
navigationLink.getInlineEntitySet().getEntities()) {
 validate(edmBindingTarget, entity);
   }
-}
   }
 } else {
   final Entity inlineEntity = navigationLink.getInlineEntity();
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerImplTest.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerImplTest.java
index b9e1970..7c0894a 100644
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerImplTest.java
+++ 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerImplTest.java
@@ -748,7 +748,7 @@ public class ODataHandlerImplTest {
 
 dispatchMethodNotAllowed(HttpMethod.PATCH, sigletonManyNavUri, processor);
 
-dispatchMethodNotAllowed(HttpMethod.PUT, sigletonManyNavUri, processor);
+dispatch(HttpMethod.PUT, sigletonManyNavUri, processor);
 
 dispatch(HttpMethod.POST, sigletonManyNavUri, processor);
 verify(processor).createEntity(



[olingo-odata2] branch master updated: Status Code 422 support

2020-04-14 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 846e4fd  Status Code 422 support
846e4fd is described below

commit 846e4fd20c108c8f73afdfef0074e3c9ddfa422c
Author: Archana Rai 
AuthorDate: Tue Apr 14 21:05:31 2020 +0530

Status Code 422 support
---
 .../main/java/org/apache/olingo/odata2/api/commons/HttpStatusCodes.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/commons/HttpStatusCodes.java
 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/commons/HttpStatusCodes.java
index 4371a53..22a6434 100644
--- 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/commons/HttpStatusCodes.java
+++ 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/commons/HttpStatusCodes.java
@@ -39,7 +39,7 @@ public enum HttpStatusCodes {
   PRECONDITION_FAILED(412, "Precondition Failed"), 
REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
   REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"), 
UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
   REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested Range Not Satisfiable"),
-  EXPECTATION_FAILED(417, "Expectation Failed"), PRECONDITION_REQUIRED(428, 
"Precondition Required"),
+  EXPECTATION_FAILED(417, "Expectation Failed"),  UNPROCESSABLE_ENTITY(422, 
"Unprocessable Entity"), PRECONDITION_REQUIRED(428, "Precondition Required"),
   METHOD_FAILED(420, "Method Failed"),
 
   INTERNAL_SERVER_ERROR(500, "Internal Server Error"), NOT_IMPLEMENTED(501, 
"Not Implemented"), BAD_GATEWAY(502,



[olingo-odata4] branch master updated: CsdlEntityType isHasStream()

2020-04-14 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 a058f1c  CsdlEntityType isHasStream()
a058f1c is described below

commit a058f1c1cfab13d0b3790f7a0d681d35b8098feb
Author: Archana Rai 
AuthorDate: Tue Apr 14 20:53:36 2020 +0530

CsdlEntityType isHasStream()
---
 .../apache/olingo/commons/api/edm/provider/CsdlEntityType.java | 10 ++
 1 file changed, 10 insertions(+)

diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntityType.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntityType.java
index af34ef2..b4a0909 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntityType.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntityType.java
@@ -41,6 +41,16 @@ public class CsdlEntityType extends CsdlStructuralType {
   }
 
   /**
+   * Has stream.
+   * Duplicate getter according to java naming conventions.
+   *
+   * @return the boolean
+   */
+  public boolean isHasStream() {
+return hasStream;
+  }
+
+  /**
* Sets has stream.
*
* @param hasStream the has stream



[olingo-odata4] branch master updated: EdmDouble relaxed

2020-02-20 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 2b437ad  EdmDouble relaxed
 new cd7e028  Merge branch 'master' of 
https://gitbox.apache.org/repos/asf/olingo-odata4
2b437ad is described below

commit 2b437addace10e3649577109891cf061aa9c8d5f
Author: Archana Rai 
AuthorDate: Fri Feb 21 09:17:35 2020 +0530

EdmDouble relaxed
---
 .../org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java | 2 +-
 .../org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
index cd6518b..3d21b6b 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
@@ -36,7 +36,7 @@ public final class EdmDouble extends SingletonPrimitiveType {
   protected static final String NaN = "NaN";
 
   private static final Pattern PATTERN = Pattern.compile(
-  
"(?:\\+|-)?\\p{Digit}{1,17}(?:\\.\\p{Digit}{1,17})?(?:(?:E|e)(?:\\+|-)?\\p{Digit}{1,3})?");
+  
"(?:\\+|-)?\\p{Digit}+(?:\\.\\p{Digit}+)?(?:(?:E|e)(?:\\+|-)?\\p{Digit}{1,3})?");
 
   private static final EdmDouble INSTANCE = new EdmDouble();
 
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
index 5b7545d..2224265 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
@@ -91,6 +91,8 @@ public class EdmDoubleTest extends PrimitiveTypeBaseTest {
 assertEquals(Integer.valueOf(42), instance.valueOfString("4.2E1", null, 
null, null, null, null, Integer.class));
 assertEquals(Long.valueOf(1234567890), 
instance.valueOfString("1234567890E-00", null, null, null, null, null,
 Long.class));
+assertEquals(Double.valueOf(-0.0430995475), 
instance.valueOfString("-0.0430995475", null, null, 
+null, null, null, Double.class));
 
 assertEquals(Double.valueOf(Double.NaN), instance.valueOfString("NaN", 
null, null, null, null, null,
 Double.class));



[olingo-odata4] branch master updated: [OLINGO-1390] Service Resolution variable for spring apps

2019-08-28 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 73842ec  [OLINGO-1390] Service Resolution variable for spring apps
73842ec is described below

commit 73842ec07b617f125dd50e84236f2001da375139
Author: Archana Rai 
AuthorDate: Thu Aug 29 11:04:04 2019 +0530

[OLINGO-1390] Service Resolution variable for spring apps
---
 .../java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java | 5 +++--
 .../java/org/apache/olingo/server/core/ODataHttpHandlerImplTest.java | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java
index bbd94e5..7a632b1 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java
@@ -267,11 +267,13 @@ public class ODataHttpHandlerImpl implements 
ODataHttpHandler {
   static void fillUriInformation(final ODataRequest odRequest, 
  final HttpServletRequest httpRequest, final int split) {
 String rawRequestUri = httpRequest.getRequestURL().toString();
-
+
+String rawServiceResolutionUri = null;
 String rawODataPath;
 //Application need to set the request mapping attribute if the request is 
coming from a spring based application
 if(httpRequest.getAttribute(REQUESTMAPPING)!=null){
   String requestMapping = 
httpRequest.getAttribute(REQUESTMAPPING).toString();
+  rawServiceResolutionUri = requestMapping;
   int beginIndex = rawRequestUri.indexOf(requestMapping) + 
requestMapping.length();
   rawODataPath = rawRequestUri.substring(beginIndex);
 }else if(!"".equals(httpRequest.getServletPath())) {
@@ -286,7 +288,6 @@ public class ODataHttpHandlerImpl implements 
ODataHttpHandler {
   rawODataPath = httpRequest.getRequestURI();
 }
 
-String rawServiceResolutionUri = null;
 if (split > 0) {
   rawServiceResolutionUri = rawODataPath;
   for (int i = 0; i < split; i++) {
diff --git 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/ODataHttpHandlerImplTest.java
 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/ODataHttpHandlerImplTest.java
index 0645423..158cae6 100644
--- 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/ODataHttpHandlerImplTest.java
+++ 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/ODataHttpHandlerImplTest.java
@@ -212,7 +212,7 @@ public class ODataHttpHandlerImplTest {
   String rawODataPath = p[4];
   String rawQueryPath = "".equals(p[5]) ? null : p[5];
   String rawRequestUri = requestUrl + (queryString == null ? "" : "?" + 
queryString);
-  String rawServiceResolutionUri = "".equals(p[3]) ? null : p[3];
+  String rawServiceResolutionUri = ("0".equals(p[6])) ? p[2] : p[3];
 
   when(hr.getAttribute("requestMapping")).thenReturn(p[2]);
   ODataHttpHandlerImpl.fillUriInformation(odr, hr, Integer.parseInt(p[6]));



[olingo-odata2] branch master updated: [ODATA-2] JPA silent exit on update

2019-06-11 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 73fe4e8  [ODATA-2] JPA silent exit on update
73fe4e8 is described below

commit 73fe4e82a3fbb27b2eced12c02bd0a4f16650633
Author: Archana Rai 
AuthorDate: Wed Jun 12 11:23:54 2019 +0530

[ODATA-2] JPA silent exit on update
---
 .../olingo/odata2/jpa/processor/core/access/data/JPALink.java | 8 
 1 file changed, 8 insertions(+)

diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
index 3ee599b..c8a4394 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
@@ -196,6 +196,10 @@ public class JPALink {
   targetJPAEntities.add(targetJPAEntity);
 }
   }
+  if (targetJPAEntity == null){
+throw 
ODataJPARuntimeException.throwException(ODataJPARuntimeException.RESOURCE_X_NOT_FOUND
+.addContent(navPropertyName), null);
+  }
   if (!targetJPAEntities.isEmpty()) {
 linkJPAEntities(targetJPAEntities, sourceJPAEntity, navProperty);
   }
@@ -306,6 +310,10 @@ public class JPALink {
   }
 
   targetJPAEntity = jpaProcessor.process((GetEntityUriInfo) getUriInfo);
+  if (targetJPAEntity == null){
+throw 
ODataJPARuntimeException.throwException(ODataJPARuntimeException.RESOURCE_X_NOT_FOUND
+.addContent(navigationProperty.getName()), null);
+  }
   if (targetJPAEntity != null && sourceJPAEntity == null) {
 int index = 
context.getODataContext().getPathInfo().getODataSegments().size() - 2;
 getUriInfo = parser.parseURISegment(0, index);



[olingo-odata2] branch master updated: [OLINGO-1365]Child entities not serialized if parent has no property

2019-06-11 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 156e167  [OLINGO-1365]Child entities not serialized if parent has no 
property
156e167 is described below

commit 156e167c9de4238dee75f8c82995463aa5ee84f3
Author: Archana Rai 
AuthorDate: Wed Jun 12 10:50:58 2019 +0530

[OLINGO-1365]Child entities not serialized if parent has no property
---
 .../ep/serializer/JsonEntryEntitySerializer.java   | 12 +++---
 .../serializer/JsonEntryEntitySerializerTest.java  | 45 ++
 2 files changed, 52 insertions(+), 5 deletions(-)

diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
index b727538..fec92c8 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
@@ -92,7 +92,7 @@ public class JsonEntryEntitySerializer {
   } 
   writeProperties(entityInfo, data.getProperties(), type, 
containsMetadata);
 
-  writeNavigationProperties(writer, entityInfo, data.getNavigations(), 
type);
+  writeNavigationProperties(writer, entityInfo, data.getNavigations(), 
type, data.getProperties().isEmpty());
   jsonStreamWriter.endObject();
   
   writer.flush();
@@ -107,7 +107,7 @@ public class JsonEntryEntitySerializer {
 
   private void writeNavigationProperties(final Writer writer, final 
EntityInfoAggregator entityInfo,
   final Map data,
-  final EdmEntityType type) throws EdmException, EntityProviderException, 
IOException {
+  final EdmEntityType type, boolean emptyData) throws EdmException, 
EntityProviderException, IOException {
 for (final String navigationPropertyName : 
type.getNavigationPropertyNames()) {
   if (data.containsKey(navigationPropertyName)) {
 if (data.get(navigationPropertyName) == null) {
@@ -115,7 +115,10 @@ public class JsonEntryEntitySerializer {
 }
 if (data.get(navigationPropertyName) instanceof Entity || 
 data.get(navigationPropertyName) instanceof EntityCollection) {
-  jsonStreamWriter.separator();
+  if( !emptyData){
+jsonStreamWriter.separator();
+  }
+  emptyData=false;
   jsonStreamWriter.name(navigationPropertyName);
   writeExpandedNavigationProperty(writer, entityInfo, data, type, 
navigationPropertyName);
 } else if (data.get(navigationPropertyName) instanceof Map){
@@ -157,8 +160,7 @@ public class JsonEntryEntitySerializer {
   if(inlineData == null){
 throw new EntityProviderException(EntityProviderException.NULL_VALUE);
   }
-  if (inlineData != null && inlineData.getProperties() != null && 
-  !inlineData.getProperties().isEmpty()) {
+  if (inlineData != null && inlineData.getProperties() != null) {
 final EntitySerializerProperties inlineProperties = 
inlineData.getWriteProperties() == null ?
 EntitySerializerProperties.
 serviceRoot(properties.getServiceRoot()).build() : 
inlineData.getWriteProperties();
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
index e3e06f0..69524a4 100644
--- 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
@@ -739,6 +739,51 @@ public class JsonEntryEntitySerializerTest extends 
BaseTest {
 assertNotNull(json);
 
assertEquals("{\"Id\":\"1\",\"Version\":1,\"nr_Building\":{\"Id\":\"1\",\"Name\":\"Building1\"}}",
 json);
   }
+  
+  @Test
+  public void unbalancedPropertyEntryWithMultipleInlineEntry() throws 
Exception {
+final EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+Entity roomData = new Entity();
+roomData.addProperty("Id", "1");
+roomData.addProperty("Version", 1);
+
+Entity nrBuildingData = new Entity();
+EntityCollection roomsCollection = new EntityCollection();
+Entity nbRoomData = new Entity();
+n

[olingo-odata4] branch master updated: [OLINGO-1333]ODataResponse for delta client throws NPE on Asynchronous calls

2019-03-26 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 3395683  [OLINGO-1333]ODataResponse for delta client throws NPE on 
Asynchronous calls
3395683 is described below

commit 3395683b5a68629a2bf12d3ed577a82e04909c5a
Author: Archana Rai 
AuthorDate: Tue Mar 26 17:23:54 2019 +0530

[OLINGO-1333]ODataResponse for delta client throws NPE on Asynchronous calls
---
 .../src/main/java/org/apache/olingo/commons/api/Constants.java| 1 +
 .../olingo/server/core/serializer/json/JsonDeltaSerializer.java   | 2 +-
 .../core/serializer/json/JsonDeltaSerializerWithNavigations.java  | 2 +-
 .../server/core/serializer/json/JsonDeltaSerializerTest.java  | 8 
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
index e41abd4..9f29f63 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
@@ -333,4 +333,5 @@ public interface Constants {
   String REMOVED = "removed";
   String ENTITY = "/$entity";
   String REASON = "Reason";
+  String ID = "@id";
 }
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializer.java
index 0708d5d..c6c5ac4 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializer.java
@@ -191,7 +191,7 @@ public class JsonDeltaSerializer implements 
EdmDeltaSerializer {
 }
 json.writeStartObject();
 json.writeStringField(Constants.JSON_CONTEXT, HASH + 
deletedEntity.getId().toASCIIString() + DELETEDENTITY);
-json.writeStringField(Constants.JSON_ID, 
deletedEntity.getId().toASCIIString());
+json.writeStringField(Constants.ATOM_ATTR_ID, 
deletedEntity.getId().toASCIIString());
 json.writeStringField(Constants.ELEM_REASON, 
deletedEntity.getReason().name());
 json.writeEndObject();
 
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerWithNavigations.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerWithNavigations.java
index 673a6dd..ad8635d 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerWithNavigations.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerWithNavigations.java
@@ -225,7 +225,7 @@ public class JsonDeltaSerializerWithNavigations implements 
EdmDeltaSerializer {
 json.writeStringField(property.getName(), 
property.getValue().toString());
   }
 }
-json.writeStringField(Constants.AT + Constants.ATOM_ATTR_ID, 
deletedEntity.getId().toASCIIString());
+json.writeStringField(Constants.ID,  
deletedEntity.getId().toASCIIString());
 json.writeEndObject();
 
   }
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerTest.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerTest.java
index 3e221d6..0ade205 100644
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerTest.java
+++ 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/JsonDeltaSerializerTest.java
@@ -144,9 +144,9 @@ public class JsonDeltaSerializerTest {
final String expectedResult = "{"
+"\"@odata.context\":\"$metadata#ESDelta/$delta\",\"value\":[{"
+ "\"@odata.context\":\"#ESDelta(100)/$deletedEntity\","
-   + "\"@odata.id\":\"ESDelta(100)\",\"reason\":\"deleted\"},{"
+   + "\"id\":\"ESDelta(100)\",\"reason\":\"deleted\"},{"
+ "\"@odata.context\":\"#ESDelta(-32768)/$deletedEntity\","
-   + "\"@odata.id\":\"ESDelta(-32768)\",\"reason\":\"changed\"}]"
+   + "\"id\":\"ESDelta(-32768)\",\"reason\":\"changed\"}]"
+ "}";
Assert.assertNotNull(jsonString);
Assert.assertEquals(expectedResult, jsonString);
@@ -231,8 +231,8 @@ public cla

[olingo-odata4] branch master updated: [OLINGO-1333]ODataResponse for delta client throws NPE on Asynchronous calls

2019-03-26 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 256b14f  [OLINGO-1333]ODataResponse for delta client throws NPE on 
Asynchronous calls
256b14f is described below

commit 256b14f02ba4763e0cf741710b705b987b4e98d5
Author: Archana Rai 
AuthorDate: Tue Mar 26 17:05:59 2019 +0530

[OLINGO-1333]ODataResponse for delta client throws NPE on Asynchronous calls
---
 .../olingo/fit/base/ConformanceTestITCase.java | 45 +-
 .../request/retrieve/ODataDeltaRequestImpl.java| 13 ++-
 2 files changed, 56 insertions(+), 2 deletions(-)

diff --git 
a/fit/src/test/java/org/apache/olingo/fit/base/ConformanceTestITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/base/ConformanceTestITCase.java
index 7e08428..23215a3 100644
--- a/fit/src/test/java/org/apache/olingo/fit/base/ConformanceTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/base/ConformanceTestITCase.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
 
+import org.apache.olingo.client.api.communication.request.AsyncRequestFactory;
 import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
 import 
org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
 import 
org.apache.olingo.client.api.communication.request.retrieve.ODataDeltaRequest;
@@ -41,8 +42,8 @@ import org.apache.olingo.client.api.domain.ClientProperty;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.http.HttpHeader;
 import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.commons.api.http.HttpHeader;
 import org.junit.Test;
 
 /**
@@ -163,6 +164,48 @@ public class ConformanceTestITCase extends 
AbstractTestITCase {
 assertTrue(property.hasComplexValue());
   }
 
+  
+  /**
+   * 10. MAY support deleted entities, link entities, deleted link entities in 
a delta response for asynch req.
+   */
+  @Test
+  public void itemAsynch10() {
+
+final ODataEntitySetRequest req = 
client.getRetrieveRequestFactory().getEntitySetRequest(
+
client.newURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Customers").build());
+req.setPrefer(client.newPreferences().trackChanges());
+ 
+final ClientEntitySet customers = req.execute().getBody();
+assertNotNull(customers);
+assertNotNull(customers.getDeltaLink());
+ 
+final ODataDeltaRequest deltaReq = 
client.getRetrieveRequestFactory().getDeltaRequest(customers.getDeltaLink());
+
+AsyncRequestFactory asyncRequestFactory = client.getAsyncRequestFactory();
+AsyncRequestWrapper> 
asyncRequestWrapper =
+asyncRequestFactory
+
.>getAsyncRequestWrapper(deltaReq);
+
+AsyncResponseWrapper> responseWrapper =
+asyncRequestWrapper
+.execute();
+if (responseWrapper.isPreferenceApplied()) {
+int waitInSec = 5;
+while (!responseWrapper.isDone()) {
+try {
+Thread.sleep(waitInSec);
+} catch (InterruptedException e) {
+// TODO Auto-generated catch block
+e.printStackTrace();
+}
+}
+}
+boolean done = responseWrapper.isDone();
+ODataRetrieveResponse res = 
responseWrapper.getODataResponse();
+ClientDelta delta = res.getBody(); // NPE !!!
+assertNotNull(delta);
+  }
+  
   /**
* 11. MAY support asynchronous responses (section 9.1.3).
*/
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
index 7485ad4..629e158 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
@@ -18,6 +18,8 @@
  */
 package org.apache.olingo.client.core.communication.request.retrieve;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 
 import org.apache.http.HttpResponse;
@@ -27,6 +29,7 @@ import 
org.apache.olingo.client.api.communication.request.retrieve.ODataDeltaReq
 import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.data.ResWrap;
 import org.apache.olingo.client.api.domain.ClientDelta;
+import org.apache.olingo.client.api.http.HttpClientException;
 import org.apache.olingo.client.api.serialization.ODataDe

[olingo-odata4] branch master updated: [OLINGO-1315]OData v4.0:Client: API to return HTTP Request details

2019-03-26 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 f91568e  [OLINGO-1315]OData v4.0:Client: API to return HTTP Request 
details
f91568e is described below

commit f91568e1abe6e4b606d541d6c3a85218d6ab739e
Author: Archana Rai 
AuthorDate: Tue Mar 26 16:56:08 2019 +0530

[OLINGO-1315]OData v4.0:Client: API to return HTTP Request details
---
 .../olingo/fit/tecsvc/client/BasicITCase.java  | 88 +-
 .../request/retrieve/ODataDeltaRequestImpl.java|  6 +-
 .../request/retrieve/ODataMediaRequestImpl.java|  8 +-
 .../request/retrieve/ODataPropertyRequestImpl.java |  6 +-
 .../response/AbstractODataResponse.java| 21 +-
 5 files changed, 109 insertions(+), 20 deletions(-)

diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 8e303ba..e04f668 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -31,6 +31,7 @@ import static org.junit.Assume.assumeTrue;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringWriter;
 import java.math.BigDecimal;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -41,6 +42,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.olingo.client.api.EdmEnabledODataClient;
 import org.apache.olingo.client.api.ODataClient;
@@ -303,8 +305,8 @@ public class BasicITCase extends AbstractParamTecSvcITCase {
 getEntitySetRequest(uriBuilder.build());
 
 final ODataRetrieveResponse res = req.execute();
+assertNotNull(res.getRawResponse());
 final ClientEntitySet feed = res.getBody();
-
 assertNotNull(feed);
 
 assertEquals(10, feed.getEntities().size());
@@ -364,7 +366,7 @@ public class BasicITCase extends AbstractParamTecSvcITCase {
 saveCookieHeader(response);
 assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
 assertContentType(response.getContentType());
-
+assertNotNull(response.getRawResponse());
 final ClientEntity entity = response.getBody();
 assertNotNull(entity);
 final ClientProperty property = entity.getProperty("CollPropertyInt16");
@@ -378,6 +380,30 @@ public class BasicITCase extends AbstractParamTecSvcITCase 
{
   }
 
   @Test
+  public void readEntityProperty() throws Exception {
+ODataPropertyRequest request = 
getClient().getRetrieveRequestFactory()
+.getPropertyRequest(getClient().newURIBuilder(SERVICE_URI)
+.appendEntitySetSegment("ESCollAllPrim").appendKeySegment(1)
+.appendPropertySegment("CollPropertyInt16").build());
+assertNotNull(request);
+setCookieHeader(request);
+
+final ODataRetrieveResponse response = request.execute();
+saveCookieHeader(response);
+assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+assertContentType(response.getContentType());
+assertNotNull(response.getRawResponse());
+final ClientProperty property = response.getBody();
+assertNotNull(property);
+assertNotNull(property.getCollectionValue());
+assertEquals(3, property.getCollectionValue().size());
+Iterator iterator = property.getCollectionValue().iterator();
+assertShortOrInt(1000, iterator.next().asPrimitive().toValue());
+assertShortOrInt(2000, iterator.next().asPrimitive().toValue());
+assertShortOrInt(30112, iterator.next().asPrimitive().toValue());
+  }
+  
+  @Test
   public void deleteEntity() throws Exception {
 final URI uri = 
getClient().newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_ALL_PRIM).appendKeySegment(32767)
 .build();
@@ -431,6 +457,64 @@ public class BasicITCase extends AbstractParamTecSvcITCase 
{
 assertEquals(isJson() ? "PT6S" : BigDecimal.valueOf(6), 
property4.getPrimitiveValue().toValue());
   }
 
+
+  @Test
+  public void readUpdatepdateEntity() throws Exception {
+
+EdmMetadataRequest request = 
getClient().getRetrieveRequestFactory().getMetadataRequest(SERVICE_URI);
+assertNotNull(request);
+setCookieHeader(request);
+
+ODataRetrieveResponse response = request.execute();
+saveCookieHeader(response);
+assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+
+Edm edm = response.getBody();
+assertNotNull(edm);
+
+final EdmEntityContainer container = edm.getEntityContainer(
+new FullQualifiedName("olingo.odata.test1", "Container"));
+asser

[olingo-odata4] branch master updated: [OLINGO-1315]OData v4.0:Client: API to return HTTP Request details

2019-03-26 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 5b32c3a  [OLINGO-1315]OData v4.0:Client: API to return HTTP Request 
details
5b32c3a is described below

commit 5b32c3acbf026140b39b308d7fc3b56a145f8947
Author: Archana Rai 
AuthorDate: Tue Mar 26 16:33:14 2019 +0530

[OLINGO-1315]OData v4.0:Client: API to return HTTP Request details
---
 .../test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java| 4 +++-
 .../client/core/communication/request/AbstractODataBasicRequest.java  | 2 +-
 .../client/core/communication/request/cud/ODataDeleteRequestImpl.java | 2 +-
 .../core/communication/request/cud/ODataEntityCreateRequestImpl.java  | 2 +-
 .../core/communication/request/cud/ODataEntityUpdateRequestImpl.java  | 2 +-
 .../communication/request/cud/ODataPropertyUpdateRequestImpl.java | 2 +-
 .../communication/request/cud/ODataReferenceAddingRequestImpl.java| 2 +-
 .../core/communication/request/cud/ODataValueUpdateRequestImpl.java   | 2 +-
 .../core/communication/request/invoke/AbstractODataInvokeRequest.java | 2 +-
 .../communication/request/retrieve/AbstractODataRetrieveRequest.java  | 2 +-
 .../client/core/communication/response/AbstractODataResponse.java | 2 +-
 11 files changed, 13 insertions(+), 11 deletions(-)

diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 0cfb163..8e303ba 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -84,6 +84,7 @@ import org.apache.olingo.client.api.uri.FilterFactory;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.client.api.uri.URIFilter;
 import org.apache.olingo.client.core.ODataClientFactory;
+import 
org.apache.olingo.client.core.communication.request.AbstractODataBasicRequest;
 import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmActionImport;
@@ -538,7 +539,8 @@ public class BasicITCase extends AbstractParamTecSvcITCase {
 newEntity);
 assertNotNull(createRequest);
 final ODataEntityCreateResponse createResponse = 
createRequest.execute();
-
+assertNotNull(createRequest.getHttpRequest());
+assertNotNull(((AbstractODataBasicRequest)createRequest).getPayload());
 assertEquals(HttpStatusCode.CREATED.getStatusCode(), 
createResponse.getStatusCode());
 assertEquals(SERVICE_URI + ES_ALL_PRIM + "(1)", 
createResponse.getHeader(HttpHeader.LOCATION).iterator().next());
 final ClientEntity createdEntity = createResponse.getBody();
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
index 5435f7f..29b7404 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
@@ -81,7 +81,7 @@ public abstract class AbstractODataBasicRequest
*
* @return InputStream for entire payload.
*/
-  protected abstract InputStream getPayload();
+  public abstract InputStream getPayload();
 
   /**
* Serializes the full request into the given batch request.
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataDeleteRequestImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataDeleteRequestImpl.java
index 245c9b5..7ff866e 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataDeleteRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataDeleteRequestImpl.java
@@ -50,7 +50,7 @@ public class ODataDeleteRequestImpl extends 
AbstractODataBasicRequest
   }
 
   @Override
-  protected InputStream getPayload() {
+  public InputStream getPayload() {
 try {
   return odataClient.getWriter().writeEntity(entity, 
ContentType.parse(getContentType()));
 } catch (final ODataSerializerException e) {
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
index 2ddefbb..35b9dec 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/r

[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/ap

[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

olingo-odata2 git commit: [Olingo-1259]Function Import enhancements

2018-12-04 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 39e00568c -> beccbbf3e


[Olingo-1259]Function Import enhancements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/beccbbf3
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/beccbbf3
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/beccbbf3

Branch: refs/heads/master
Commit: beccbbf3ee5cf4ac7ebd724d2aecf084d85a0769
Parents: 39e0056
Author: Archana Rai 
Authored: Tue Dec 4 16:32:45 2018 +0530
Committer: Archana Rai 
Committed: Tue Dec 4 16:32:45 2018 +0530

--
 .../odata2/core/ep/AtomEntityProvider.java  | 33 +++-
 .../odata2/core/ep/JsonEntityProvider.java  | 26 ---
 .../ep/producer/JsonFunctionImportTest.java | 21 +
 .../core/ep/producer/XmlFunctionImportTest.java | 16 ++
 .../odata2/ref/edm/ScenarioEdmProvider.java |  8 +
 .../ref/processor/ScenarioDataSource.java   |  5 ++-
 .../olingo/odata2/testutil/mock/EdmMock.java| 22 +
 7 files changed, 104 insertions(+), 27 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/beccbbf3/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
index 9c79747..201ffc7 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
@@ -333,21 +333,24 @@ public class AtomEntityProvider implements 
ContentTypeBasedEntityProvider {
   public ODataResponse writeFunctionImport(final EdmFunctionImport 
functionImport, final Object data,
   final EntityProviderWriteProperties properties) throws 
EntityProviderException {
 try {
-  final EdmType type = functionImport.getReturnType().getType();
-  final boolean isCollection = 
functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY;
-
-  if (type.getKind() == EdmTypeKind.ENTITY) {
-@SuppressWarnings("unchecked")
-Map map = (Map) data;
-return writeEntry(functionImport.getEntitySet(), map, properties);
-  }
-
-  final EntityPropertyInfo info = 
EntityInfoAggregator.create(functionImport);
-  if (isCollection) {
-return writeCollection(info, (List) data);
-  } else {
-return writeSingleTypedElement(info, data);
-  }
+  if(functionImport.getReturnType() !=null){
+final EdmType type = functionImport.getReturnType().getType();
+final boolean isCollection = 
functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY;
+  
+if (type.getKind() == EdmTypeKind.ENTITY) {
+  @SuppressWarnings("unchecked")
+  Map map = (Map) data;
+  return writeEntry(functionImport.getEntitySet(), map, properties);
+}
+final EntityPropertyInfo info = 
EntityInfoAggregator.create(functionImport);
+if (isCollection) {
+  return writeCollection(info, (List) data);
+} else {
+  return writeSingleTypedElement(info, data);
+}
+ }else{
+   return 
ODataResponse.newBuilder().status(HttpStatusCodes.ACCEPTED).build();
+ }
 } catch (EdmException e) {
   throw new EntityProviderProducerException(e.getMessageReference(), e);
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/beccbbf3/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
index 20a9f9b..fa94320 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
@@ -286,17 +286,21 @@ public class JsonEntityProvider implements 
ContentTypeBasedEntityProvider {
   public ODataResponse writeFunctionImport(final EdmFunctionImport 
functionImport, final Object data,
   final EntityProviderWriteProperties properties) throws 
EntityProviderException {
 try {
-  if (functionImport.getReturnType().getType().getKind() == 
EdmTypeKind.ENTITY) {
-@SuppressWarnings("unchecked")
-Map map = (Map) data;
-return 

olingo-odata2 git commit: [OLINGO-1183, 1118, 1309, 1313]Multiple JPA issues

2018-12-04 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 962d787cc -> 39e00568c


[OLINGO-1183,1118,1309,1313]Multiple JPA issues


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/39e00568
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/39e00568
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/39e00568

Branch: refs/heads/master
Commit: 39e00568c13b5decc124256ecf8a83fa155f496a
Parents: 962d787
Author: Archana Rai 
Authored: Tue Dec 4 16:18:00 2018 +0530
Committer: Archana Rai 
Committed: Tue Dec 4 16:18:00 2018 +0530

--
 .../processor/core/ODataExpressionParser.java   |  10 +-
 .../core/ODataJPAResponseBuilderDefault.java|  36 ++-
 .../processor/core/access/data/JPAEntity.java   |   6 +-
 .../jpa/processor/core/access/data/JPAPage.java |   4 +-
 .../core/access/data/JPAProcessorImpl.java  |  11 +-
 .../core/access/data/JPAQueryBuilder.java   |  46 
 .../processor/core/jpql/JPQLSelectContext.java  |   6 +-
 .../core/ODataJPAResponseBuilderTest.java   |   8 +-
 .../core/access/data/JPAProcessorImplTest.java  | 239 ++-
 .../core/access/data/JPAQueryBuilderTest.java   | 125 +-
 .../core/mock/ODataJPAContextMock.java  |   5 +
 .../ref/listeners/CustomerQueryExtension.java   |  24 +-
 .../core/batch/BatchChangeSetPartImpl.java  |   2 +-
 .../olingo/odata2/core/batch/BatchHelper.java   |   4 +-
 .../odata2/core/debug/DebugInfoRuntime.java |   4 +-
 .../odata2/core/uri/expression/InfoMethod.java  |   8 +-
 .../core/uri/expression/ParameterSet.java   |   2 +-
 .../uri/expression/ParameterSetCombination.java |   2 +-
 .../helper/ODataMessageTextVerifier.java|   2 +-
 19 files changed, 495 insertions(+), 49 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/39e00568/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index 78d04ee..25b4f9f 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -167,9 +167,11 @@ public class ODataExpressionParser {
   case EQ:
 EdmSimpleType type = 
(EdmSimpleType)((BinaryExpression)whereExpression).getLeftOperand().getEdmType();
 
if(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance().isCompatible(type)){
-  return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
+  if(edmMapping== null || (edmMapping!=null && 
!(((JPAEdmMappingImpl)edmMapping).getJPAType()).isEnum())){
+return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
   + (!"null".equals(right) ? JPQLStatement.Operator.LIKE : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
   + ("null".equals(right) ? "" : " ESCAPE '\\'") + 
JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
+  }
 }
 return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
 + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
@@ -272,6 +274,8 @@ public class ODataExpressionParser {
 }
   case TOLOWER:
 return String.format("LOWER(%s)", first);
+  case TOUPPER:
+return String.format("UPPER(%s)", first);
   case STARTSWITH:
 return String.format("%s LIKE CONCAT(%s,'%%') ESCAPE '\\'", first, 
second);
   case ENDSWITH:
@@ -633,6 +637,10 @@ public class ODataExpressionParser {
   positionalParameters.put(index, (Character)uriLiteral.charAt(0));
 }else if(edmMappedType.equals(UUID.class)){
   positionalParameters.put(index, UUID.fromString(uriLiteral));
+}else if (edmMappedType.isEnum()) {
+  Class enCl = (Class)edmMappedType;
+  positionalParameters.put(index, Enum.valueOf(enCl, 
+  (String) uriLiteral));
 }else {
   positionalParameters.put(index, String.valueOf(uriLiteral));
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/39e00568/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderDefault.java
--
diff --git 

olingo-odata2 git commit: [Olingo-1228]JPA Parameterization issue

2018-12-03 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master d32a900a4 -> 962d787cc


[Olingo-1228]JPA Parameterization issue


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/962d787c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/962d787c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/962d787c

Branch: refs/heads/master
Commit: 962d787cc8f9a0642d90bf328d7988f498b00c3c
Parents: d32a900
Author: Archana Rai 
Authored: Tue Dec 4 13:22:45 2018 +0530
Committer: Archana Rai 
Committed: Tue Dec 4 13:22:45 2018 +0530

--
 .../processor/core/ODataExpressionParser.java   | 38 ++--
 .../processor/core/jpql/JPQLSelectContext.java  |  2 +-
 2 files changed, 28 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/962d787c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index 182a2da..78d04ee 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -31,6 +31,7 @@ import java.util.TreeMap;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.olingo.odata2.api.edm.EdmElement;
 import org.apache.olingo.odata2.api.edm.EdmException;
 import org.apache.olingo.odata2.api.edm.EdmLiteral;
 import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
@@ -87,16 +88,18 @@ public class ODataExpressionParser {
*/
   public static String parseToJPAWhereExpression(final CommonExpression 
whereExpression, final String tableAlias)
   throws ODataException {
-return parseToJPAWhereExpression(whereExpression, tableAlias, 1, new 
ConcurrentHashMap());
+EdmMapping edmMapping = null;
+return parseToJPAWhereExpression(whereExpression, tableAlias, 1, 
+new ConcurrentHashMap(), edmMapping);
   }
   
   public static String parseToJPAWhereExpression(final CommonExpression 
whereExpression, final String tableAlias, 
-  int index, Map positionalParameters) throws 
ODataException {
+  int index, Map positionalParameters,EdmMapping 
edmMapping) throws ODataException {
 switch (whereExpression.getKind()) {
 case UNARY:
   final UnaryExpression unaryExpression = (UnaryExpression) 
whereExpression;
   final String operand = 
parseToJPAWhereExpression(unaryExpression.getOperand(), tableAlias, 
-  index, positionalParameters);
+  index, positionalParameters, edmMapping);
 
   switch (unaryExpression.getOperator()) {
   case NOT:
@@ -114,7 +117,7 @@ public class ODataExpressionParser {
 
 case FILTER:
   return parseToJPAWhereExpression(((FilterExpression) 
whereExpression).getExpression(), tableAlias, 
-  index, positionalParameters);
+  index, positionalParameters, edmMapping);
 case BINARY:
   final BinaryExpression binaryExpression = (BinaryExpression) 
whereExpression;
   MethodOperator operator = null;
@@ -128,9 +131,10 @@ public class ODataExpressionParser {
 }
   }
   final String left = 
parseToJPAWhereExpression(binaryExpression.getLeftOperand(), tableAlias, 
-  getIndexValue(index, positionalParameters), positionalParameters);
+  getIndexValue(index, positionalParameters), positionalParameters, 
edmMapping);
+  edmMapping = getEdmMapping(binaryExpression);
   final String right = 
parseToJPAWhereExpression(binaryExpression.getRightOperand(), tableAlias, 
-  getIndexValue(index, positionalParameters), positionalParameters);
+  getIndexValue(index, positionalParameters), positionalParameters, 
edmMapping);
 
   // Special handling for STARTSWITH and ENDSWITH method expression
   if (operator != null && (operator == MethodOperator.STARTSWITH || 
operator == MethodOperator.ENDSWITH)) {
@@ -236,19 +240,20 @@ public class ODataExpressionParser {
   final LiteralExpression literal = (LiteralExpression) whereExpression;
   final EdmSimpleType literalType = (EdmSimpleType) literal.getEdmType();
   EdmLiteral uriLiteral = 
EdmSimpleTypeKind.parseUriLiteral(literal.getUriLiteral());
-  return evaluateComparingExpression(uriLiteral.getLiteral(), literalType, 
null, 
+  Class edmMap = edmMapping != null 

[2/2] olingo-odata4 git commit: [OLINGO-1191]Code Improvements

2018-11-19 Thread archanarai
[OLINGO-1191]Code Improvements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/c37d40f1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/c37d40f1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/c37d40f1

Branch: refs/heads/master
Commit: c37d40f154d1147a11a97a85c00326adc30e7e92
Parents: f564c4a
Author: Archana Rai 
Authored: Mon Nov 19 14:35:19 2018 +0530
Committer: Archana Rai 
Committed: Mon Nov 19 14:35:19 2018 +0530

--
 .../request/AsyncRequestWrapperTest.java|  89 +++
 .../request/batch/ODataBatchControllerTest.java |  57 +
 .../request/batch/ODataBatchUtilitiesTest.java  | 133 ++
 .../request/cud/ODataRequestImplTest.java   | 156 
 .../request/invoke/ODataInvokeRequestTest.java  |  65 +
 .../request/retrieve/RetrieveRequestTest.java   | 186 ++
 .../response/batch/ODataBatchResponseTest.java  | 153 
 .../client/core/data/ServiceDocumentTest.java   |  58 +
 .../core/domain/ClientObjectImplTest.java   | 249 +++
 .../request/batch/batchResponse.batch   |  37 +++
 .../response/batch/batchResponse.batch  |  37 +++
 .../olingo/server/api/ODataResponseTest.java|  52 
 .../olingo/server/core/ErrorHandlerTest.java| 131 ++
 .../core/RequestUrlHierarchyVisitorTest.java| 101 
 14 files changed, 1504 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c37d40f1/lib/client-core/src/test/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperTest.java
 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperTest.java
new file mode 100644
index 000..f61ecf3
--- /dev/null
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperTest.java
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.communication.request;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.olingo.client.api.ODataClient;
+import 
org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
+import org.apache.olingo.client.api.domain.ClientInvokeResult;
+import org.apache.olingo.client.core.ODataClientFactory;
+import 
org.apache.olingo.client.core.communication.request.AsyncRequestWrapperImpl.AsyncResponseWrapperImpl;
+import 
org.apache.olingo.client.core.communication.request.batch.ODataBatchRequestImpl;
+import 
org.apache.olingo.client.core.communication.request.invoke.ODataInvokeRequestImpl;
+import org.apache.olingo.commons.api.http.HttpMethod;
+import org.junit.Test;
+
+public class AsyncRequestWrapperTest {
+
+  @Test
+  public void testBatchReq() throws URISyntaxException {
+
+ODataClient client = ODataClientFactory.getClient();
+URI uri = new URI("localhost:8080");
+AsyncBatchRequestWrapperImpl req = new 
AsyncBatchRequestWrapperImpl(client, 
+client.getBatchRequestFactory().getBatchRequest("root"));
+assertNotNull(req.addChangeset());
+ODataBatchableRequest request = new 
ODataInvokeRequestImpl(
+client, ClientInvokeResult.class, HttpMethod.GET, uri);
+req.addRetrieve(request );
+req.addOutsideUpdate(request);
+
assertNotNull(client.getAsyncRequestFactory().getAsyncRequestWrapper(request));
+ODataBatchRequestImpl batchRequest = new ODataBatchRequestImpl(client, 
uri);
+
assertNotNull(client.getAsyncRequestFactory().getAsyncBatchRequestWrapper(batchRequest
 ));
+assertNotNull(req.wait(10));
+  }
+  
+  @Test
+  public void testReq() throws URISyntaxException {
+
+ODataClient client = 

[1/2] olingo-odata4 git commit: [OLINGO-1191]Code Improvements

2018-11-19 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master cf04fdcb4 -> c37d40f15


[OLINGO-1191]Code Improvements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/f564c4a1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/f564c4a1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/f564c4a1

Branch: refs/heads/master
Commit: f564c4a187fe226e5ff98accba3e4683cf1f28f0
Parents: cf04fdc
Author: Archana Rai 
Authored: Mon Nov 19 14:33:33 2018 +0530
Committer: Archana Rai 
Committed: Mon Nov 19 14:33:33 2018 +0530

--
 .../olingo/client/core/EntitySetTest.java   | 12 +++
 .../apache/olingo/client/core/ErrorTest.java| 13 +++
 .../olingo/client/core/ODataClientTest.java | 91 
 .../server/api/TranslatedExceptionsTest.java| 16 
 .../olingo/server/core/ExceptionHelperTest.java | 34 
 .../olingo/server/core/ODataImplTest.java   | 10 ++-
 .../core/deserializer/batch/HeaderTest.java |  7 ++
 .../server/core/ODataHandlerImplTest.java   | 24 ++
 8 files changed, 206 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f564c4a1/lib/client-core/src/test/java/org/apache/olingo/client/core/EntitySetTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/EntitySetTest.java
 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/EntitySetTest.java
index 6ea256b..6b89475 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/EntitySetTest.java
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/EntitySetTest.java
@@ -141,6 +141,18 @@ private EdmEnabledODataClient getEdmEnabledClient1() {
   }
   
   @Test
+  public void testClientEntitySet() throws Exception {
+final EdmEnabledODataClientImpl client = new 
EdmEnabledODataClientImpl(null, 
+getEdmEnabledClient1().getCachedEdm(), null);
+assertNotNull(client);
+assertNull(client.getServiceRoot());
+client.newURIBuilder();
+assertNotNull(client.getCachedEdm());
+assertNotNull(client.getEdm(null));
+assertNotNull(client.getInvokeRequestFactory());
+  }
+  
+  @Test
   public void testContainmentNavOnSingleton() throws Exception {
 final InputStream input = 
getClass().getResourceAsStream("containmentNav4." + 
   getSuffix(ContentType.JSON_FULL_METADATA));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f564c4a1/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java
index f2e9af7..ebea132 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java
@@ -36,6 +36,7 @@ import 
org.apache.olingo.client.api.serialization.ODataDeserializerException;
 import 
org.apache.olingo.client.core.communication.header.ODataErrorResponseChecker;
 import org.apache.olingo.commons.api.ex.ODataError;
 import org.apache.olingo.commons.api.ex.ODataErrorDetail;
+import org.apache.olingo.commons.api.ex.ODataRuntimeException;
 import org.apache.olingo.commons.api.format.ContentType;
 import org.junit.Test;
 
@@ -113,4 +114,16 @@ public class ErrorTest extends AbstractTest {
 checkResponse(odataClient, statusLine, entity, "Json");
 assertTrue(exp.getMessage().startsWith("Internal Server Error"));
   }
+  
+  @Test
+  public void testWithNull() throws Exception {
+ODataClient odataClient = ODataClientFactory.getClient();
+StatusLine statusLine = mock(StatusLine.class);
+when(statusLine.getStatusCode()).thenReturn(500);
+when(statusLine.toString()).thenReturn("Internal Server Error");
+
+ODataRuntimeException exp = ODataErrorResponseChecker.
+checkResponse(odataClient, statusLine, null, "Json");
+assertTrue(exp.getMessage().startsWith("Internal Server Error"));
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f564c4a1/lib/client-core/src/test/java/org/apache/olingo/client/core/ODataClientTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/ODataClientTest.java
 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/ODataClientTest.java
index eaca8b5..f764463 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/ODataClientTest.java
+++ 

olingo-odata4 git commit: [OLINGO-1315]ODATA V4.0 Client: API to return HTTP Request details

2018-11-19 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master fb2d21d70 -> cf04fdcb4


[OLINGO-1315]ODATA V4.0 Client: API to return HTTP Request details


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/cf04fdcb
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/cf04fdcb
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/cf04fdcb

Branch: refs/heads/master
Commit: cf04fdcb4ec9aa61152f4160f369a1cb50e01741
Parents: fb2d21d
Author: Archana Rai 
Authored: Mon Nov 19 13:44:40 2018 +0530
Committer: Archana Rai 
Committed: Mon Nov 19 13:44:40 2018 +0530

--
 .../org/apache/olingo/fit/tecsvc/client/BasicITCase.java | 3 +++
 .../client/api/communication/request/ODataRequest.java   | 8 
 .../core/communication/request/AbstractODataRequest.java | 5 +
 3 files changed, 16 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cf04fdcb/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
--
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 960e63b..0cfb163 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -41,6 +41,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.olingo.client.api.EdmEnabledODataClient;
 import org.apache.olingo.client.api.ODataClient;
 import org.apache.olingo.client.api.communication.ODataClientErrorException;
@@ -439,7 +440,9 @@ public class BasicITCase extends AbstractParamTecSvcITCase {
 .build();
 final ODataEntityUpdateRequest request = 
getClient().getCUDRequestFactory().getEntityUpdateRequest(
 uri, UpdateType.REPLACE, newEntity);
+HttpUriRequest req = request.getHttpRequest();
 final ODataEntityUpdateResponse response = request.execute();
+assertNotNull(req);
 assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
 
 // Check that the updated properties have changed and that other 
properties have their default values.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cf04fdcb/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
--
diff --git 
a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
 
b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
index ffc70b7..c783dab 100644
--- 
a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
+++ 
b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import java.net.URI;
 import java.util.Collection;
 
+import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.olingo.commons.api.http.HttpMethod;
 
 /**
@@ -39,6 +40,13 @@ public interface ODataRequest {
* @return OData request target URI.
*/
   URI getURI();
+  
+  /**
+   * Returns Http request Object.
+   *
+   * @return HttpUriRequest.
+   */
+  HttpUriRequest getHttpRequest();
 
   /**
* Sets OData request target URI.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cf04fdcb/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
--
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
index 4642db0..12ad732 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
@@ -111,6 +111,11 @@ public abstract class AbstractODataRequest extends 
AbstractRequest implements OD
   public URI getURI() {
 return uri;
   }
+  
+  @Override
+  public HttpUriRequest getHttpRequest() {
+return request;
+  }
 
   @Override
   public void setURI(final URI uri) {



olingo-odata2 git commit: [OLINGO-1304]ODATA V2.0 :Client serialization fails for keyAutoGeneration of type UUID

2018-10-03 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master e2b2b191f -> efff5d910


[OLINGO-1304]ODATA V2.0 :Client serialization fails for keyAutoGeneration of 
type UUID


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/efff5d91
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/efff5d91
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/efff5d91

Branch: refs/heads/master
Commit: efff5d910493143a8a962ac1fd67b1a91ac962c5
Parents: e2b2b19
Author: Archana Rai 
Authored: Wed Oct 3 16:47:48 2018 +0530
Committer: Archana Rai 
Committed: Wed Oct 3 16:47:48 2018 +0530

--
 .../serializer/AtomEntryEntitySerializer.java   |  2 +-
 .../ep/serializer/AtomEntrySerializerTest.java  | 72 
 2 files changed, 73 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/efff5d91/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
index 058..50fe56f 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
@@ -603,7 +603,7 @@ public class AtomEntryEntitySerializer {
   } else if (edmType == BigDecimal.class) {
 return BigDecimal.valueOf(0.0);
   } else if (edmType == UUID.class) {
-return UUID.fromString("0");
+return UUID.fromString("----");
   } else if (edmType == Timestamp.class) {
 return new Timestamp(Calendar.getInstance().getTimeInMillis());
   } else if (edmType == Calendar.class) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/efff5d91/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
index f384bbc..4ae9985 100644
--- 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
@@ -34,6 +34,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
@@ -47,12 +48,17 @@ import javax.xml.stream.XMLStreamException;
 import org.apache.olingo.odata2.api.edm.Edm;
 import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
 import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmException;
 import org.apache.olingo.odata2.api.edm.EdmFacets;
 import org.apache.olingo.odata2.api.edm.EdmMapping;
 import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmStructuralType;
 import org.apache.olingo.odata2.api.edm.EdmTargetPath;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
 import org.apache.olingo.odata2.api.edm.EdmTyped;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
 import org.apache.olingo.odata2.api.exception.ODataException;
@@ -355,6 +361,72 @@ public class AtomEntrySerializerTest extends 
AbstractProviderTest {
   }
 
   
+  private static EdmEntityType createEntityTypeMock(final String name, final 
EdmSimpleTypeKind kind,
+  final String keyPropertyId) throws EdmException {
+EdmEntityType entityType = mock(EdmEntityType.class);
+when(entityType.getName()).thenReturn(name);
+when(entityType.getNamespace()).thenReturn("RefScenario");
+
+final EdmProperty keyProperty = createProperty(keyPropertyId, kind, 
entityType);
+EdmFacets facets = mock(EdmFacets.class);
+

olingo-odata2 git commit: [OLINGO-1298] Hibernate latest version compliance

2018-09-26 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 1f9dbe462 -> e2b2b191f


[OLINGO-1298] Hibernate latest version compliance


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/e2b2b191
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/e2b2b191
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/e2b2b191

Branch: refs/heads/master
Commit: e2b2b191f86fa5ee93a8f452c4392dc14a6648cc
Parents: 1f9dbe4
Author: Archana Rai 
Authored: Wed Sep 26 16:23:08 2018 +0530
Committer: Archana Rai 
Committed: Wed Sep 26 16:23:08 2018 +0530

--
 .../jpa/processor/core/access/data/JPAPage.java | 23 ++--
 1 file changed, 16 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/e2b2b191/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
index d3dc88b..4effd5b 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
@@ -72,8 +72,8 @@ public class JPAPage implements JPAPaging {
 private List pagedEntities;
 
 private static class TopSkip {
-  public int top;
-  public int skip;
+  public Integer top;
+  public Integer skip;
 }
 
 public JPAPageBuilder() {}
@@ -99,10 +99,15 @@ public class JPAPage implements JPAPaging {
 private JPAPage buildFromEntities() {
   TopSkip topSkip = formulateTopSkip();
   pagedEntities = new ArrayList();
-  if (topSkip.skip <= 0) {
-topSkip.skip = 1;
+  Integer top = topSkip.top;
+  Integer skip = topSkip.skip;
+  if (skip == null || topSkip.skip <= 0) {
+skip = 1;
   }
-  for (int i = topSkip.skip - 1, j = 0; (j < topSkip.top && i < 
entities.size()); j++) {
+  if(top == null || topSkip.top <= 0){
+top = 0;
+  }
+  for (int i = skip - 1, j = 0; (j < top && i < entities.size()); j++) {
 pagedEntities.add(entities.get(i++));
   }
   formulateNextPage();
@@ -112,8 +117,12 @@ public class JPAPage implements JPAPaging {
 @SuppressWarnings("unchecked")
 private JPAPage buildFromQuery() {
   TopSkip topSkip = formulateTopSkip();
-  query.setFirstResult(topSkip.skip);
-  query.setMaxResults(topSkip.top);
+  if(topSkip.skip != null){
+query.setFirstResult(topSkip.skip);
+  }
+  if(topSkip.top != null){
+query.setMaxResults(topSkip.top);
+  }
   pagedEntities = query.getResultList();
   formulateNextPage();
   return new JPAPage(startPage, nextPage, pagedEntities, pageSize);



olingo-odata2 git commit: [OLINGO-1297] JPA NE Handling with special character

2018-09-26 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 04a45ec92 -> 1f9dbe462


[OLINGO-1297] JPA NE Handling with special character


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/1f9dbe46
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/1f9dbe46
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/1f9dbe46

Branch: refs/heads/master
Commit: 1f9dbe4623cdb9e7a6a6b98bf79ac8f3f5da7b30
Parents: 04a45ec
Author: Archana Rai 
Authored: Wed Sep 26 15:38:14 2018 +0530
Committer: Archana Rai 
Committed: Wed Sep 26 15:38:14 2018 +0530

--
 .../jpa/processor/core/ODataExpressionParser.java | 11 ++-
 .../core/ODataFilterExpressionParserTest.java | 18 +-
 2 files changed, 23 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1f9dbe46/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index b417627..182a2da 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -171,11 +171,20 @@ public class ODataExpressionParser {
 + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
 + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
   case NE:
+EdmSimpleType edmType = 
(EdmSimpleType)((BinaryExpression)whereExpression).getLeftOperand().getEdmType();
+
if(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance().isCompatible(edmType)){
+  return  JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
+  + (!"null".equals(right) ?
+  JPQLStatement.Operator.NOT +JPQLStatement.DELIMITER.SPACE +  
JPQLStatement.Operator.LIKE :
+  "IS" + JPQLStatement.DELIMITER.SPACE + 
JPQLStatement.Operator.NOT)
+  + JPQLStatement.DELIMITER.SPACE + right + ("null".equals(right) 
? "" :" ESCAPE '\\'")
+  + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
+}
 return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
 + (!"null".equals(right) ?
 JPQLStatement.Operator.NE :
 "IS" + JPQLStatement.DELIMITER.SPACE + 
JPQLStatement.Operator.NOT)
-+ JPQLStatement.DELIMITER.SPACE + right
++ JPQLStatement.DELIMITER.SPACE + right 
 + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
   case LT:
 return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1f9dbe46/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
index 87bda2f..a268778 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
@@ -49,9 +49,10 @@ public class ODataFilterExpressionParserTest {
   private static final String ENTITY_NOTE = "Note";
   // Index 0 - Is test input and Index 1 - Is expected output
   private static final String[] EXPRESSION_EQ = { "id eq '123'", "(E1.id LIKE 
'123' ESCAPE '\\')" };
-  private static final String[] EXPRESSION_NE = { "id ne '123'", "(E1.id <> 
'123')" };
-  private static final String[] EXPRESSION_ESCAPE = { "id ne '123''22'", 
"(E1.id <> '123''22')" };
-  private static final String[] EXPRESSION_BINARY_AND =
+  private static final String[] EXPRESSION_NE = { "id ne '123'", "(E1.id NOT 
LIKE '123' ESCAPE '\\')" };
+  private static final String[] EXPRESSION_NE_SPECIAL = { "id ne '1_3'", 
"(E1.id NOT LIKE '1_3' ESCAPE '\\')" };
+  private static final String[] EXPRESSION_ESCAPE = { "id ne '123''22'", 
"(E1.id NOT LIKE '123''22' ESCAPE '\\')" };
+   private static 

olingo-odata4 git commit: [OLINGO-1296] EdmDateTimeOffSet precision validation

2018-09-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 6bdaed487 -> fb2d21d70


[OLINGO-1296] EdmDateTimeOffSet precision validation


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/fb2d21d7
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/fb2d21d7
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/fb2d21d7

Branch: refs/heads/master
Commit: fb2d21d70310815ce6f29a660ecca02fd9d11558
Parents: 6bdaed4
Author: Archana Rai 
Authored: Wed Sep 26 13:52:49 2018 +0530
Committer: Archana Rai 
Committed: Wed Sep 26 13:52:49 2018 +0530

--
 .../commons/core/edm/primitivetype/EdmDateTimeOffset.java | 2 +-
 .../commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java | 7 ++-
 .../commons/core/edm/primitivetype/EdmTimeOfDayTest.java  | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/fb2d21d7/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
--
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
index 5f4645d..bb1cbb0 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
@@ -261,7 +261,7 @@ public final class EdmDateTimeOffset extends 
SingletonPrimitiveType {
 nonSignificant++;
   }
 
-  if (precision == null || precision < (isNano ? 9 : 3) - nonSignificant) {
+  if (precision != null && precision < (isNano ? 9 : 3) - nonSignificant) {
 throw new IllegalArgumentException();
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/fb2d21d7/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
--
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
index 4fe6bf1..f5150b1 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
@@ -63,15 +63,19 @@ public class EdmDateTimeOffsetTest extends 
PrimitiveTypeBaseTest {
 assertEquals("2012-02-29T01:02:03+11:00", instance.valueToString(dateTime, 
null, null, null, null, null));
 
 dateTime.set(Calendar.MILLISECOND, 503);
+assertEquals("2012-02-29T01:02:03.503+11:00", 
instance.valueToString(dateTime, null, null, null, null, null));
 assertEquals("2012-02-29T01:02:03.503+11:00", 
instance.valueToString(dateTime, null, null, 3, null, null));
 
 dateTime.set(Calendar.MILLISECOND, 530);
+assertEquals("2012-02-29T01:02:03.53+11:00", 
instance.valueToString(dateTime, null, null, null, null, null));
 assertEquals("2012-02-29T01:02:03.53+11:00", 
instance.valueToString(dateTime, null, null, 3, null, null));
 
 dateTime.set(Calendar.MILLISECOND, 53);
+assertEquals("2012-02-29T01:02:03.053+11:00", 
instance.valueToString(dateTime, null, null, null, null, null));
 assertEquals("2012-02-29T01:02:03.053+11:00", 
instance.valueToString(dateTime, null, null, 3, null, null));
 
 final Long millis = 1330558323007L;
+assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(millis, 
null, null, null, null, null));
 assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(millis, 
null, null, 3, null, null));
 assertEquals("1969-12-31T23:59:59.9Z", instance.valueToString(-100L, null, 
null, 1, null, null));
 assertEquals("1969-12-31T23:59:59.98Z", instance.valueToString(-20L, null, 
null, 2, null, null));
@@ -81,13 +85,14 @@ public class EdmDateTimeOffsetTest extends 
PrimitiveTypeBaseTest {
 assertEquals("1969-12-31T23:59:59.98Z", instance.valueToString(new 
Time(-20L), null, null, 2, null, null));
 
 final Date date = new Date(millis);
+assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(date, 
null, null, null, null, null));
 assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(date, 
null, null, 3, null, null));
 
 Timestamp timestamp = new Timestamp(0);
 timestamp.setNanos(120);
+assertEquals("1970-01-01T00:00:00.0012Z", 
instance.valueToString(timestamp, null, 

olingo-odata4 git commit: [OLINGO-1191] Code Improvements

2018-09-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 003f0f4ff -> 6bdaed487


[OLINGO-1191] Code Improvements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/6bdaed48
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/6bdaed48
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/6bdaed48

Branch: refs/heads/master
Commit: 6bdaed48753409f026539247dbe2bfc7f7f51ae9
Parents: 003f0f4
Author: Archana Rai 
Authored: Wed Sep 26 11:45:22 2018 +0530
Committer: Archana Rai 
Committed: Wed Sep 26 11:45:22 2018 +0530

--
 .../header/ODataErrorResponseChecker.java  |  3 ++-
 .../request/batch/ODataBatchUtilities.java | 11 +++
 .../core/metadatavalidator/CsdlTypeValidator.java  |  2 --
 .../apache/olingo/client/core/uri/FilterFunction.java  |  8 +---
 .../olingo/server/core/debug/DebugTabStacktrace.java   |  6 --
 .../serializer/json/ServiceDocumentJsonSerializer.java | 13 +++--
 6 files changed, 25 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6bdaed48/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
--
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
index d79174c..bd0bf49 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
@@ -80,7 +80,8 @@ public final class ODataErrorResponseChecker {
 statusLine.getReasonPhrase());
   }
 
-  if (statusLine.getStatusCode() >= 500 && (error.getDetails() == null || 
error.getDetails().isEmpty()) && 
+  if (statusLine.getStatusCode() >= 500 && error!= null && 
+  (error.getDetails() == null || error.getDetails().isEmpty()) && 
   (error.getInnerError() == null || error.getInnerError().size() == 
0)) {
 result = new ODataServerErrorException(statusLine);
   } else {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6bdaed48/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchUtilities.java
--
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchUtilities.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchUtilities.java
index bca612f..b2c5c40 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchUtilities.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchUtilities.java
@@ -137,7 +137,7 @@ public class ODataBatchUtilities {
 
 notEndLine = isNotEndLine(controller, currentLine);
 
-if (notEndLine && os != null) {
+if (notEndLine && os != null && currentLine!=null) {
   os.write(currentLine.getBytes(Constants.UTF8));
   os.write(ODataStreamer.CRLF);
 }
@@ -256,11 +256,14 @@ public class ODataBatchUtilities {
   public static Map.Entry readResponseLine(final 
ODataBatchLineIterator iterator) {
 final String line = readBatchPart(new ODataBatchController(iterator, 
null), 1);
 LOG.debug("Response line '{}'", line);
+
+if(line !=null){
 
-final Matcher matcher = RESPONSE_PATTERN.matcher(line.trim());
+  final Matcher matcher = RESPONSE_PATTERN.matcher(line.trim());
 
-if (matcher.matches()) {
-  return new AbstractMap.SimpleEntry(Integer.valueOf(matcher.group(1)), matcher.group(2));
+  if (matcher.matches()) {
+return new AbstractMap.SimpleEntry(Integer.valueOf(matcher.group(1)), matcher.group(2));
+  }
 }
 
 throw new IllegalArgumentException("Invalid response line '" + line + "'");

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6bdaed48/lib/client-core/src/main/java/org/apache/olingo/client/core/metadatavalidator/CsdlTypeValidator.java
--
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/metadatavalidator/CsdlTypeValidator.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/metadatavalidator/CsdlTypeValidator.java
index 4eef836..af35bc6 100644
--- 

svn commit: r1034257 - /websites/production/olingo/content/

2018-08-21 Thread archanarai
Author: archanarai
Date: Tue Aug 21 11:28:34 2018
New Revision: 1034257

Log:
Note for batch payload with special chars and params

Added:
websites/production/olingo/content/
  - copied from r1034256, websites/staging/olingo/trunk/content/



svn commit: r1838540 - /olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext

2018-08-21 Thread archanarai
Author: archanarai
Date: Tue Aug 21 11:27:05 2018
New Revision: 1838540

URL: http://svn.apache.org/viewvc?rev=1838540=rev
Log:
Note for batch with special characters and params

Modified:

olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext

Modified: 
olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext
URL: 
http://svn.apache.org/viewvc/olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext?rev=1838540=1838539=1838540=diff
==
--- 
olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext
 (original)
+++ 
olingo/site/trunk/content/doc/odata2/tutorials/Olingo_Tutorial_AdvancedReadWrite_Batch.mdtext
 Tue Aug 21 11:27:05 2018
@@ -121,6 +121,9 @@ In order to refer the new entity the Req
 
 **Note:** Requests in different ChangeSets cannot reference one another, even 
if they are in the same Batch
 
+**Note:** Client are expected to take care of the percent encoding of the 
special characters from their end, if there are any. 
+Also, for batch requests the encoding of the parameters in the URLs in the 
payload are expected to be taken care by the client.
+
 ### References
 
[http://www.odata.org/documentation/odata-v2-documentation/batch-processing/](http://www.odata.org/documentation/odata-v2-documentation/batch-processing/
 "External Link")
 




olingo-odata2 git commit: [OLINGO-1283]Facet info for Function Import parameters not honored

2018-08-20 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master b96a9d152 -> 04a45ec92


[OLINGO-1283]Facet info for Function Import parameters not honored


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/04a45ec9
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/04a45ec9
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/04a45ec9

Branch: refs/heads/master
Commit: 04a45ec92e0ff1b29887ac281349b9777e281978
Parents: b96a9d1
Author: Archana Rai 
Authored: Mon Aug 20 18:14:33 2018 +0530
Committer: Archana Rai 
Committed: Mon Aug 20 18:14:33 2018 +0530

--
 .../core/ep/consumer/XmlPropertyConsumer.java |  2 +-
 .../core/ep/consumer/XmlEntityConsumerTest.java   | 18 +-
 2 files changed, 18 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/04a45ec9/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
index 8a052cb..557191c 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
@@ -159,7 +159,7 @@ public class XmlPropertyConsumer {
 
   if (TRUE.equals(nullAttribute)) {
 if ((readProperties == null || readProperties.isValidatingFacets()) && 
propertyInfo.isMandatory()) {
-  throw new 
EntityProviderException(EntityProviderException.INVALID_PROPERTY_VALUE.addContent(name));
+  throw new 
EdmSimpleTypeException(EdmSimpleTypeException.VALUE_NULL_NOT_ALLOWED.addContent(name));
 }
 reader.nextTag();
   } else if (propertyInfo.isComplex()) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/04a45ec9/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
--
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
index b8ba340..4f51fcd 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
@@ -2033,7 +2033,23 @@ public class XmlEntityConsumerTest extends 
AbstractXmlConsumerTest {
 assertTrue(properties.containsKey("EntryDate"));
 assertNull(properties.get("EntryDate"));
   }
-
+  
+  @Test(expected = EntityProviderException.class)
+  public void readEntryNullId() throws Exception {
+final EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+final String content = 
EMPLOYEE_1_XML.replace("1",
+"");
+InputStream contentBody = createContentAsStream(content);
+try {
+  new XmlEntityConsumer().readEntry(entitySet, contentBody, 
EntityProviderReadProperties.init().mergeSemantic(
+  true).build());
+} catch (EntityProviderException e) {
+  assertEquals(EntityProviderException.EXCEPTION_OCCURRED.getKey(), 
e.getMessageReference().getKey());
+  assertEquals("EdmSimpleTypeException", 
e.getMessageReference().getContent().get(0));
+  throw e;
+}
+  }
+  
   @Test(expected = EntityProviderException.class)
   public void readEntryTooManyValues() throws Exception {
 // prepare



[1/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations

2018-08-20 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 58ec0358c -> 8cbe468c2


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElementReference.java
--
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElementReference.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElementReference.java
index b9b9483..36379f6 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElementReference.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElementReference.java
@@ -38,4 +38,25 @@ public class CsdlLabeledElementReference extends 
CsdlDynamicExpression {
 this.value = value;
 return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+if (obj == null) {
+  return false;
+}
+if (!(obj instanceof CsdlLabeledElementReference)) {
+  return false;
+}
+CsdlLabeledElementReference csdlLabelledEleRef = 
(CsdlLabeledElementReference) obj;
+return (this.getValue() == null ? csdlLabelledEleRef.getValue() == null :
+this.getValue().equals(csdlLabelledEleRef.getValue()));
+  }
+  
+  @Override
+  public int hashCode() {
+final int prime = 31;
+int result = 1;
+result = prime * result + ((value == null) ? 0 : value.hashCode());
+return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLogicalOrComparisonExpression.java
--
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLogicalOrComparisonExpression.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLogicalOrComparisonExpression.java
index bbf50f4..e14c944 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLogicalOrComparisonExpression.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLogicalOrComparisonExpression.java
@@ -145,4 +145,51 @@ public class CsdlLogicalOrComparisonExpression extends 
CsdlDynamicExpression imp
 }
 return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+if (obj == null) {
+  return false;
+}
+if (!(obj instanceof CsdlLogicalOrComparisonExpression)) {
+  return false;
+}
+CsdlLogicalOrComparisonExpression csdlLogComp = 
(CsdlLogicalOrComparisonExpression) obj;
+return (this.getLeft() == null ? csdlLogComp.getLeft() == null :
+  this.getLeft().equals(csdlLogComp.getLeft()))
+&& (this.getRight() == null ? csdlLogComp.getRight() == null : 
+  this.getRight().equals(csdlLogComp.getRight()))
+&& (this.getType() == null ? csdlLogComp.getType() == null : 
+  this.getType().equals(csdlLogComp.getType()))
+&& (this.getAnnotations() == null ? csdlLogComp.getAnnotations() == 
null : 
+checkAnnotations(csdlLogComp.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List csdlLogCompAnnot) {
+if (csdlLogCompAnnot == null) {
+  return false;
+}
+if (this.getAnnotations().size() == csdlLogCompAnnot.size()) {
+  for (int i = 0; i < this.getAnnotations().size() ; i++) {
+if (!this.getAnnotations().get(i).equals(csdlLogCompAnnot.get(i))) {
+  return false;
+}
+  }
+} else {
+  return false;
+}
+return true;
+  }
+
+  @Override
+  public int hashCode() {
+final int prime = 31;
+int result = 1;
+result = prime * result + ((type == null) ? 0 : type.hashCode());
+result = prime * result + ((left == null) ? 0 : left.hashCode());
+result = prime * result + ((right == null) ? 0 : right.hashCode());
+result = prime * result + ((annotations == null) ? 0 : 
+  annotations.hashCode());
+return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlNavigationPropertyPath.java
--
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlNavigationPropertyPath.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlNavigationPropertyPath.java
index f600c0a..32a1b8f 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlNavigationPropertyPath.java
+++ 

[3/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations

2018-08-20 Thread archanarai
[OLINGO-1062]Cannot consume Odata Reference Services with Annotations


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/8cbe468c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/8cbe468c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/8cbe468c

Branch: refs/heads/master
Commit: 8cbe468c2a9c9063c41aba46726f744843ca127d
Parents: 58ec035
Author: Archana Rai 
Authored: Mon Aug 20 11:31:08 2018 +0530
Committer: Archana Rai 
Committed: Mon Aug 20 11:31:08 2018 +0530

--
 .../apache/olingo/client/core/MetadataTest.java |  242 
 .../org/apache/olingo/client/core/$metadata.xml |  779 +++
 .../org/apache/olingo/client/core/UI.xml|  467 +++
 .../apache/olingo/client/core/annotations.xml   | 1276 ++
 .../org/apache/olingo/commons/api/edm/Edm.java  |   20 +
 .../commons/api/edm/EdmBindingTarget.java   |7 +
 .../commons/api/edm/EdmEntityContainer.java |8 +
 .../olingo/commons/api/edm/EdmProperty.java |7 +
 .../api/edm/provider/CsdlAnnotation.java|   47 +
 .../provider/annotation/CsdlAnnotationPath.java |   22 +
 .../api/edm/provider/annotation/CsdlApply.java  |   59 +
 .../api/edm/provider/annotation/CsdlCast.java   |   55 +
 .../edm/provider/annotation/CsdlCollection.java |   37 +
 .../annotation/CsdlConstantExpression.java  |   24 +
 .../api/edm/provider/annotation/CsdlIf.java |   46 +
 .../api/edm/provider/annotation/CsdlIsOf.java   |   54 +
 .../provider/annotation/CsdlLabeledElement.java |   44 +
 .../annotation/CsdlLabeledElementReference.java |   21 +
 .../CsdlLogicalOrComparisonExpression.java  |   47 +
 .../annotation/CsdlNavigationPropertyPath.java  |   21 +
 .../api/edm/provider/annotation/CsdlNull.java   |   38 +
 .../api/edm/provider/annotation/CsdlPath.java   |   21 +
 .../provider/annotation/CsdlPropertyPath.java   |   21 +
 .../provider/annotation/CsdlPropertyValue.java  |   46 +
 .../api/edm/provider/annotation/CsdlRecord.java |   62 +
 .../api/edm/provider/annotation/CsdlUrlRef.java |   40 +
 .../olingo/commons/core/edm/AbstractEdm.java|   95 ++
 .../core/edm/AbstractEdmBindingTarget.java  |   11 +
 .../core/edm/EdmEntityContainerImpl.java|  432 +-
 .../commons/core/edm/EdmPropertyImpl.java   |   23 +
 .../commons/core/edm/EdmProviderImpl.java   |  291 +++-
 .../olingo/commons/core/edm/EdmTypeInfo.java|   17 +-
 .../commons/core/edm/EdmImplCallCreateTest.java |   41 +
 .../core/edm/provider/EdmSchemaImplTest.java|2 +-
 .../uri/queryoption/apply/DynamicProperty.java  |5 +
 35 files changed, 4407 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
index 0e2dd0f..3fc21d9 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
@@ -32,6 +32,7 @@ import org.apache.olingo.client.api.edm.xml.XMLMetadata;
 import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
 import org.apache.olingo.commons.api.edm.EdmAnnotation;
 import org.apache.olingo.commons.api.edm.EdmAnnotations;
 import org.apache.olingo.commons.api.edm.EdmComplexType;
@@ -41,13 +42,17 @@ import org.apache.olingo.commons.api.edm.EdmEntityType;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
 import org.apache.olingo.commons.api.edm.EdmFunction;
 import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.EdmProperty;
 import org.apache.olingo.commons.api.edm.EdmSchema;
+import org.apache.olingo.commons.api.edm.EdmSingleton;
 import org.apache.olingo.commons.api.edm.EdmTerm;
 import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.annotation.EdmExpression;
+import org.apache.olingo.commons.api.edm.annotation.EdmPropertyValue;
+import org.apache.olingo.commons.api.edm.annotation.EdmRecord;
 import org.apache.olingo.commons.api.edm.annotation.EdmUrlRef;
 import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 import 

[2/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations

2018-08-20 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
--
diff --git 
a/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
new file mode 100644
index 000..a89467d
--- /dev/null
+++ 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
@@ -0,0 +1,1276 @@
+
+
+http://docs.oasis-open.org/odata/ns/edmx; Version="4.0">
+  
+
+  
+  
+
+  
+  
+
+  
+  
+http://docs.oasis-open.org/odata/ns/edm; 
Namespace="sepmra_so_man2_anno_mdl.v1">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  
+
+  
+
+
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+
+
+
+  
+
+  
+
+  
+
+  
+  
+  
+
+  
+  
+
+  
+  
+
+  
+  
+
+  
+
+  
+
+  
+  
+
+
+  
+  
+
+
+  
+  
+
+
+  
+  
+
+  
+
+
+  
+
+
+  
+
+
+
+  
+
+  
+
+  
+
+
+  
+
+  
+  
+
+  
+
+
+  
+
+  
+  
+
+  
+  
+
+
+  
+
+  
+
+
+  
+
+  
+
+  
+  
+  
+
+  
+  
+
+  
+
+  
+
+  
+
+
+  
+
+
+  
+
+  
+
+
+  
+
+
+  
+
+
+
+  
+
+  
+
+  
+
+
+  
+
+  
+
+  
+
+
+  
+
+
+  
+
+
+  
+
+
+  
+
+  
+  
+
+  
+
+
+  
+
+  
+  
+
+
+  
+  
+
+
+  
+  
+
+  
+
+  
+
+
+  
+
+
+  
+
+  
+  
+  
+
+  
+  
+
+  
+
+  
+  
+
+  
+
+
+  
+
+  
+  
+
+  
+
+
+  
+
+  
+  
+
+
+  
+  
+
+  
+
+  
+
+
+  
+
+
+  
+
+  
+  
+
+
+  
+  
+
+  
+  
+
+  
+
+  
+
+  
+  
+  
+
+  
+
+  
+
+
+  
+
+
+
+  
+
+  
+  
+
+
+  
+  
+
+
+  
+  
+
+
+  
+  
+

olingo-odata4 git commit: [OLINGO-1287]Deep Update support for Version 4.01

2018-08-17 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 0f3930654 -> 58ec0358c


[OLINGO-1287]Deep Update support for Version 4.01


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/58ec0358
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/58ec0358
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/58ec0358

Branch: refs/heads/master
Commit: 58ec0358c2b52829e35a8bc8f0dfc777c9a58940
Parents: 0f39306
Author: Archana Rai 
Authored: Fri Aug 17 14:32:30 2018 +0530
Committer: Archana Rai 
Committed: Fri Aug 17 14:32:30 2018 +0530

--
 .../org/apache/olingo/server/api/OData.java |  21 ++
 .../netty/server/core/ODataNettyImpl.java   |  12 ++
 .../olingo/server/core/ContentNegotiator.java   |   1 -
 .../apache/olingo/server/core/ODataImpl.java|  37 
 .../json/ODataJsonDeserializer.java | 112 +-
 .../core/serializer/utils/ContextURLHelper.java |   1 -
 .../json/ODataDeserializerDeepUpdateTest.java   | 209 +++
 .../json/ODataJsonDeserializerEntityTest.java   |   7 +
 .../src/test/resources/ESAllPrimUpdate.json |  56 +
 .../ESAllPrimWithCustomAnnotationsUpdate.json   |  57 +
 .../resources/ESAllPrimWithDoubleKeyUpdate.json |  57 +
 .../ESAllPrimWithODataAnnotationsUpdate.json|  59 ++
 .../test/resources/ESCompCollCompUpdate.json|  35 
 ...imExpandedNavPropertyETTwoPrimManyDelta.json |  48 +
 ...imExpandedNavPropertyETTwoPrimManyError.json |  48 +
 ...mExpandedNavPropertyETTwoPrimManyUpdate.json |  28 +++
 ...ETTwoPrimManyWithODataAnnotationsUpdate.json |  27 +++
 ...imExpandedNavPropertyETTwoPrimOneUpdate.json |  23 ++
 ...yETTwoPrimOneWithODataAnnotationsUpdate.json |  26 +++
 .../EntityETMixEnumDefCollCompUpdate.json   |  24 +++
 ...MixEnumDefCollCompWithEnumStringsUpdate.json |  24 +++
 .../UnbalancedESAllPrimFeedUpdate.json  |  23 ++
 22 files changed, 927 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ec0358/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
--
diff --git 
a/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java 
b/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
index 16cca29..01a8b0f 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/OData.java
@@ -161,6 +161,27 @@ public abstract class OData {
   ServiceMetadata metadata) throws DeserializerException;
   
   /**
+  * Creates a new deserializer object for reading content in the specified 
format.
+  * Deserializers are used in Processor implementations.
+*
+* @param contentType any content type supported by Olingo (XML, JSON ...)
+* @param service version
+   */
+  public abstract ODataDeserializer createDeserializer(ContentType 
contentType, 
+  final List versions) throws DeserializerException;
+
+  /**
+   * Creates a new deserializer object for reading content in the specified 
format.
+   * Deserializers are used in Processor implementations.
+   *
+   * @param contentType any content type supported by Olingo (XML, JSON ...)
+   * @param metadata ServiceMetada of the service
+   * @param service version
+   */
+  public abstract ODataDeserializer createDeserializer(ContentType contentType,
+  ServiceMetadata metadata, final List versions) throws 
DeserializerException;
+  
+  /**
* Creates a primitive-type instance.
* @param kind the kind of the primitive type
* @return an {@link EdmPrimitiveType} instance for the type kind

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ec0358/lib/server-core/src/main/java/org/apache/olingo/netty/server/core/ODataNettyImpl.java
--
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/netty/server/core/ODataNettyImpl.java
 
b/lib/server-core/src/main/java/org/apache/olingo/netty/server/core/ODataNettyImpl.java
index 113eb03..7250e33 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/netty/server/core/ODataNettyImpl.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/netty/server/core/ODataNettyImpl.java
@@ -160,5 +160,17 @@ public class ODataNettyImpl extends ODataNetty {
   throws SerializerException {
 return odata.createEdmDeltaSerializer(contentType, versions);
   }
+
+  @Override
+  public ODataDeserializer createDeserializer(ContentType contentType, 
List versions)
+  throws DeserializerException {
+return odata.createDeserializer(contentType, versions);
+  }
+
+  @Override
+  public ODataDeserializer 

olingo-odata2 git commit: [OLINGO-1283]Facet info for Function Import parameters not honored

2018-08-06 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 9aa18ee4f -> b96a9d152


[OLINGO-1283]Facet info for Function Import parameters not honored


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/b96a9d15
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/b96a9d15
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/b96a9d15

Branch: refs/heads/master
Commit: b96a9d1525067d7241cbbc1af55ac91b6eeb18da
Parents: 9aa18ee
Author: Archana Rai 
Authored: Mon Aug 6 16:51:16 2018 +0530
Committer: Archana Rai 
Committed: Mon Aug 6 16:51:16 2018 +0530

--
 .../odata2/api/edm/EdmSimpleTypeFacade.java  | 10 ++
 .../odata2/core/edm/EdmSimpleTypeFacadeImpl.java | 17 +
 .../apache/olingo/odata2/core/edm/EdmString.java |  2 +-
 .../olingo/odata2/core/uri/UriParserImpl.java| 19 ++-
 4 files changed, 42 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/b96a9d15/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmSimpleTypeFacade.java
--
diff --git 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmSimpleTypeFacade.java
 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmSimpleTypeFacade.java
index 82a82b8..c8988a5 100644
--- 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmSimpleTypeFacade.java
+++ 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmSimpleTypeFacade.java
@@ -35,6 +35,16 @@ public interface EdmSimpleTypeFacade {
   public EdmLiteral parseUriLiteral(final String uriLiteral) throws 
EdmLiteralException;
 
   /**
+   * IMPORTANT: Use {@link EdmSimpleTypeKind} parseUriLiteral for the 
implementation.
+   * This method definition is used only inside the core of this library.
+   * @param uriLiteral
+   * @param facets
+   * @return the parsed literal
+   * @throws EdmLiteralException
+   */
+  public EdmLiteral parseUriLiteral(final String uriLiteral, final EdmFacets 
facets) throws EdmLiteralException;
+  
+  /**
* IMPORTANT: Use {@link EdmSimpleTypeKind#getEdmSimpleTypeInstance()} for 
the application development.
* 
* This method definition is used only inside the core of this 
library.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/b96a9d15/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeFacadeImpl.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeFacadeImpl.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeFacadeImpl.java
index 25a5dc8..58d0e93 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeFacadeImpl.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeFacadeImpl.java
@@ -18,6 +18,7 @@
  
**/
 package org.apache.olingo.odata2.core.edm;
 
+import org.apache.olingo.odata2.api.edm.EdmFacets;
 import org.apache.olingo.odata2.api.edm.EdmLiteral;
 import org.apache.olingo.odata2.api.edm.EdmLiteralException;
 import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
@@ -31,6 +32,8 @@ import 
org.apache.olingo.odata2.core.exception.ODataRuntimeException;
  *  
  */
 public class EdmSimpleTypeFacadeImpl implements EdmSimpleTypeFacade {
+  
+  private EdmFacets facets = null;
 
   @Override
   public EdmLiteral parseUriLiteral(final String uriLiteral) throws 
EdmLiteralException {
@@ -46,7 +49,7 @@ public class EdmSimpleTypeFacadeImpl implements 
EdmSimpleTypeFacade {
 && uriLiteral.startsWith("'") && uriLiteral.endsWith("'")) {
   try {
 final EdmSimpleType type = getEdmSimpleType(EdmSimpleTypeKind.String);
-return new EdmLiteral(type, type.valueOfString(uriLiteral, 
EdmLiteralKind.URI, null, String.class));
+return new EdmLiteral(type, type.valueOfString(uriLiteral, 
EdmLiteralKind.URI, facets, String.class));
   } catch (EdmSimpleTypeException e) {
 throw new 
EdmLiteralException(EdmLiteralException.LITERALFORMAT.addContent(uriLiteral), 
e);
   }
@@ -56,7 +59,7 @@ public class EdmSimpleTypeFacadeImpl implements 
EdmSimpleTypeFacade {
   try {
 final int i =
 getEdmSimpleType(EdmSimpleTypeKind.Int32)
-.valueOfString(uriLiteral, EdmLiteralKind.URI, null, 
Integer.class);
+.valueOfString(uriLiteral, EdmLiteralKind.URI, facets, 
Integer.class);
 if (i == 0 || i == 1) {
   return new 

olingo-odata4 git commit: [OLINGO-1280]OData V4.0: Client throws exception for Asynchronous Action requests

2018-07-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 1da33a385 -> e18c6fa18


[OLINGO-1280]OData V4.0: Client throws exception for Asynchronous Action 
requests


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/e18c6fa1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/e18c6fa1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/e18c6fa1

Branch: refs/heads/master
Commit: e18c6fa1841db17c966c3f3dff3e98b9658e1b0c
Parents: 1da33a3
Author: Archana Rai 
Authored: Thu Jul 26 17:34:58 2018 +0530
Committer: Archana Rai 
Committed: Thu Jul 26 17:34:58 2018 +0530

--
 .../fit/tecsvc/client/AsyncSupportITCase.java   | 44 +--
 .../invoke/AbstractODataInvokeRequest.java  |  2 +-
 .../request/invoke/ODataInvokeRequestImpl.java  | 59 
 3 files changed, 100 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e18c6fa1/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
--
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
index 2263e9b..8694605 100644
--- 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
+++ 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
@@ -18,10 +18,17 @@
  */
 package org.apache.olingo.fit.tecsvc.client;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.net.URI;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -30,32 +37,34 @@ import java.util.concurrent.TimeoutException;
 import org.apache.olingo.client.api.ODataClient;
 import org.apache.olingo.client.api.communication.ODataClientErrorException;
 import 
org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper;
+import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
 import 
org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
 import org.apache.olingo.client.api.communication.request.ODataRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem;
 import 
org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
+import 
org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
 import 
org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import 
org.apache.olingo.client.api.communication.response.AsyncResponseWrapper;
 import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
+import org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
 import org.apache.olingo.client.api.communication.response.ODataResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.data.ResWrap;
 import org.apache.olingo.client.api.domain.ClientEntity;
 import org.apache.olingo.client.api.domain.ClientEntitySet;
 import org.apache.olingo.client.api.domain.ClientProperty;
+import org.apache.olingo.client.api.domain.ClientValue;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.EntityCollection;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.format.PreferenceName;
 import org.apache.olingo.commons.api.http.HttpHeader;
 import org.apache.olingo.commons.api.http.HttpStatusCode;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.apache.olingo.fit.tecsvc.TecSvcConst;
 import org.junit.Test;
 
 public final class AsyncSupportITCase extends AbstractParamTecSvcITCase {
@@ -242,6 +251,33 @@ public final class AsyncSupportITCase extends 
AbstractParamTecSvcITCase {
 assertEquals("First Resource - positive values",
 

olingo-odata4 git commit: [OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute

2018-07-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master a9aaa9355 -> 1da33a385


[OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath 
attribute


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/1da33a38
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/1da33a38
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/1da33a38

Branch: refs/heads/master
Commit: 1da33a385315fef97fe6b1d3791a996fb195de3a
Parents: a9aaa93
Author: Archana Rai 
Authored: Thu Jul 26 17:24:06 2018 +0530
Committer: Archana Rai 
Committed: Thu Jul 26 17:24:06 2018 +0530

--
 .../annotation/ClientCsdlDynamicExpression.java |  3 +-
 .../apache/olingo/client/core/MetadataTest.java | 26 ++
 .../client/core/edmxWithCsdlAnnotationPath.xml  | 37 
 3 files changed, 65 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1da33a38/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlDynamicExpression.java
--
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlDynamicExpression.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlDynamicExpression.java
index 8e41a64..1afbca5 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlDynamicExpression.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlDynamicExpression.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.io.Serializable;
 
 import org.apache.olingo.client.core.edm.xml.AbstractClientCsdlEdmDeserializer;
+import 
org.apache.olingo.commons.api.edm.provider.annotation.CsdlAnnotationPath;
 import 
org.apache.olingo.commons.api.edm.provider.annotation.CsdlDynamicExpression;
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlExpression;
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlIf;
@@ -120,7 +121,7 @@ public abstract class ClientCsdlDynamicExpression extends 
CsdlDynamicExpression
   } else if (PROPERTY_PATH.equals(jp.getCurrentName())) {
 expression = new CsdlPropertyPath().setValue(jp.nextTextValue());
   } else if (ANNOTATION_PATH.equals(jp.getCurrentName())) {
-expression = new CsdlPath().setValue(jp.nextTextValue());
+expression = new CsdlAnnotationPath().setValue(jp.nextTextValue());
   } else if (APPLY.equals(jp.getCurrentName())) {
 jp.nextToken();
 expression = jp.readValueAs(ClientCsdlApply.class);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1da33a38/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
--
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
index 23ef55f..0e2dd0f 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
@@ -499,4 +499,30 @@ public class MetadataTest extends AbstractTest {
 assertEquals("Value", record.getPropertyValues().get(0).getProperty());
 assertEquals("image", 
record.getPropertyValues().get(0).getValue().asDynamic().asPath().getValue());
   }
+  
+  @Test
+  public void readPropertyAnnotationsTest() {
+List streams = new ArrayList();
+streams.add(getClass().getResourceAsStream("VOC_Core.xml"));
+final Edm edm = 
client.getReader().readMetadata(getClass().getResourceAsStream("edmxWithCsdlAnnotationPath.xml"),
+streams);
+assertNotNull(edm);
+
+final EdmEntityType person = edm.getEntityType(
+new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", 
"Person"));
+assertNotNull(person);
+EdmProperty userName = (EdmProperty) person.getProperty("UserName");
+List userNameAnnotations = userName.getAnnotations();
+for (EdmAnnotation annotation : userNameAnnotations) {
+  EdmTerm term = annotation.getTerm();
+  assertNotNull(term);
+  assertEquals("Permissions", term.getName());
+  assertEquals("Org.OData.Core.V1.Permissions",
+  term.getFullQualifiedName().getFullQualifiedNameAsString());
+  EdmExpression expression = annotation.getExpression();
+  assertNotNull(expression);
+  assertTrue(expression.isDynamic());
+  assertEquals("AnnotationPath", 
expression.asDynamic().getExpressionName());
+}
+  }
 }


olingo-odata4 git commit: Revert "[OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute"

2018-07-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 8f4e554df -> a9aaa9355


Revert "[OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath 
attribute"

This reverts commit 8f4e554dfacb5b152f7b0c24939f8336db810c61.


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/a9aaa935
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/a9aaa935
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/a9aaa935

Branch: refs/heads/master
Commit: a9aaa9355dc83b87037fd091a92f63d499877621
Parents: 8f4e554
Author: Archana Rai 
Authored: Thu Jul 26 17:10:06 2018 +0530
Committer: Archana Rai 
Committed: Thu Jul 26 17:10:06 2018 +0530

--
 .../fit/tecsvc/client/AsyncSupportITCase.java   | 46 ++-
 .../invoke/AbstractODataInvokeRequest.java  |  2 +-
 .../request/invoke/ODataInvokeRequestImpl.java  | 60 
 .../annotation/ClientCsdlDynamicExpression.java |  3 +-
 .../apache/olingo/client/core/MetadataTest.java | 28 -
 .../client/core/edmxWithCsdlAnnotationPath.xml  | 37 
 .../org/apache/olingo/server/api/OData.java | 19 ---
 .../netty/server/core/ODataNettyImpl.java   | 12 
 .../apache/olingo/server/core/ODataImpl.java| 36 
 .../json/ODataJsonDeserializer.java | 23 ++--
 .../server/tecsvc/data/RequestValidator.java|  6 +-
 11 files changed, 14 insertions(+), 258 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a9aaa935/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
--
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
index 15c8c3e..2263e9b 100644
--- 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
+++ 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
@@ -18,17 +18,10 @@
  */
 package org.apache.olingo.fit.tecsvc.client;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.net.URI;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -37,34 +30,32 @@ import java.util.concurrent.TimeoutException;
 import org.apache.olingo.client.api.ODataClient;
 import org.apache.olingo.client.api.communication.ODataClientErrorException;
 import 
org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper;
-import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
 import 
org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
 import org.apache.olingo.client.api.communication.request.ODataRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem;
 import 
org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
-import 
org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
 import 
org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import 
org.apache.olingo.client.api.communication.response.AsyncResponseWrapper;
 import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
-import org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
 import org.apache.olingo.client.api.communication.response.ODataResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.data.ResWrap;
 import org.apache.olingo.client.api.domain.ClientEntity;
 import org.apache.olingo.client.api.domain.ClientEntitySet;
 import org.apache.olingo.client.api.domain.ClientProperty;
-import org.apache.olingo.client.api.domain.ClientValue;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.EntityCollection;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.format.PreferenceName;
 import org.apache.olingo.commons.api.http.HttpHeader;
 import 

olingo-odata4 git commit: [OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute

2018-07-26 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 2696359f3 -> 8f4e554df


[OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath 
attribute


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/8f4e554d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/8f4e554d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/8f4e554d

Branch: refs/heads/master
Commit: 8f4e554dfacb5b152f7b0c24939f8336db810c61
Parents: 2696359
Author: Archana Rai 
Authored: Thu Jul 26 17:06:16 2018 +0530
Committer: Archana Rai 
Committed: Thu Jul 26 17:06:16 2018 +0530

--
 .../fit/tecsvc/client/AsyncSupportITCase.java   | 46 +--
 .../invoke/AbstractODataInvokeRequest.java  |  2 +-
 .../request/invoke/ODataInvokeRequestImpl.java  | 60 
 .../annotation/ClientCsdlDynamicExpression.java |  3 +-
 .../apache/olingo/client/core/MetadataTest.java | 28 +
 .../client/core/edmxWithCsdlAnnotationPath.xml  | 37 
 .../org/apache/olingo/server/api/OData.java | 19 +++
 .../netty/server/core/ODataNettyImpl.java   | 12 
 .../apache/olingo/server/core/ODataImpl.java| 36 
 .../json/ODataJsonDeserializer.java | 23 ++--
 .../server/tecsvc/data/RequestValidator.java|  6 +-
 11 files changed, 258 insertions(+), 14 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8f4e554d/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
--
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
index 2263e9b..15c8c3e 100644
--- 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
+++ 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/AsyncSupportITCase.java
@@ -18,10 +18,17 @@
  */
 package org.apache.olingo.fit.tecsvc.client;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.net.URI;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -30,32 +37,34 @@ import java.util.concurrent.TimeoutException;
 import org.apache.olingo.client.api.ODataClient;
 import org.apache.olingo.client.api.communication.ODataClientErrorException;
 import 
org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper;
+import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
 import 
org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
 import org.apache.olingo.client.api.communication.request.ODataRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
 import 
org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem;
 import 
org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
+import 
org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
 import 
org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import 
org.apache.olingo.client.api.communication.response.AsyncResponseWrapper;
 import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
+import org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
 import org.apache.olingo.client.api.communication.response.ODataResponse;
 import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.data.ResWrap;
 import org.apache.olingo.client.api.domain.ClientEntity;
 import org.apache.olingo.client.api.domain.ClientEntitySet;
 import org.apache.olingo.client.api.domain.ClientProperty;
+import org.apache.olingo.client.api.domain.ClientValue;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.EntityCollection;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.format.PreferenceName;
 import org.apache.olingo.commons.api.http.HttpHeader;
 import org.apache.olingo.commons.api.http.HttpStatusCode;
-import static org.junit.Assert.assertEquals;
-import 

olingo-odata2 git commit: [Olingo-1259]Function Import enhancements

2018-07-15 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master ae1653b2f -> 9aa18ee4f


[Olingo-1259]Function Import enhancements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9aa18ee4
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9aa18ee4
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9aa18ee4

Branch: refs/heads/master
Commit: 9aa18ee4f5f927470a466d487580cb0387d959b5
Parents: ae1653b
Author: Archana Rai 
Authored: Mon Jul 16 11:01:09 2018 +0530
Committer: Archana Rai 
Committed: Mon Jul 16 11:01:09 2018 +0530

--
 .../odata2/api/edm/EdmEntityContainer.java  |  6 
 .../core/edm/Impl/EdmEntityContainerImpl.java   | 10 +++
 .../deserializer/XmlMetadataDeserializer.java   |  1 +
 .../XmlMetadataDeserializerTest.java| 28 ++-
 .../provider/EdmEntityContainerImplProv.java| 29 +++-
 .../EdmEntityContainerImplProvTest.java |  6 
 6 files changed, 78 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
--
diff --git 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
index 39e70e4..945a4bc 100644
--- 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
+++ 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
@@ -33,6 +33,12 @@ public interface EdmEntityContainer extends EdmNamed, 
EdmAnnotatable {
* @return boolean true if this is the default container
*/
   boolean isDefaultEntityContainer();
+  
+  /**
+   * @return String namepspace of the container
+   * @throws EdmException
+   */
+  String getNamespace() throws EdmException;
 
   /**
* Get contained EntitySet by name

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
index 1511a21..51ee01b 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
@@ -52,6 +52,7 @@ public class EdmEntityContainerImpl implements 
EdmEntityContainer, EdmAnnotatabl
   private EdmDocumentation documentation;
   private String name;
   private String extendz;
+  private String namespace;
 
   public Map getEdmAssociationSetMap() {
 return edmAssociationSetMap;
@@ -73,6 +74,10 @@ public class EdmEntityContainerImpl implements 
EdmEntityContainer, EdmAnnotatabl
 this.edm = edm;
   }
 
+  public void setNamespace(String namespace) throws EdmException {
+this.namespace = namespace;
+  }
+  
   public ClientEdm getEdm() {
 return edm;
   }
@@ -218,4 +223,9 @@ public class EdmEntityContainerImpl implements 
EdmEntityContainer, EdmAnnotatabl
   public String toString() {
   return String.format(name);
   }
+  
+  @Override
+  public String getNamespace() throws EdmException {
+return namespace;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
index f2d85b2..956fa83 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
@@ -503,6 +503,7 @@ public class XmlMetadataDeserializer {
 if (edmAssociationSets != null && !edmAssociationSets.isEmpty()) {
   setConatinerInAssociationSet(edmAssociationSets, container);
 }
+

olingo-odata2 git commit: [Olingo-1259]Function Import enhancements

2018-06-04 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 53b631bff -> 8d1b23f90


[Olingo-1259]Function Import enhancements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/8d1b23f9
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/8d1b23f9
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/8d1b23f9

Branch: refs/heads/master
Commit: 8d1b23f902bf3771a2c23ee0c31cd6bdf0b0a203
Parents: 53b631b
Author: Archana Rai 
Authored: Mon Jun 4 18:04:13 2018 +0530
Committer: Archana Rai 
Committed: Mon Jun 4 18:04:13 2018 +0530

--
 .../core/edm/Impl/EdmEntityContainerImpl.java   |  3 +-
 .../core/edm/Impl/EdmFunctionImportImpl.java|  4 ++
 .../deserializer/XmlMetadataDeserializer.java   | 37 
 ...LMetadataFunctionImportDeserializerTest.java | 57 ++-
 .../core/ep/consumer/XmlMetadataConsumer.java   | 35 
 .../ep/consumer/XmlMetadataConsumerTest.java| 59 
 6 files changed, 167 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8d1b23f9/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
index 2a95ef9..1511a21 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
@@ -32,7 +32,6 @@ import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmException;
 import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
 import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
-import org.apache.olingo.odata2.api.exception.ODataException;
 import org.apache.olingo.odata2.client.api.edm.ClientEdm;
 import org.apache.olingo.odata2.client.api.edm.EdmDocumentation;
 
@@ -131,7 +130,7 @@ public class EdmEntityContainerImpl implements 
EdmEntityContainer, EdmAnnotatabl
   for(EdmEntitySet entity:edmEntitySets){
 if(entity.getName().equals(name)){
   edmEntitySet = entity;
-
+  break;
   }
 }
 return edmEntitySet;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8d1b23f9/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
index 99f2f15..ff6cbca 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
@@ -99,6 +99,10 @@ public class EdmFunctionImportImpl extends EdmNamedImpl 
implements EdmFunctionIm
 this.edmEntityContainer = edmEntityContainer;
   }
 
+  public String getEntitySetName() {
+return entitySet;
+  } 
+  
   public Map getEdmParameters() {
 return edmParameters;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8d1b23f9/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
index 3b470a6..f2d85b2 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
@@ -60,6 +60,7 @@ import 
org.apache.olingo.odata2.api.edm.EdmReferentialConstraintRole;
 import org.apache.olingo.odata2.api.edm.EdmSimpleType;
 import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
 import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
 import 

olingo-odata2 git commit: [Olingo-1259]Function Import enhancements

2018-04-23 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 48b8d3ee3 -> 2e18476aa


[Olingo-1259]Function Import enhancements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2e18476a
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2e18476a
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2e18476a

Branch: refs/heads/master
Commit: 2e18476aa6d5f0c57ab50631b0389aa56426722f
Parents: 48b8d3e
Author: Archana Rai 
Authored: Mon Apr 23 11:58:34 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 23 11:58:34 2018 +0530

--
 .../odata2/api/ep/EntityProviderException.java  |   6 +-
 .../core/edm/Impl/EdmEntityContainerImpl.java   |   2 +-
 .../core/edm/Impl/EdmFunctionImportImpl.java|   6 +-
 .../deserializer/XmlMetadataDeserializer.java   |  19 +-
 ...LMetadataFunctionImportDeserializerTest.java | 260 
 .../core/ep/consumer/XmlMetadataConsumer.java   |  17 +-
 .../olingo/odata2/core/uri/UriParserImpl.java   |  73 +++--
 .../src/main/resources/i18n.properties  |   1 +
 .../ep/consumer/XmlMetadataConsumerTest.java| 312 +++
 .../olingo/odata2/core/uri/UriParserTest.java   |   4 +
 .../olingo/odata2/testutil/mock/EdmMock.java|   4 +
 11 files changed, 660 insertions(+), 44 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2e18476a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
--
diff --git 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
index cc65e67..ed97771 100644
--- 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
+++ 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
@@ -113,7 +113,11 @@ public class EntityProviderException extends 
ODataMessageException {
 
   public static final MessageReference INVALID_DELETED_ENTRY_METADATA = 
createMessageReference(
   EntityProviderException.class, "INVALID_DELETED_ENTRY_METADATA");
-
+  
+  /** INVALID_ATTRIBUTE found ('invalid attribute name') */
+  public static final MessageReference INVALID_ATTRIBUTE = 
createMessageReference(EntityProviderException.class,
+  "INVALID_ATTRIBUTE");
+  
   public EntityProviderException(final MessageReference messageReference) {
 super(messageReference);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2e18476a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
index bed4d44..2a95ef9 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
@@ -129,7 +129,7 @@ public class EdmEntityContainerImpl implements 
EdmEntityContainer, EdmAnnotatabl
   public EdmEntitySet getEntitySet(final String name) throws EdmException {
 EdmEntitySet edmEntitySet = null;
   for(EdmEntitySet entity:edmEntitySets){
-if(name.equals(entity.getName())){
+if(entity.getName().equals(name)){
   edmEntitySet = entity;
 
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2e18476a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
index 8521ad7..99f2f15 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java
@@ -144,7 +144,11 @@ public class EdmFunctionImportImpl extends EdmNamedImpl 
implements EdmFunctionIm
 
   @Override
   public EdmEntitySet getEntitySet() throws EdmException {
-return 

olingo-odata2 git commit: [OLINGO-1258]JPA Filter for null is throwing exception

2018-04-18 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 2db7d0a03 -> 48b8d3ee3


[OLINGO-1258]JPA Filter for null is throwing exception


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/48b8d3ee
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/48b8d3ee
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/48b8d3ee

Branch: refs/heads/master
Commit: 48b8d3ee372ede49a5a23fe9a090f2856e730677
Parents: 2db7d0a
Author: Archana Rai 
Authored: Wed Apr 18 16:57:38 2018 +0530
Committer: Archana Rai 
Committed: Wed Apr 18 16:57:38 2018 +0530

--
 .../odata2/jpa/processor/core/ODataExpressionParser.java  |  2 +-
 .../processor/core/ODataFilterExpressionParserTest.java   | 10 ++
 2 files changed, 11 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/48b8d3ee/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index 7d845e9..3ccb290 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -156,7 +156,7 @@ public class ODataExpressionParser {
 
if(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance().isCompatible(type)){
   return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
   + (!"null".equals(right) ? JPQLStatement.Operator.LIKE : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
-  + " ESCAPE '\\'" + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
+  + ("null".equals(right) ? "" : " ESCAPE '\\'") + 
JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
 }
 return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
 + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + 
JPQLStatement.DELIMITER.SPACE + right

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/48b8d3ee/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
index bd15849..f964d7d 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
@@ -130,6 +130,8 @@ public class ODataFilterExpressionParserTest {
   
   private static final String[] EXPRESSION_STARTSWITHEQTRUE_ANDTRUE = 
{"startswith(text,'abc') eq true and true", 
   "((E1.text LIKE CONCAT('abc','%') ESCAPE '\\' ) AND true)"};
+
+  private static final String[] EXPRESSION_NULL_EQ = { "id eq null", "(E1.id 
IS null)" };
   
   private static Edm edm = null;
 
@@ -248,6 +250,14 @@ public class ODataFilterExpressionParserTest {
 assertEquals(EXPRESSION_EQ[OUTPUT], whereExpression);
   
   }
+  
+  @Test
+  public void testNullEqRelation() {
+String whereExpression = parseWhereExpression(EXPRESSION_NULL_EQ[INPUT], 
false);
+whereExpression = replacePositionalParameters(whereExpression);
+assertEquals(EXPRESSION_NULL_EQ[OUTPUT], whereExpression);
+  
+  }
 
   @Test
   public void testSimpleNeRelation() {



olingo-odata4 git commit: [OLINGO-1256]Error code improvements

2018-04-11 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master aaff527dc -> a93d49c1a


[OLINGO-1256]Error code improvements


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/a93d49c1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/a93d49c1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/a93d49c1

Branch: refs/heads/master
Commit: a93d49c1aa3fb57aa4aa3914b6b2aefe913fd067
Parents: aaff527
Author: Archana Rai 
Authored: Wed Apr 11 13:48:28 2018 +0530
Committer: Archana Rai 
Committed: Wed Apr 11 13:48:28 2018 +0530

--
 .../apache/olingo/server/core/ODataExceptionHelper.java   |  6 +-
 .../apache/olingo/server/core/ExceptionHelperTest.java| 10 ++
 2 files changed, 15 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a93d49c1/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java
--
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java
index 1e0efb1..ce6e94e 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java
@@ -132,7 +132,11 @@ public class ODataExceptionHelper {
   }
 
   public static ODataServerError createServerErrorObject(final 
ODataLibraryException e, final Locale requestedLocale) {
-return basicTranslatedError(e, requestedLocale);
+ODataServerError serverError = basicTranslatedError(e, requestedLocale);
+if(e instanceof SerializerException || e instanceof DeserializerException){
+  serverError.setStatusCode(HttpStatusCode.BAD_REQUEST.getStatusCode());
+}
+return serverError;
   }
 
   public static ODataServerError createServerErrorObject(final 
ODataApplicationException e) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a93d49c1/lib/server-core/src/test/java/org/apache/olingo/server/core/ExceptionHelperTest.java
--
diff --git 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/ExceptionHelperTest.java
 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/ExceptionHelperTest.java
index dffbf82..10d29ac 100644
--- 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/ExceptionHelperTest.java
+++ 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/ExceptionHelperTest.java
@@ -79,6 +79,16 @@ public class ExceptionHelperTest {
   checkStatusCode(serverError, HttpStatusCode.BAD_REQUEST, e);
 }
   }
+  
+  @Test
+  public void libraryExceptionLeadToBadRequest() {
+  ODataLibraryException e = new SerializerException(DEV_MSG, 
SerializerException.MessageKeys.MISSING_PROPERTY);
+  ODataServerError serverError = 
ODataExceptionHelper.createServerErrorObject(e, null);
+  checkStatusCode(serverError, HttpStatusCode.BAD_REQUEST, e);
+  e = new SerializerException(DEV_MSG, 
DeserializerException.MessageKeys.DUPLICATE_PROPERTY);
+  serverError = ODataExceptionHelper.createServerErrorObject(e, null);
+  checkStatusCode(serverError, HttpStatusCode.BAD_REQUEST, e);
+  }
 
   @Test
   public void contentNegotiatorExceptionMustLeadToNotAcceptable() {



olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master eebe72489 -> 2b6be00b3


[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2b6be00b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2b6be00b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2b6be00b

Branch: refs/heads/master
Commit: 2b6be00b32c613cbe7a6b03aadbeed69c1beb836
Parents: eebe724
Author: Archana Rai 
Authored: Mon Apr 9 13:43:39 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 9 13:43:39 2018 +0530

--
 .../odata2/client/core/ODataClientImpl.java | 18 ++
 .../client/core/ep/deserializer/Callback.java   | 18 ++
 ...LMetadataFunctionImportDeserializerTest.java | 18 ++
 .../XmlMetadataAssociationTest.java | 18 ++
 .../client/core/uri/EdmUriBuilderTest.java  | 18 ++
 .../core/uri/UriBuilderIntegrationTest.java | 18 ++
 .../odata2/client/core/uri/UriBuilderTest.java  | 18 ++
 .../odata2/client/core/uri/UriInfoTest.java | 18 ++
 .../odata2/client/core/uri/UriParserTest.java   | 18 ++
 .../RoomsToEmployeesWithInlineTeams.xml | 18 ++
 .../test/resources/metadataForDeepInsert.xml| 20 +++-
 .../test/resources/metadataForRelatedEntity.xml | 20 +++-
 .../src/test/resources/metadataProducts.xml | 19 +++
 .../test/resources/metadataWithNavigations.xml  | 20 +++-
 14 files changed, 256 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2b6be00b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
index a29b08b..60b2b88 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
@@ -1,3 +1,21 @@
+/***
+ * 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.
+ 
**/
 package org.apache.olingo.odata2.client.core;
 
 import java.io.InputStream;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2b6be00b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/Callback.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/Callback.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/Callback.java
index 2d1bf91..ddd48a0 100644
--- 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/Callback.java
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/Callback.java
@@ -1,3 +1,21 @@
+/***
+ * 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
+ * 
+ * 

olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master e13efb9be -> eebe72489


[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/eebe7248
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/eebe7248
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/eebe7248

Branch: refs/heads/master
Commit: eebe72489be37b6a64dbef7de84471b464e55520
Parents: e13efb9
Author: Archana Rai 
Authored: Mon Apr 9 13:26:25 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 9 13:26:25 2018 +0530

--
 odata2-lib/odata-client-api/pom.xml  | 10 +-
 odata2-lib/odata-client-core/pom.xml | 10 +-
 2 files changed, 18 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eebe7248/odata2-lib/odata-client-api/pom.xml
--
diff --git a/odata2-lib/odata-client-api/pom.xml 
b/odata2-lib/odata-client-api/pom.xml
index 4291bec..9a5e70a 100644
--- a/odata2-lib/odata-client-api/pom.xml
+++ b/odata2-lib/odata-client-api/pom.xml
@@ -1,4 +1,12 @@
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
+
+
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
4.0.0
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eebe7248/odata2-lib/odata-client-core/pom.xml
--
diff --git a/odata2-lib/odata-client-core/pom.xml 
b/odata2-lib/odata-client-core/pom.xml
index e63401b..06fe183 100644
--- a/odata2-lib/odata-client-core/pom.xml
+++ b/odata2-lib/odata-client-core/pom.xml
@@ -1,4 +1,12 @@
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
+
+
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
4.0.0
 



olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 4261deb7f -> e13efb9be


[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/e13efb9b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/e13efb9b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/e13efb9b

Branch: refs/heads/master
Commit: e13efb9be741cc0634da22168b05d000530f7f82
Parents: 4261deb
Author: Archana Rai 
Authored: Mon Apr 9 13:11:36 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 9 13:11:36 2018 +0530

--
 .../olingo/odata2/client/api/ODataClient.java | 18 ++
 .../ep/DeserializerMetadataProviderInterface.java | 18 ++
 .../odata2/client/api/uri/EdmURIBuilder.java  | 18 ++
 .../olingo/odata2/client/api/uri/QueryOption.java | 18 ++
 .../olingo/odata2/client/api/uri/SegmentType.java | 18 ++
 .../olingo/odata2/client/api/uri/URIBuilder.java  | 18 ++
 .../odata2/client/core/uri/EdmURIBuilderImpl.java | 18 ++
 .../olingo/odata2/client/core/uri/Segment.java| 18 ++
 .../odata2/client/core/uri/URIBuilderImpl.java| 18 ++
 .../odata2/client/core/uri/util/UriUtil.java  | 18 ++
 10 files changed, 180 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/e13efb9b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ODataClient.java
--
diff --git 
a/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ODataClient.java
 
b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ODataClient.java
index f031004..b3282a7 100644
--- 
a/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ODataClient.java
+++ 
b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ODataClient.java
@@ -1,3 +1,21 @@
+/***
+ * 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.
+ 
**/
 package org.apache.olingo.odata2.client.api;
 
 import java.io.InputStream;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/e13efb9b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ep/DeserializerMetadataProviderInterface.java
--
diff --git 
a/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ep/DeserializerMetadataProviderInterface.java
 
b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ep/DeserializerMetadataProviderInterface.java
index 3ddf338..4367d3b 100644
--- 
a/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ep/DeserializerMetadataProviderInterface.java
+++ 
b/odata2-lib/odata-client-api/src/main/java/org/apache/olingo/odata2/client/api/ep/DeserializerMetadataProviderInterface.java
@@ -1,3 +1,21 @@
+/***
+ * 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 

[16/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
new file mode 100644
index 000..9615caa
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
@@ -0,0 +1,811 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.batch.BatchResponsePart;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
+import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import org.apache.olingo.odata2.core.batch.v2.BatchLineReader;
+import org.apache.olingo.odata2.core.batch.v2.BatchParser;
+import org.apache.olingo.odata2.core.batch.v2.Line;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+public class ProducerConsumerIntegrationTest {
+  protected static final URI BASE_URI;
+  private static final String PUT = "PUT";
+  private static final String BOUNDARY = "batch_123";
+  private static final Object CRLF = "\r\n";
+
+  static {
+try {
+  BASE_URI = new URI("http://host:80/service/;);
+} catch (URISyntaxException e) {
+  throw new RuntimeException(e);
+}
+  }
+  private static final DeserializerProperties DEFAULT_READ_PROPERTIES 
+  = DeserializerProperties.init()
+  .build();
+  private static final EntitySerializerProperties DEFAULT_WRITE_PROPERTIES 
+  = EntitySerializerProperties
+  .serviceRoot(
+  BASE_URI).build();
+  private static final String XML = "application/xml";
+  private static final String JSON = "application/json";
+
+  @Test
+  public void produceRoomAndThenConsumeIt() throws Exception {
+EdmEntitySet roomSet = MockFacade.getMockEdm()
+.getDefaultEntityContainer().getEntitySet("Rooms");
+Entity localRoomData = new Entity();
+localRoomData.addProperty("Id", "1");
+localRoomData.addProperty("Name", "Neu \n Schwanstein蝴蝶");
+
+Map

[17/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
new file mode 100644
index 000..567d3bc
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
@@ -0,0 +1,491 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.client.api.uri.EdmURIBuilder;
+import org.apache.olingo.odata2.client.api.uri.QueryOption;
+import org.apache.olingo.odata2.client.api.uri.SegmentType;
+import org.apache.olingo.odata2.client.core.uri.util.UriUtil;
+import org.apache.olingo.odata2.core.commons.Encoder;
+
+/**
+ * This is a builder class that constructs URI with edm validations
+ *
+ */
+public class EdmURIBuilderImpl implements EdmURIBuilder{
+  protected final List segments = new ArrayList();
+  private SegmentType state = SegmentType.INITIAL;
+  
+  /**
+   * Insertion-order map of query options.
+   */
+  protected final Map queryOptions = new LinkedHashMap();
+  
+  /**
+   * Insertion-order map of custom query options.
+   */
+  protected final Map customQueryOptions = new 
LinkedHashMap();
+  
+  /**
+   * Insertion-order map of function import parameters.
+   */
+  protected final Map functionImportParameters = new 
LinkedHashMap();
+  
+  /**
+   * Constructor.
+   *
+   * @param serviceRoot absolute URL (schema, host and port included) 
representing the location of the root of the data
+   * service.
+   */
+  public EdmURIBuilderImpl(final String serviceRoot) {
+state = SegmentType.INITIAL;
+segments.add(new Segment(SegmentType.INITIAL, serviceRoot));
+  }
+  
+  @Override
+  public EdmURIBuilder appendCountSegment() {
+switch (state) {
+case INITIAL:
+case SIMPLEPROPERTY:
+case COMPLEXPROPERTY:
+case NAVIGATION_TO_ONE:
+case NAVIGATION_TO_MANY_WITH_KEY:
+case FUNCTIONIMPORT_WITH_KEY:
+case ENTITY:
+throw new RuntimeException("Can't specify a key at this 
position");//NOSONAR
+case ENTITYSET:
+appendCount();
+break;
+case NAVIGATION_TO_MANY:
+appendCount();
+break;
+case FUNCTIONIMPORT_MANY:
+  appendCount();
+  break;
+default:
+throw new RuntimeException("Unkown state:" + state);//NOSONAR
+}
+return this;
+  }
+
+  private void appendCount() {
+segments.add(new Segment(SegmentType.COUNT, SegmentType.COUNT.getValue()));
+state = SegmentType.COUNT;
+  }
+
+  @Override
+  public EdmURIBuilder appendValueSegment() {
+switch (state) {
+case INITIAL:
+case COMPLEXPROPERTY:
+case ENTITYSET:
+case NAVIGATION_TO_MANY:
+case ENTITY:
+case NAVIGATION_TO_MANY_WITH_KEY:
+case NAVIGATION_TO_ONE:
+throw new RuntimeException("Can't specify a navigation at this 
position");//NOSONAR
+case SIMPLEPROPERTY:
+  addValueSegment();
+  break;
+default:
+throw new RuntimeException("Unkown state:" + state);//NOSONAR
+}
+return this;
+  }
+  
+  private void addValueSegment() {
+segments.add(new Segment(SegmentType.VALUE, SegmentType.VALUE.getValue()));
+  }
+
+  @Override
+  public EdmURIBuilder appendMetadataSegment() {
+segments.add(new Segment(SegmentType.METADATA, 
SegmentType.METADATA.getValue()));
+return this;
+  }
+
+  @Override
+  public EdmURIBuilder format(String format) { //NOSONAR
+switch (state) {
+case INITIAL:
+case COUNT:
+case VALUE:
+  throw new RuntimeException("Can't specify a format at this 
position");//NOSONAR
+case NAVIGATION_TO_ONE:
+case SIMPLEPROPERTY:
+case COMPLEXPROPERTY:
+case ENTITYSET:
+case NAVIGATION_TO_MANY:
+case ENTITY:
+case NAVIGATION_TO_MANY_WITH_KEY:
+

[05/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
new file mode 100644
index 000..50d0c5e
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
@@ -0,0 +1,1132 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.commons.InlineCount;
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.exception.MessageReference;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
+import org.apache.olingo.odata2.api.uri.KeyPredicate;
+import org.apache.olingo.odata2.api.uri.PathSegment;
+import org.apache.olingo.odata2.api.uri.UriInfo;
+import org.apache.olingo.odata2.api.uri.UriNotMatchingException;
+import org.apache.olingo.odata2.api.uri.UriParser;
+import org.apache.olingo.odata2.api.uri.UriSyntaxException;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.core.uri.UriInfoImpl;
+import org.apache.olingo.odata2.core.uri.UriParserImpl;
+import org.apache.olingo.odata2.core.uri.UriType;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UriParserTest {
+
+  private Edm edm;
+
+  @Before
+  public void getEdm() throws ODataException {
+edm = MockFacade.getMockEdm();
+  }
+  
+  @Test
+  public void copyPathSegmentsTest() throws Exception {
+List pathSegments = new ArrayList();
+pathSegments.add(UriParser.createPathSegment("$metadata", null));
+UriInfo result = new UriParserImpl(edm).parse(pathSegments, 
Collections. emptyMap());
+assertNotNull(result);
+assertEquals(1, pathSegments.size());
+assertEquals("$metadata", pathSegments.get(0).getPath());
+  }
+  
+  @Test
+  public void copyPathSegmentsTestEncoded() throws Exception {
+List pathSegments = new ArrayList();
+pathSegments.add(UriParser.createPathSegment("%24metadata", null));
+UriInfoImpl result = (UriInfoImpl) new 
UriParserImpl(edm).parse(pathSegments,
+Collections. emptyMap());
+assertNotNull(result);
+assertEquals(UriType.URI8, result.getUriType());
+  }
+  
+  @Test
+  public void parseNonsense() throws Exception {
+parseWrongUri("/bla", UriNotMatchingException.NOTFOUND);
+  }
+
+  @Test
+  public void parseServiceDocument() throws Exception {
+UriInfoImpl result = parse("/");
+assertEquals(UriType.URI0, result.getUriType());
+
+result = parse("");
+assertEquals(UriType.URI0, result.getUriType());
+
+result =
+(UriInfoImpl) new UriParserImpl(edm).parse(Collections. 
emptyList(), Collections
+. emptyMap());
+assertEquals(UriType.URI0, result.getUriType());
+  }
+
+  @Test
+  public void parseMetadata() throws Exception {
+UriInfoImpl result = parse("/$metadata");
+assertEquals(UriType.URI8, result.getUriType());
+  }
+
+  @Test
+  public void parseMetadataError() throws Exception {
+parseWrongUri("/$metadata/somethingwrong", 
UriSyntaxException.MUSTBELASTSEGMENT);
+  }
+
+  @Test
+  public void parseBatch() throws Exception {
+UriInfoImpl result = parse("/$batch");
+assertEquals(UriType.URI9, result.getUriType());
+  }
+
+  @Test
+  public void parseBatchError() throws Exception {
+parseWrongUri("/$batch/somethingwrong", 
UriSyntaxException.MUSTBELASTSEGMENT);
+  }
+
+  @Test
+  public void parseSomethingEntitySet() throws Exception {
+parseWrongUri("/somethingwrong", UriNotMatchingException.NOTFOUND);
+  }
+
+  @Test
+  public void parseContainerWithoutEntitySet() throws Exception {
+parseWrongUri("Container1.", UriNotMatchingException.MATCHPROBLEM);
+  }
+
+  @Test
+  

[22/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
new file mode 100644
index 000..7a0ca1f
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
@@ -0,0 +1,140 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.edm.Impl;
+
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.client.api.edm.EdmDocumentation;
+
+/**
+ * Objects of this class represent function import parameters
+ * 
+ */
+public class EdmFunctionImportParameter {
+
+  private String name;
+  private String mode;
+  private EdmSimpleTypeKind type;
+  private EdmFacets facets;
+  private EdmMapping mapping;
+  private EdmDocumentation documentation;
+  private EdmAnnotations annotations;
+
+  /**
+   * @return String name of the parameter
+   */
+  public String getName() {
+return name;
+  }
+
+  /**
+   * @return {@link EdmSimpleTypeKind} of this parameter
+   */
+  public EdmSimpleTypeKind getType() {
+return type;
+  }
+
+  /**
+   * @return {@link EdmFacets} of this parameter
+   */
+  public EdmFacets getFacets() {
+return facets;
+  }
+
+  /**
+   * @return {@link EdmMappingImpl} of this parameter
+   */
+  public EdmMapping getMapping() {
+return mapping;
+  }
+
+  /**
+   * Sets the name of this {@link EdmFunctionImportParameter}
+   * @param name
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setName(final String name) {
+this.name = name;
+return this;
+  }
+
+  /**
+   * Sets the mode of this {@link EdmFunctionImportParameter}
+   * @param mode
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setMode(final String mode) {
+this.mode = mode;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmSimpleTypeKind} of this {@link 
EdmFunctionImportParameter}
+   * @param type
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setType(final EdmSimpleTypeKind type) {
+this.type = type;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmFacets} of this {@link EdmFunctionImportParameter}
+   * @param facets
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setFacets(final EdmFacets facets) {
+this.facets = facets;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmMappingImpl} of this {@link EdmFunctionImportParameter}
+   * @param mapping
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setMapping(final EdmMapping mapping) {
+this.mapping = mapping;
+return this;
+  }
+
+  /**
+   * Sets the {@link Documentation} of this {@link EdmFunctionImportParameter}
+   * @param documentation
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setDocumentation(final EdmDocumentation 
documentation) {
+this.documentation = documentation;
+return this;
+  }
+
+  public void setAnnotations(EdmAnnotationsImpl annotations) {
+this.annotations = annotations;
+  }
+  
+  public EdmAnnotations getAnnotations() {
+return this.annotations;
+  }  
+  @Override
+  public String toString() {
+  return 

[03/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml 
b/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
new file mode 100644
index 000..e9b58d9
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
@@ -0,0 +1,12556 @@
+
+
+http://www.w3.org/2005/Atom; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata; 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices; 
xml:base="https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/;>
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees
+   Employees
+   2013-12-02T12:20:28.605Z
+   
+   
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('1')
+   Walter Winter
+   1999-01-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   1
+   Walter Winter
+   1
+   1
+   1
+   
+   
+   69124
+   Heidelberg
+   
+   Germany
+   
+   52
+   1999-01-01T00:00:00
+   Employees('1')/$value
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('2')
+   Frederic Fall
+   2003-07-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   2
+   Frederic Fall
+   1
+   2
+   1
+   
+   
+   69190
+   Walldorf
+   
+   Germany
+   
+   32
+   2003-07-01T00:00:00
+   Employees('2')/$value
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('3')
+   Jonathan Smith
+   2013-12-02T12:20:28.622Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   3
+   Jonathan Smith
+   1
+   2
+   1
+   
+   
+   69190
+   Walldorf
+   
+   Germany
+   
+   56
+   
+   Employees('3')/$value
+   
+   
+   
+   

[14/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
new file mode 100644
index 000..3a89af0
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
@@ -0,0 +1,834 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.gson.stream.JsonReader;
+
+/**
+ *  
+ */
+public class JsonPropertyDeserializerTest extends BaseTest {
+  
+  @Rule
+  public ExpectedException expectedEx = ExpectedException.none();
+  
+  @Test
+  public void booleanSimpleProperty() throws Exception {
+EdmProperty property = mock(EdmProperty.class);
+when(property.getName()).thenReturn("Boolean");
+when(property.isSimple()).thenReturn(true);
+
when(property.getType()).thenReturn(EdmSimpleTypeKind.Boolean.getEdmSimpleTypeInstance());
+
+JsonReader reader = prepareReader("{\"Boolean\":true}");
+final Map resultMap = execute(property, reader);
+assertEquals(Boolean.TRUE, resultMap.get("Boolean"));
+  }
+
+  @Test
+  public void allNumberSimplePropertyKinds() throws Exception {
+String simplePropertyJson = "{\"d\":{\"Age\":67}}";
+EdmProperty edmProperty = mock(EdmProperty.class);
+when(edmProperty.getName()).thenReturn("Age");
+when(edmProperty.isSimple()).thenReturn(true);
+
+// Byte
+JsonReader reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.Byte.getEdmSimpleTypeInstance());
+Map resultMap = execute(edmProperty, reader);
+assertEquals(Short.valueOf("67"), resultMap.get("Age"));
+
+// SByte
+reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.SByte.getEdmSimpleTypeInstance());
+resultMap = execute(edmProperty, reader);
+assertEquals(Byte.valueOf("67"), resultMap.get("Age"));
+// Int16
+reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.Int16.getEdmSimpleTypeInstance());
+resultMap = execute(edmProperty, reader);
+

[12/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
new file mode 100644
index 000..2a255f1
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
@@ -0,0 +1,281 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.util.Locale;
+
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataErrorContext;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.XmlErrorDocumentDeserializer;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class XmlErrorDocumentTest extends AbstractDeserializerTest {
+
+  private static final String XML_ERROR_DOCUMENT_SIMPLE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_NULL_LOCALE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INNER_ERROR =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "Some InnerError\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INNER_ERROR_COMPLEX =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "" +
+  "More Inner Error" +
+  "\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INVALID_XML =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  /* error document with name 'locale' instead of 'lang' for message object */
+  private static final String XML_ERROR_DOCUMENT_UNKNOWN_CONTENT =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "\tSecret\n" +
+  "";
+  /* error document without value for message object */
+  private static final String XML_ERROR_DOCUMENT_EMPTY_MESSAGE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\t\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_MESSAGE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_CODE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_ERROR =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private XmlErrorDocumentDeserializer xedc = new 

[21/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
new file mode 100644
index 000..aaba634
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
@@ -0,0 +1,169 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep;
+
+import java.io.BufferedWriter;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.util.List;
+
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.batch.BatchResponsePart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.processor.ODataErrorContext;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedDeserializer;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedSerializer;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.JsonEntityDeserializer;
+import 
org.apache.olingo.odata2.client.core.ep.serializer.JsonEntryEntitySerializer;
+import 
org.apache.olingo.odata2.client.core.ep.serializer.JsonFeedEntitySerializer;
+import org.apache.olingo.odata2.core.batch.BatchRequestWriter;
+import org.apache.olingo.odata2.core.batch.BatchResponseWriter;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.consumer.JsonErrorDocumentConsumer;
+import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
+
+/**
+ *  This class includes methods to serialize deserialize JSON Content type
+ */
+public class JsonSerializerDeserializer implements ContentTypeBasedSerializer, 
ContentTypeBasedDeserializer {
+
+  private static final String DEFAULT_CHARSET = "UTF-8";
+
+  @Override
+  public ODataResponse writeEntry(EdmEntitySet entitySet, Entity data) 
+  throws EntityProviderException {
+
+final EntitySerializerProperties properties = data == null ? 
+EntitySerializerProperties.serviceRoot(null).build() : 
data.getWriteProperties() == null ? 
+EntitySerializerProperties.serviceRoot(null).build() : 
data.getWriteProperties();
+final EntityInfoAggregator entityInfo = 
EntityInfoAggregator.create(entitySet, null);
+CircleStreamBuffer buffer = new CircleStreamBuffer();
+
+try {
+  BufferedWriter writer = new BufferedWriter(new 
OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
+  JsonEntryEntitySerializer producer = new 
JsonEntryEntitySerializer(properties);
+  producer.append(writer, entityInfo, data);
+  writer.flush();
+  buffer.closeWrite();
+
+ 

[08/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
new file mode 100644
index 000..f7e0433
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
@@ -0,0 +1,1027 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.edm.ClientEdm;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.JsonSerializerDeserializer;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+import com.google.gson.Gson;
+import com.google.gson.internal.LinkedTreeMap;
+
+/**
+ *  
+ */
+public class JsonEntryEntitySerializerTest extends BaseTest { 
+  protected static final String BASE_URI = "http://host:80/service/;;
+  protected static final EntitySerializerProperties DEFAULT_PROPERTIES =
+  EntitySerializerProperties.serviceRoot(URI.create(BASE_URI)).build();
+  protected static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+  protected static final String ERROR_MSG1 = "Navigation has to be either an 
Entity or a Map.";
+  
+
+  @Test
+  public void entry() throws Exception {
+final EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+Entity entity = new Entity();
+entity.addProperty("Id", "1");
+entity.addProperty("isScrumTeam", true);
+entity.setWriteProperties(DEFAULT_PROPERTIES);
+
+final ODataResponse response = new 
JsonSerializerDeserializer().writeEntry(entitySet, entity);
+final String json = verifyResponse(response);
+assertEquals("{\"Id\":\"1\",\"isScrumTeam\":true}", json);
+  }
+
+  

[09/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
new file mode 100644
index 000..8ceead5
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
@@ -0,0 +1,1033 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathNotExists;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.AbstractProviderTest;
+import org.apache.olingo.odata2.client.core.ep.AtomSerializerDeserializer;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.custommonkey.xmlunit.exceptions.XpathException;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.xml.sax.SAXException;
+
+/**
+ *  
+ */
+public class AtomFeedSerializerTest extends AbstractProviderTest {
+  @Rule
+  public ExpectedException expectedEx = ExpectedException.none();
+
+  private String employeeXPathString = 
"/a:entry/a:link[@href=\"Rooms('1')/nr_Employees\" and @title='nr_Employees']";
+
+  private static final String EXP_MSG = "Write properties are mandatory for 
XML.";
+  private static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+  
+  public AtomFeedSerializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private GetEntitySetUriInfo view;
+
+  @Before
+  public void before() throws Exception {
+initializeRoomData(1);
+
+view = mock(GetEntitySetUriInfo.class);
+
+EdmEntitySet set = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+when(view.getTargetEntitySet()).thenReturn(set);
+  }
+
+  @Test
+  public void entityWithInlineFeed() throws Exception {
+Entity roomData = new Entity();
+roomData.addProperty("Id", "1");
+roomData.addProperty("Name", "Neu Schwanstein");
+roomData.addProperty("Seats", new Integer(20));
+EntityCollection listData = new EntityCollection();
+EntitySerializerProperties properties =
+EntitySerializerProperties.serviceRoot(BASE_URI)
+.includeMetadata(true).build();
+Entity data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("EmployeeName", "EmpName1");
+   

[23/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/pom.xml
--
diff --git a/odata2-lib/odata-client-core/pom.xml 
b/odata2-lib/odata-client-core/pom.xml
new file mode 100644
index 000..e63401b
--- /dev/null
+++ b/odata2-lib/odata-client-core/pom.xml
@@ -0,0 +1,90 @@
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
+   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+   4.0.0
+
+   
+   org.apache.olingo
+   olingo-odata2-lib
+   2.0.11-SNAPSHOT
+   ..
+   
+
+   olingo-odata2-client-core
+   jar
+   ${project.artifactId}
+
+
+   
+ 
+  junit
+  junit
+  ${junit.version}
+  
+  
+   org.apache.olingo
+   olingo-odata2-client-api
+   ${project.version}
+
+   
+   org.apache.olingo
+   olingo-odata2-core
+   ${project.version}
+
+
+org.apache.olingo
+olingo-odata2-testutil
+${project.version}
+test
+
+
+xmlunit
+xmlunit
+test
+
+   
+ org.apache.httpcomponents
+ httpcore
+ ${httpcore.version}
+   
+   
+   
+   
+   
+   maven-jar-plugin
+   
+   
+   
${project.build.outputDirectory}/META-INF/MANIFEST.MF
+   
+   
+   
+   
+   org.apache.felix
+   maven-bundle-plugin
+   true
+   
+   
+   bundle-manifest
+   process-classes
+   
+   manifest
+   
+   
+   
+   
+   
+   
+   *
+   
+   
+   
+   
${project.url}
+   
lazy
+   
${project.artifactId}
+   
+   
+   
+   
+   
+
+
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
new file mode 100644
index 000..a29b08b
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
@@ -0,0 +1,181 @@
+package org.apache.olingo.odata2.client.core;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.ODataNotAcceptableException;
+import org.apache.olingo.odata2.api.uri.PathSegment;
+import org.apache.olingo.odata2.api.uri.UriInfo;
+import org.apache.olingo.odata2.api.uri.UriNotMatchingException;
+import org.apache.olingo.odata2.api.uri.UriSyntaxException;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedDeserializer;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedSerializer;
+import 
org.apache.olingo.odata2.client.api.ep.DeserializerMetadataProviderInterface;
+import 

[07/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
new file mode 100644
index 000..23f3310
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
@@ -0,0 +1,919 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.JsonSerializerDeserializer;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+/**
+ *  
+ */
+public class JsonFeedEntitySerializerTest extends BaseTest { 
+  protected static final String BASE_URI = "http://host:80/service/;;
+  protected static final EntitySerializerProperties DEFAULT_PROPERTIES =
+  EntitySerializerProperties.serviceRoot(URI.create(BASE_URI)).build();
+  protected static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+
+  @Test
+  public void unbalancedPropertyEntryWithInlineFeed() throws Exception {
+Edm edm = MockFacade.getMockEdm();
+EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", 
"Employee").getProperty("ImageUrl");
+EdmFacets facets = mock(EdmFacets.class);
+when(facets.getMaxLength()).thenReturn(1);
+when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+Entity roomData = new Entity();
+roomData.addProperty("Id", "1");
+roomData.addProperty("Name", "Neu Schwanstein");
+roomData.addProperty("Seats", new Integer(20));
+
+
roomData.setWriteProperties(EntitySerializerProperties.serviceRoot(URI.create(BASE_URI))
+.build());
+EntityCollection innerData = new EntityCollection();
+Entity data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("EmployeeName", "EmpName1");
+data.addProperty("RoomId", "1");
+data.setWriteProperties(DEFAULT_PROPERTIES);
+innerData.addEntity(data);
+
+data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("RoomId", "1");
+data.setWriteProperties(DEFAULT_PROPERTIES);
+innerData.addEntity(data);
+roomData.addNavigation("nr_Employees", innerData);
+
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Rooms");
+final ODataResponse response =
+new JsonSerializerDeserializer().writeEntry(entitySet, roomData);
+assertNotNull(response);
+

[11/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
new file mode 100644
index 000..daf7a5c
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
@@ -0,0 +1,1904 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmAction;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationElement;
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmAssociation;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSet;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmContentKind;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.edm.ClientEdm;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.edm.EdmSchema;
+import org.apache.olingo.odata2.client.api.edm.EdmUsing;
+import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.EdmTestProvider;
+import org.junit.Test;
+
+public class XmlMetadataDeserializerTest extends AbstractXmlDeserializerTest {
+
+  public XmlMetadataDeserializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private static final String DEFAULT_VALUE = "Photo";
+  private static final String FC_TARGET_PATH = "Содержание";
+  private static final String FC_NS_URI = "http://localhost;;
+  private static final String FC_NS_PREFIX = "ру";
+  private static final Boolean FC_KEEP_IN_CONTENT = Boolean.FALSE;
+  private static final String NAMESPACE = "RefScenario";
+  private static final String NAMESPACE2 = "RefScenario2";
+  private static final String NAMESPACE3 = "RefScenario3";
+  private static final String MIME_TYPE = "image/jpeg";
+  private static final String ASSOCIATION = "ManagerEmployees";
+  private static final int MAX_LENGTH = 4;
+
+  private final String[] 

[02/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
--
diff --git a/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml 
b/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
new file mode 100644
index 000..23a4eb0
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
@@ -0,0 +1,474 @@
+
+http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/"
 xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata; 
xmlns="http://www.w3.org/2005/Atom;>
+  Products
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products/
+  2017-04-07T05:44:22Z
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(0)
+Bread
+Whole grain bread
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(0)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(0)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(1)
+  Tokyo Traders
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(1)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  1
+  Tokyo Traders
+  0
+  
+NE 40th
+Redmond
+WA
+98052
+USA
+  
+
+  
+
+  
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+  
+0
+1992-01-01T00:00:00
+
+4
+2.5
+  
+
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(1)
+Milk
+Low fat milk
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(1)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(1)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(0)
+  Exotic Liquids
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(0)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  0
+  Exotic Liquids
+  0
+  
+NE 228th
+Sammamish
+WA
+98074
+USA
+  
+
+  
+
+  
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+  
+1
+1995-10-01T00:00:00
+
+3
+3.5
+  
+
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(2)
+Vint soda
+Americana Variety - Mix of 6 flavors
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(2)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(2)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(0)
+  Exotic Liquids
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(0)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  0
+  Exotic Liquids
+  0
+  
+NE 228th
+Sammamish
+WA
+98074
+   

[06/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
new file mode 100644
index 000..4e4baf6
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
@@ -0,0 +1,988 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.client.api.uri.QueryOption;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdmUriBuilderTest {
+  
+  protected static final String SERVICE_ROOT_URI = "http://host:80/service/;;
+  protected static final String SERVICE_ROOT_URI_1 = "http://host:80/service;;
+  private Edm edm;
+
+  @Before
+  public void getEdm() throws ODataException {
+edm = MockFacade.getMockEdm();
+  }
+  
+  @Test
+  public void testUriSimpleES() throws EdmException {
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Employees;, uri.toASCIIString());
+  }
+  
+  @Test
+  public void testSimpleESWithCountUri1() throws EdmException {
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+appendCountSegment().
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Employees/$count;, 
uri.toASCIIString());
+  }
+  
+  @Test(expected=RuntimeException.class)
+  public void negTestWithCountAndFormat() throws EdmException {
+new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+appendCountSegment().
+format("application/json").
+build();
+  }
+  
+  @Test
+  public void testSimpleESWithCountUri2() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+appendCountSegment().
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Managers('1')/nm_Employees/$count", 
uri.toASCIIString());
+  }
+  
+  @Test
+  public void testSimpleESWithCountAndFilter() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+appendCountSegment().
+addQueryOption(QueryOption.FILTER, "TeamId eq '1'").
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Managers('1')/nm_Employees/"
++ "$count?$filter=TeamId%20eq%20'1'", uri.toASCIIString());
+  }
+  
+  @Test(expected=RuntimeException.class)
+  public void negTestUriWithCountSegment1() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+EdmEntitySet employeeEntitySet = 
edm.getDefaultEntityContainer().getEntitySet("Employees");
+new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+

[19/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
new file mode 100644
index 000..73d62c1
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
@@ -0,0 +1,1570 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmAction;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationElement;
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmAssociation;
+import org.apache.olingo.odata2.api.edm.EdmAssociationEnd;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSet;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmContentKind;
+import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmReferentialConstraint;
+import org.apache.olingo.odata2.api.edm.EdmReferentialConstraintRole;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.edm.FullQualifiedName;
+import org.apache.olingo.odata2.api.edm.provider.Facets;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.edm.EdmSchema;
+import org.apache.olingo.odata2.client.api.edm.EdmUsing;
+import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd;
+import 
org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationAttributeImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationElementImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationsImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationEndImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationSetEndImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationSetImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmComplexPropertyImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmComplexTypeImpl;
+import 

[20/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
new file mode 100644
index 000..06bae41
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
@@ -0,0 +1,596 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.exception.ODataApplicationException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import 
org.apache.olingo.odata2.client.api.ep.callback.OnDeserializeInlineContent;
+import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityTypeMapping;
+import org.apache.olingo.odata2.core.ep.entry.EntryMetadataImpl;
+import org.apache.olingo.odata2.core.ep.entry.MediaMetadataImpl;
+import org.apache.olingo.odata2.core.ep.entry.ODataEntryImpl;
+import org.apache.olingo.odata2.core.ep.feed.FeedMetadataImpl;
+import org.apache.olingo.odata2.core.ep.feed.ODataDeltaFeedImpl;
+import org.apache.olingo.odata2.core.ep.util.FormatXml;
+
+/**
+ * Atom/XML format reader/consumer for entries.
+ * 
+ * {@link XmlEntryDeserializer} instance can be reused for several
+ * {@link #readEntry(XMLStreamReader, EntityInfoAggregator, 
EntityProviderReadProperties)} calls
+ * but be aware that the instance and their readEntry* methods 
are NOT THREAD SAFE.
+ * 
+ */
+public class XmlEntryDeserializer {
+
+  private ODataEntryImpl readEntryResult;
+  private Map properties;
+  private MediaMetadataImpl mediaMetadata;
+  private EntryMetadataImpl entryMetadata;
+  private EntityTypeMapping typeMappings;
+  private String currentHandledStartTagName;
+
+  /**
+   * Deserializes payload entry
+   * @param reader
+   * @param eia
+   * @param readProperties
+   * @param isInline
+   * @return ODataEntry
+   * @throws EntityProviderException
+   */
+  public ODataEntry readEntry(final XMLStreamReader reader, final 
EntityInfoAggregator eia,
+  final DeserializerProperties readProperties, final boolean isInline) 
throws EntityProviderException {
+try {
+  initialize(readProperties);
+
+  if (isInline) {
+setETag(reader);
+  }
+
+  while (reader.hasNext() && !isEntryEndTag(reader)) {
+reader.nextTag();
+if (reader.isStartElement()) {
+  handleStartedTag(reader, eia, readProperties);
+}
+  }
+
+  return readEntryResult;
+} catch (XMLStreamException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  

[24/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/4261deb7
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/4261deb7
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/4261deb7

Branch: refs/heads/master
Commit: 4261deb7fb7b309d444d9af0e5aad2e45dbfb8ea
Parents: 91bd4b8
Author: Archana Rai 
Authored: Mon Apr 9 11:58:24 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 9 11:58:24 2018 +0530

--
 .../olingo/odata2/api/edm/EdmException.java | 5 +
 .../odata2/api/ep/EntityProviderException.java  | 8 +
 odata2-lib/odata-client-api/pom.xml |71 +
 .../olingo/odata2/client/api/ODataClient.java   |   119 +
 .../olingo/odata2/client/api/edm/ClientEdm.java |41 +
 .../odata2/client/api/edm/EdmDataServices.java  |85 +
 .../odata2/client/api/edm/EdmDocumentation.java |58 +
 .../olingo/odata2/client/api/edm/EdmSchema.java |81 +
 .../olingo/odata2/client/api/edm/EdmUsing.java  |57 +
 .../api/ep/ContentTypeBasedDeserializer.java|91 +
 .../api/ep/ContentTypeBasedSerializer.java  |63 +
 .../DeserializerMetadataProviderInterface.java  |30 +
 .../client/api/ep/DeserializerProperties.java   |   170 +
 .../olingo/odata2/client/api/ep/Entity.java |97 +
 .../odata2/client/api/ep/EntityCollection.java  |79 +
 .../EntityCollectionSerializerProperties.java   |   119 +
 .../api/ep/EntitySerializerProperties.java  |   159 +
 .../odata2/client/api/ep/EntityStream.java  |55 +
 .../ep/callback/OnDeserializeInlineContent.java |47 +
 .../odata2/client/api/uri/EdmURIBuilder.java|   184 +
 .../odata2/client/api/uri/QueryOption.java  |70 +
 .../odata2/client/api/uri/SegmentType.java  |76 +
 .../odata2/client/api/uri/URIBuilder.java   |   174 +
 odata2-lib/odata-client-core/pom.xml|90 +
 .../odata2/client/core/ODataClientImpl.java |   181 +
 .../core/edm/EdmMetadataAssociationEnd.java |38 +
 .../odata2/client/core/edm/EdmOnDelete.java |52 +
 .../edm/Impl/EdmAnnotationAttributeImpl.java|99 +
 .../core/edm/Impl/EdmAnnotationElementImpl.java |93 +
 .../core/edm/Impl/EdmAnnotationsImpl.java   |82 +
 .../core/edm/Impl/EdmAssociationEndImpl.java|   106 +
 .../core/edm/Impl/EdmAssociationImpl.java   |   149 +
 .../core/edm/Impl/EdmAssociationSetEndImpl.java |92 +
 .../core/edm/Impl/EdmAssociationSetImpl.java|   137 +
 .../core/edm/Impl/EdmComplexPropertyImpl.java   |56 +
 .../core/edm/Impl/EdmComplexTypeImpl.java   |75 +
 .../Impl/EdmCustomizableFeedMappingsImpl.java   |   140 +
 .../core/edm/Impl/EdmDocumentationImpl.java |   110 +
 .../client/core/edm/Impl/EdmElementImpl.java|55 +
 .../core/edm/Impl/EdmEntityContainerImpl.java   |   222 +
 .../client/core/edm/Impl/EdmEntitySetImpl.java  |   136 +
 .../client/core/edm/Impl/EdmEntityTypeImpl.java |   133 +
 .../core/edm/Impl/EdmFunctionImportImpl.java|   179 +
 .../edm/Impl/EdmFunctionImportParameter.java|   140 +
 .../odata2/client/core/edm/Impl/EdmImpl.java|   207 +
 .../odata2/client/core/edm/Impl/EdmKeyImpl.java |   101 +
 .../client/core/edm/Impl/EdmMappingImpl.java|99 +
 .../client/core/edm/Impl/EdmNamedImpl.java  |82 +
 .../edm/Impl/EdmNavigationPropertyImpl.java |   119 +
 .../client/core/edm/Impl/EdmOnDeleteImpl.java   |   112 +
 .../client/core/edm/Impl/EdmParameterImpl.java  |71 +
 .../client/core/edm/Impl/EdmPropertyImpl.java   |91 +
 .../core/edm/Impl/EdmPropertyRefImpl.java   |47 +
 .../edm/Impl/EdmReferentialConstraintImpl.java  |72 +
 .../Impl/EdmReferentialConstraintRoleImpl.java  |98 +
 .../client/core/edm/Impl/EdmSchemaImpl.java |   205 +
 .../core/edm/Impl/EdmSimplePropertyImpl.java|62 +
 .../core/edm/Impl/EdmStructuralTypeImpl.java|   154 +
 .../client/core/edm/Impl/EdmTypedImpl.java  |84 +
 .../client/core/edm/Impl/EdmUsingImpl.java  |   129 +
 .../core/ep/AtomSerializerDeserializer.java |   211 +
 .../core/ep/JsonSerializerDeserializer.java |   169 +
 .../ep/deserializer/JsonEntityDeserializer.java |   218 +
 .../ep/deserializer/JsonEntryDeserializer.java  |   451 +
 .../JsonErrorDocumentDeserializer.java  |   278 +
 .../ep/deserializer/JsonFeedDeserializer.java   |   255 +
 .../deserializer/JsonPropertyDeserializer.java  |   326 +
 .../ep/deserializer/XmlEntityDeserializer.java  |   190 +
 .../ep/deserializer/XmlEntryDeserializer.java   |   596 +
 .../XmlErrorDocumentDeserializer.java   |   184 +
 .../ep/deserializer/XmlFeedDeserializer.java|   226 +
 .../deserializer/XmlMetadataDeserializer.java   |  1570 +++
 .../deserializer/XmlPropertyDeserializer.java   |   199 +
 

[15/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
new file mode 100644
index 000..ac8d934
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
@@ -0,0 +1,539 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TimeZone;
+
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
+import org.apache.olingo.odata2.api.ep.entry.MediaMetadata;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+/**
+ *  
+ */
+public class JsonEntryDeserializerTest extends AbstractDeserializerTest {
+
+  private static final String SIMPLE_ENTRY_BUILDING = "JsonBuilding.json";
+  private static final String SIMPLE_ENTRY_ROOM = "JsonRoom.json";
+  private static final String SIMPLE_ENTRY_EMPLOYEE = "JsonEmployee.json";
+  private static final String SIMPLE_ENTRY_TEAM = "JsonTeam.json";
+  private static final String INVALID_ENTRY_TEAM_DOUBLE_NAME_PROPERTY = 
"JsonInvalidTeamDoubleNameProperty.json";
+  private static final String SIMPLE_ENTRY_BUILDING_WITHOUT_D = 
"JsonBuildingWithoutD.json";
+
+  // Negative Test jsonStart
+  private static final String negativeJsonStart_1 = "{ \"abc\": {";
+  private static final String negativeJsonStart_2 = "{ \"d\": [a: 1, b: 2] }";
+
+  @Test
+  public void readContentOnlyEmployee() throws Exception {
+// prepare
+String content = readFile("JsonEmployeeContentOnly.json");
+EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+InputStream contentBody = createContentAsStream(content);
+EntityStream contentStream = new EntityStream();
+contentStream.setContent(contentBody);
+contentStream.setReadProperties(DeserializerProperties.init().build());
+
+// execute
+JsonEntityDeserializer xec = new JsonEntityDeserializer();
+ODataEntry result =
+xec.readEntry(entitySet, contentStream);
+
+// verify
+assertEquals(9, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyRoom() throws Exception {
+// prepare
+String content = readFile("JsonRoomContentOnly.json");
+EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+InputStream contentBody = createContentAsStream(content);
+EntityStream entityStream = new EntityStream();
+entityStream.setContent(contentBody);
+entityStream.setReadProperties(DeserializerProperties.init().build());
+
+// execute
+JsonEntityDeserializer xec = new JsonEntityDeserializer();
+ODataEntry result =
+xec.readEntry(entitySet, entityStream);
+
+// verify

[18/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
new file mode 100644
index 000..53370bc
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
@@ -0,0 +1,199 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityTypeMapping;
+import org.apache.olingo.odata2.core.ep.util.FormatXml;
+
+/**
+ * XML property consumer.
+ */
+public class XmlPropertyDeserializer {
+
+  protected static final String TRUE = "true";
+  protected static final String FALSE = "false";
+
+  /**
+   * Read property of every entry in a payload
+   * @param reader
+   * @param property
+   * @param readProperties
+   * @return Map
+   * @throws EntityProviderException
+   */
+  public Map readProperty(final XMLStreamReader reader, final 
EdmProperty property,
+  final DeserializerProperties readProperties) throws 
EntityProviderException {
+return readProperty(reader, EntityInfoAggregator.create(property), 
readProperties);
+  }
+
+  /**
+   * Read property of every entry in a payload
+   * @param reader
+   * @param propertyInfo
+   * @param readProperties
+   * @return Map
+   * @throws EntityProviderException
+   */
+  public Map readProperty(final XMLStreamReader reader, final 
EntityPropertyInfo propertyInfo,
+  final DeserializerProperties readProperties) throws 
EntityProviderException {
+final EntityTypeMapping typeMappings =
+EntityTypeMapping.create(readProperties  == null ? 
Collections. emptyMap() :
+  readProperties.getTypeMappings());
+try {
+  reader.next();
+
+  Object value = readStartedElement(reader, propertyInfo.getName(), 
propertyInfo, typeMappings, readProperties);
+
+  Map result = new HashMap();
+  result.put(propertyInfo.getName(), value);
+  return result;
+} catch (XMLStreamException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  .getSimpleName()), e);
+} catch (EdmException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  .getSimpleName()), e);
+}
+  }
+
+
+  /**
+   * Deserializes a collection of entities
+   * @param reader
+   * @param info
+   * @param properties
+   * @return List
+   * @throws EntityProviderException
+   */
+  public List 

[13/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
new file mode 100644
index 000..caf05da
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
@@ -0,0 +1,2461 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.olingo.odata2.api.commons.HttpContentType;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
+import org.apache.olingo.odata2.api.ep.entry.MediaMetadata;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.FeedMetadata;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.exception.MessageReference;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import 
org.apache.olingo.odata2.client.api.ep.callback.OnDeserializeInlineContent;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ *  
+ */
+public class XmlEntityDeserializerTest extends AbstractXmlDeserializerTest {
+
+  public XmlEntityDeserializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private static final Logger LOG = 
Logger.getLogger(XmlEntityDeserializerTest.class.getName());
+  static {
+LOG.setLevel(Level.OFF);
+  }
+
+  public static final String EMPLOYEE_1_XML =
+  ""
+  +
+  "http://www.w3.org/2005/Atom\; " +
+  
"xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\; " +
+  "xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\; 
xml:base=\"http://localhost:19000/\;  " +
+  "m:etag=\"W/1\">"
+  +
+  "  http://localhost:19000/Employees('1')"
+  +
+  "  Walter Winter"
+  +
+  "  1999-01-01T00:00:00Z"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\"/>"
+  +
+  "  "
+  +
+  "  "
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room\; 
" +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Room\"/>"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager\;
 " +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Manager\"/>"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team\; 
" +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Team\"/>"
+  +
+  "  " +
+  "  " +
+  "1" 

[01/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 91bd4b897 -> 4261deb7f


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
new file mode 100644
index 000..78c187e
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
@@ -0,0 +1,40 @@
+
+
+http://www.w3.org/2005/Atom; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata;
+xmlns:at="http://purl.org/atompub/tombstones/1.0; 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices;
+
xml:base="https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/;>
+
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Rooms
+Rooms
+2014-01-21T09:15:52.473Z
+
+
+
+
+
+http://host:123/odata/Rooms('1')
+Room 1
+2014-01-21T09:15:52.474Z
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Employees;
+title="nr_Employees" type="application/atom+xml;type=feed" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building;
+title="nr_Building" type="application/atom+xml;type=entry" />
+
+
+1
+Room 1
+1
+1
+
+
+
+http://host:123/odata/Rooms('2')" 
when="2014-01-14T18:11:06.682+01:00" />
+http://host:123/odata/Rooms?$skiptoken=97; rel="delta" />
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
new file mode 100644
index 000..bb73341
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
@@ -0,0 +1,69 @@
+
+
+http://www.w3.org/2005/Atom;
+   xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata;
+   xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices;
+   xmlns:at="http://purl.org/atompub/tombstones/1.0;
+   xml:base="http://some.host.com/service.root/ReferenceScenario.svc/;>
+   
http://some.host.com/service.root/ReferenceScenario.svc/Employees
+   Employees
+   2013-04-23T11:46:14.926Z
+   
+   
+   
+   
+   
+   
http://some.host.com/service.root/ReferenceScenario.svc/Employees('1')
+   Walter Winter
+   1999-01-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager;
+   title="ne_Manager" type="application/atom+xml; 
type=entry" />
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team;
+   title="ne_Team" type="application/atom+xml; type=entry" 
/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room;
+   title="ne_Room" type="application/atom+xml; type=entry" 
/>
+   
+   
+   1
+   Walter Winter
+   1
+   1
+   1
+   
+   
+   69124
+   Heidelberg
+   
+   Germany
+   
+   52
+   1999-01-01T00:00:00
+   Employees('1')/$value
+   
+   
+   http://thisisadeltalink; rel="delta"/>
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml 
b/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
new file mode 100644
index 000..a718bf5
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
@@ -0,0 +1,53 @@
+
+http://schemas.microsoft.com/ado/2007/06/edmx; 

[04/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-09 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
new file mode 100644
index 000..979e39a
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
@@ -0,0 +1,79 @@
+{
+  "d": {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')",
+  "type": "RefScenario.Room",
+  "etag": "W/\"1\""
+},
+"Id": "1",
+"Name": "Room 1",
+"Seats": 1,
+"Version": 1,
+"nr_Employees": {
+  "results": [
+{
+  "__metadata": {
+"id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')",
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')",
+"type": "RefScenario.Employee",
+"content_type": "image/jpeg",
+"media_src": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/$value",
+"edit_media": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/$value"
+  },
+  "EmployeeId": "1",
+  "EmployeeName": "Walter Winter",
+  "ManagerId": "1",
+  "RoomId": "1",
+  "TeamId": "1",
+  "Location": {
+"__metadata": {
+  "type": "RefScenario.c_Location"
+},
+"City": {
+  "__metadata": {
+"type": "RefScenario.c_City"
+  },
+  "PostalCode": "69124",
+  "CityName": "Heidelberg"
+},
+"Country": "Germany"
+  },
+  "Age": 52,
+  "EntryDate": "/Date(91514880)/",
+  "ImageUrl": "Employees('1')/$value",
+  "ne_Manager": {
+"__deferred": {
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/ne_Manager"
+}
+  },
+  "ne_Team": {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')",
+  "type": "RefScenario.Team"
+},
+"Id": "1",
+"Name": "Team 1",
+"isScrumTeam": false,
+"nt_Employees": {
+  "__deferred": {
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')/nt_Employees"
+  }
+}
+  },
+  "ne_Room": {
+"__deferred": {
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/ne_Room"
+}
+  }
+}
+  ]
+},
+"nr_Building": {
+  "__deferred": {
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')/nr_Building"
+  }
+}
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/4261deb7/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
new file mode 100644
index 000..671dbb6
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
@@ -0,0 +1,118 @@
+{
+  "d": {
+"results": [
+  {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')",
+  "type": "RefScenario.Employee",
+  "content_type": "image/jpeg",
+  "media_src": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')/$value",
+  "edit_media": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')/$value"
+},
+"EmployeeId": "2",
+"EmployeeName": "Frederic Fall",
+"ManagerId": "1",
+"RoomId": "2",
+"TeamId": "1",
+"Location": {
+  "__metadata": {
+"type": "RefScenario.c_Location"
+  },
+  "City": {
+"__metadata": {
+  

olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-03 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/clientModule 9e949e406 -> 18e940174


[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/18e94017
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/18e94017
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/18e94017

Branch: refs/heads/clientModule
Commit: 18e94017491e8f758524cc7456220c847d70408b
Parents: 9e949e4
Author: Archana Rai 
Authored: Tue Apr 3 13:27:01 2018 +0530
Committer: Archana Rai 
Committed: Tue Apr 3 13:27:01 2018 +0530

--
 .../odata2/client/core/ODataClientImpl.java   | 18 --
 1 file changed, 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/18e94017/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
index 1a51999..a29b08b 100644
--- 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
@@ -168,24 +168,6 @@ public class ODataClientImpl extends ODataClient 
implements DeserializerMetadata
 }
   }
 
-  
-/**
- * Fetch Query parameters 
- * @param uri
- * @return
- */
-  private Map getQueryParametersWithStrictFilter(String uri) {
-Map queryParameters = new HashMap();
-for (final String option : uri.split(AMP)) {
-  final String[] keyAndValue = option.split(EQUAL);
-  if (keyAndValue.length == 2) {
-queryParameters.put(keyAndValue[0], keyAndValue[1]);
-  } else {
-queryParameters.put(keyAndValue[0], "");
-  }
-}
-return queryParameters;
-  }
 
 @Override
   public EdmURIBuilder edmUriBuilder(String serviceRoot) {



[11/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
new file mode 100644
index 000..daf7a5c
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
@@ -0,0 +1,1904 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmAction;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationElement;
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmAssociation;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSet;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmContentKind;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.edm.ClientEdm;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.edm.EdmSchema;
+import org.apache.olingo.odata2.client.api.edm.EdmUsing;
+import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.EdmTestProvider;
+import org.junit.Test;
+
+public class XmlMetadataDeserializerTest extends AbstractXmlDeserializerTest {
+
+  public XmlMetadataDeserializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private static final String DEFAULT_VALUE = "Photo";
+  private static final String FC_TARGET_PATH = "Содержание";
+  private static final String FC_NS_URI = "http://localhost;;
+  private static final String FC_NS_PREFIX = "ру";
+  private static final Boolean FC_KEEP_IN_CONTENT = Boolean.FALSE;
+  private static final String NAMESPACE = "RefScenario";
+  private static final String NAMESPACE2 = "RefScenario2";
+  private static final String NAMESPACE3 = "RefScenario3";
+  private static final String MIME_TYPE = "image/jpeg";
+  private static final String ASSOCIATION = "ManagerEmployees";
+  private static final int MAX_LENGTH = 4;
+
+  private final String[] 

[19/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
new file mode 100644
index 000..73d62c1
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
@@ -0,0 +1,1570 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmAction;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute;
+import org.apache.olingo.odata2.api.edm.EdmAnnotationElement;
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmAssociation;
+import org.apache.olingo.odata2.api.edm.EdmAssociationEnd;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSet;
+import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmContentKind;
+import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmReferentialConstraint;
+import org.apache.olingo.odata2.api.edm.EdmReferentialConstraintRole;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.edm.FullQualifiedName;
+import org.apache.olingo.odata2.api.edm.provider.Facets;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.edm.EdmSchema;
+import org.apache.olingo.odata2.client.api.edm.EdmUsing;
+import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd;
+import 
org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationAttributeImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationElementImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAnnotationsImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationEndImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationSetEndImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmAssociationSetImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmComplexPropertyImpl;
+import org.apache.olingo.odata2.client.core.edm.Impl.EdmComplexTypeImpl;
+import 

[16/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
new file mode 100644
index 000..9615caa
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/ProducerConsumerIntegrationTest.java
@@ -0,0 +1,811 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.batch.BatchResponsePart;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
+import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import org.apache.olingo.odata2.core.batch.v2.BatchLineReader;
+import org.apache.olingo.odata2.core.batch.v2.BatchParser;
+import org.apache.olingo.odata2.core.batch.v2.Line;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+public class ProducerConsumerIntegrationTest {
+  protected static final URI BASE_URI;
+  private static final String PUT = "PUT";
+  private static final String BOUNDARY = "batch_123";
+  private static final Object CRLF = "\r\n";
+
+  static {
+try {
+  BASE_URI = new URI("http://host:80/service/;);
+} catch (URISyntaxException e) {
+  throw new RuntimeException(e);
+}
+  }
+  private static final DeserializerProperties DEFAULT_READ_PROPERTIES 
+  = DeserializerProperties.init()
+  .build();
+  private static final EntitySerializerProperties DEFAULT_WRITE_PROPERTIES 
+  = EntitySerializerProperties
+  .serviceRoot(
+  BASE_URI).build();
+  private static final String XML = "application/xml";
+  private static final String JSON = "application/json";
+
+  @Test
+  public void produceRoomAndThenConsumeIt() throws Exception {
+EdmEntitySet roomSet = MockFacade.getMockEdm()
+.getDefaultEntityContainer().getEntitySet("Rooms");
+Entity localRoomData = new Entity();
+localRoomData.addProperty("Id", "1");
+localRoomData.addProperty("Name", "Neu \n Schwanstein蝴蝶");
+
+Map

[17/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
new file mode 100644
index 000..567d3bc
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/uri/EdmURIBuilderImpl.java
@@ -0,0 +1,491 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.client.api.uri.EdmURIBuilder;
+import org.apache.olingo.odata2.client.api.uri.QueryOption;
+import org.apache.olingo.odata2.client.api.uri.SegmentType;
+import org.apache.olingo.odata2.client.core.uri.util.UriUtil;
+import org.apache.olingo.odata2.core.commons.Encoder;
+
+/**
+ * This is a builder class that constructs URI with edm validations
+ *
+ */
+public class EdmURIBuilderImpl implements EdmURIBuilder{
+  protected final List segments = new ArrayList();
+  private SegmentType state = SegmentType.INITIAL;
+  
+  /**
+   * Insertion-order map of query options.
+   */
+  protected final Map queryOptions = new LinkedHashMap();
+  
+  /**
+   * Insertion-order map of custom query options.
+   */
+  protected final Map customQueryOptions = new 
LinkedHashMap();
+  
+  /**
+   * Insertion-order map of function import parameters.
+   */
+  protected final Map functionImportParameters = new 
LinkedHashMap();
+  
+  /**
+   * Constructor.
+   *
+   * @param serviceRoot absolute URL (schema, host and port included) 
representing the location of the root of the data
+   * service.
+   */
+  public EdmURIBuilderImpl(final String serviceRoot) {
+state = SegmentType.INITIAL;
+segments.add(new Segment(SegmentType.INITIAL, serviceRoot));
+  }
+  
+  @Override
+  public EdmURIBuilder appendCountSegment() {
+switch (state) {
+case INITIAL:
+case SIMPLEPROPERTY:
+case COMPLEXPROPERTY:
+case NAVIGATION_TO_ONE:
+case NAVIGATION_TO_MANY_WITH_KEY:
+case FUNCTIONIMPORT_WITH_KEY:
+case ENTITY:
+throw new RuntimeException("Can't specify a key at this 
position");//NOSONAR
+case ENTITYSET:
+appendCount();
+break;
+case NAVIGATION_TO_MANY:
+appendCount();
+break;
+case FUNCTIONIMPORT_MANY:
+  appendCount();
+  break;
+default:
+throw new RuntimeException("Unkown state:" + state);//NOSONAR
+}
+return this;
+  }
+
+  private void appendCount() {
+segments.add(new Segment(SegmentType.COUNT, SegmentType.COUNT.getValue()));
+state = SegmentType.COUNT;
+  }
+
+  @Override
+  public EdmURIBuilder appendValueSegment() {
+switch (state) {
+case INITIAL:
+case COMPLEXPROPERTY:
+case ENTITYSET:
+case NAVIGATION_TO_MANY:
+case ENTITY:
+case NAVIGATION_TO_MANY_WITH_KEY:
+case NAVIGATION_TO_ONE:
+throw new RuntimeException("Can't specify a navigation at this 
position");//NOSONAR
+case SIMPLEPROPERTY:
+  addValueSegment();
+  break;
+default:
+throw new RuntimeException("Unkown state:" + state);//NOSONAR
+}
+return this;
+  }
+  
+  private void addValueSegment() {
+segments.add(new Segment(SegmentType.VALUE, SegmentType.VALUE.getValue()));
+  }
+
+  @Override
+  public EdmURIBuilder appendMetadataSegment() {
+segments.add(new Segment(SegmentType.METADATA, 
SegmentType.METADATA.getValue()));
+return this;
+  }
+
+  @Override
+  public EdmURIBuilder format(String format) { //NOSONAR
+switch (state) {
+case INITIAL:
+case COUNT:
+case VALUE:
+  throw new RuntimeException("Can't specify a format at this 
position");//NOSONAR
+case NAVIGATION_TO_ONE:
+case SIMPLEPROPERTY:
+case COMPLEXPROPERTY:
+case ENTITYSET:
+case NAVIGATION_TO_MANY:
+case ENTITY:
+case NAVIGATION_TO_MANY_WITH_KEY:
+

[12/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
new file mode 100644
index 000..2a255f1
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlErrorDocumentTest.java
@@ -0,0 +1,281 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.util.Locale;
+
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataErrorContext;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.XmlErrorDocumentDeserializer;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class XmlErrorDocumentTest extends AbstractDeserializerTest {
+
+  private static final String XML_ERROR_DOCUMENT_SIMPLE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_NULL_LOCALE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INNER_ERROR =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "Some InnerError\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INNER_ERROR_COMPLEX =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "" +
+  "More Inner Error" +
+  "\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_INVALID_XML =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  /* error document with name 'locale' instead of 'lang' for message object */
+  private static final String XML_ERROR_DOCUMENT_UNKNOWN_CONTENT =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "\tSecret\n" +
+  "";
+  /* error document without value for message object */
+  private static final String XML_ERROR_DOCUMENT_EMPTY_MESSAGE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\t\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_MESSAGE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_CODE =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tMessage\n" +
+  "";
+  private static final String XML_ERROR_DOCUMENT_MISSING_ERROR =
+  "\n" +
+  "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\;>\n" +
+  "\tErrorCode\n" +
+  "\tMessage\n" +
+  "";
+  private XmlErrorDocumentDeserializer xedc = new 

[24/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
[OLINGO-1253]Client Module for Olingo v2


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9e949e40
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9e949e40
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9e949e40

Branch: refs/heads/clientModule
Commit: 9e949e40605f1528560e3bc9f1646b6686046005
Parents: 91bd4b8
Author: Archana Rai 
Authored: Mon Apr 2 17:01:26 2018 +0530
Committer: Archana Rai 
Committed: Mon Apr 2 17:01:26 2018 +0530

--
 .../olingo/odata2/api/edm/EdmException.java | 5 +
 .../odata2/api/ep/EntityProviderException.java  | 9 +-
 odata2-lib/odata-client-api/pom.xml |71 +
 .../olingo/odata2/client/api/ODataClient.java   |   119 +
 .../olingo/odata2/client/api/edm/ClientEdm.java |41 +
 .../odata2/client/api/edm/EdmDataServices.java  |85 +
 .../odata2/client/api/edm/EdmDocumentation.java |58 +
 .../olingo/odata2/client/api/edm/EdmSchema.java |81 +
 .../olingo/odata2/client/api/edm/EdmUsing.java  |57 +
 .../api/ep/ContentTypeBasedDeserializer.java|91 +
 .../api/ep/ContentTypeBasedSerializer.java  |63 +
 .../DeserializerMetadataProviderInterface.java  |30 +
 .../client/api/ep/DeserializerProperties.java   |   170 +
 .../olingo/odata2/client/api/ep/Entity.java |97 +
 .../odata2/client/api/ep/EntityCollection.java  |79 +
 .../EntityCollectionSerializerProperties.java   |   119 +
 .../api/ep/EntitySerializerProperties.java  |   159 +
 .../odata2/client/api/ep/EntityStream.java  |55 +
 .../ep/callback/OnDeserializeInlineContent.java |47 +
 .../odata2/client/api/uri/EdmURIBuilder.java|   184 +
 .../odata2/client/api/uri/QueryOption.java  |70 +
 .../odata2/client/api/uri/SegmentType.java  |76 +
 .../odata2/client/api/uri/URIBuilder.java   |   174 +
 odata2-lib/odata-client-core/pom.xml|90 +
 .../odata2/client/core/ODataClientImpl.java |   199 +
 .../core/edm/EdmMetadataAssociationEnd.java |38 +
 .../odata2/client/core/edm/EdmOnDelete.java |52 +
 .../edm/Impl/EdmAnnotationAttributeImpl.java|99 +
 .../core/edm/Impl/EdmAnnotationElementImpl.java |93 +
 .../core/edm/Impl/EdmAnnotationsImpl.java   |82 +
 .../core/edm/Impl/EdmAssociationEndImpl.java|   106 +
 .../core/edm/Impl/EdmAssociationImpl.java   |   149 +
 .../core/edm/Impl/EdmAssociationSetEndImpl.java |92 +
 .../core/edm/Impl/EdmAssociationSetImpl.java|   137 +
 .../core/edm/Impl/EdmComplexPropertyImpl.java   |56 +
 .../core/edm/Impl/EdmComplexTypeImpl.java   |75 +
 .../Impl/EdmCustomizableFeedMappingsImpl.java   |   140 +
 .../core/edm/Impl/EdmDocumentationImpl.java |   110 +
 .../client/core/edm/Impl/EdmElementImpl.java|55 +
 .../core/edm/Impl/EdmEntityContainerImpl.java   |   222 +
 .../client/core/edm/Impl/EdmEntitySetImpl.java  |   136 +
 .../client/core/edm/Impl/EdmEntityTypeImpl.java |   133 +
 .../core/edm/Impl/EdmFunctionImportImpl.java|   179 +
 .../edm/Impl/EdmFunctionImportParameter.java|   140 +
 .../odata2/client/core/edm/Impl/EdmImpl.java|   207 +
 .../odata2/client/core/edm/Impl/EdmKeyImpl.java |   101 +
 .../client/core/edm/Impl/EdmMappingImpl.java|99 +
 .../client/core/edm/Impl/EdmNamedImpl.java  |82 +
 .../edm/Impl/EdmNavigationPropertyImpl.java |   119 +
 .../client/core/edm/Impl/EdmOnDeleteImpl.java   |   112 +
 .../client/core/edm/Impl/EdmParameterImpl.java  |71 +
 .../client/core/edm/Impl/EdmPropertyImpl.java   |91 +
 .../core/edm/Impl/EdmPropertyRefImpl.java   |47 +
 .../edm/Impl/EdmReferentialConstraintImpl.java  |72 +
 .../Impl/EdmReferentialConstraintRoleImpl.java  |98 +
 .../client/core/edm/Impl/EdmSchemaImpl.java |   205 +
 .../core/edm/Impl/EdmSimplePropertyImpl.java|62 +
 .../core/edm/Impl/EdmStructuralTypeImpl.java|   154 +
 .../client/core/edm/Impl/EdmTypedImpl.java  |84 +
 .../client/core/edm/Impl/EdmUsingImpl.java  |   129 +
 .../core/ep/AtomSerializerDeserializer.java |   211 +
 .../core/ep/JsonSerializerDeserializer.java |   169 +
 .../ep/deserializer/JsonEntityDeserializer.java |   218 +
 .../ep/deserializer/JsonEntryDeserializer.java  |   451 +
 .../JsonErrorDocumentDeserializer.java  |   278 +
 .../ep/deserializer/JsonFeedDeserializer.java   |   255 +
 .../deserializer/JsonPropertyDeserializer.java  |   326 +
 .../ep/deserializer/XmlEntityDeserializer.java  |   190 +
 .../ep/deserializer/XmlEntryDeserializer.java   |   596 +
 .../XmlErrorDocumentDeserializer.java   |   184 +
 .../ep/deserializer/XmlFeedDeserializer.java|   226 +
 .../deserializer/XmlMetadataDeserializer.java   |  1570 +++
 .../deserializer/XmlPropertyDeserializer.java   |   199 +
 

[18/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
new file mode 100644
index 000..53370bc
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlPropertyDeserializer.java
@@ -0,0 +1,199 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityTypeMapping;
+import org.apache.olingo.odata2.core.ep.util.FormatXml;
+
+/**
+ * XML property consumer.
+ */
+public class XmlPropertyDeserializer {
+
+  protected static final String TRUE = "true";
+  protected static final String FALSE = "false";
+
+  /**
+   * Read property of every entry in a payload
+   * @param reader
+   * @param property
+   * @param readProperties
+   * @return Map
+   * @throws EntityProviderException
+   */
+  public Map readProperty(final XMLStreamReader reader, final 
EdmProperty property,
+  final DeserializerProperties readProperties) throws 
EntityProviderException {
+return readProperty(reader, EntityInfoAggregator.create(property), 
readProperties);
+  }
+
+  /**
+   * Read property of every entry in a payload
+   * @param reader
+   * @param propertyInfo
+   * @param readProperties
+   * @return Map
+   * @throws EntityProviderException
+   */
+  public Map readProperty(final XMLStreamReader reader, final 
EntityPropertyInfo propertyInfo,
+  final DeserializerProperties readProperties) throws 
EntityProviderException {
+final EntityTypeMapping typeMappings =
+EntityTypeMapping.create(readProperties  == null ? 
Collections. emptyMap() :
+  readProperties.getTypeMappings());
+try {
+  reader.next();
+
+  Object value = readStartedElement(reader, propertyInfo.getName(), 
propertyInfo, typeMappings, readProperties);
+
+  Map result = new HashMap();
+  result.put(propertyInfo.getName(), value);
+  return result;
+} catch (XMLStreamException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  .getSimpleName()), e);
+} catch (EdmException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  .getSimpleName()), e);
+}
+  }
+
+
+  /**
+   * Deserializes a collection of entities
+   * @param reader
+   * @param info
+   * @param properties
+   * @return List
+   * @throws EntityProviderException
+   */
+  public List 

[21/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
new file mode 100644
index 000..aaba634
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/JsonSerializerDeserializer.java
@@ -0,0 +1,169 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep;
+
+import java.io.BufferedWriter;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.util.List;
+
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.batch.BatchResponsePart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.processor.ODataErrorContext;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedDeserializer;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedSerializer;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.JsonEntityDeserializer;
+import 
org.apache.olingo.odata2.client.core.ep.serializer.JsonEntryEntitySerializer;
+import 
org.apache.olingo.odata2.client.core.ep.serializer.JsonFeedEntitySerializer;
+import org.apache.olingo.odata2.core.batch.BatchRequestWriter;
+import org.apache.olingo.odata2.core.batch.BatchResponseWriter;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.consumer.JsonErrorDocumentConsumer;
+import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
+
+/**
+ *  This class includes methods to serialize deserialize JSON Content type
+ */
+public class JsonSerializerDeserializer implements ContentTypeBasedSerializer, 
ContentTypeBasedDeserializer {
+
+  private static final String DEFAULT_CHARSET = "UTF-8";
+
+  @Override
+  public ODataResponse writeEntry(EdmEntitySet entitySet, Entity data) 
+  throws EntityProviderException {
+
+final EntitySerializerProperties properties = data == null ? 
+EntitySerializerProperties.serviceRoot(null).build() : 
data.getWriteProperties() == null ? 
+EntitySerializerProperties.serviceRoot(null).build() : 
data.getWriteProperties();
+final EntityInfoAggregator entityInfo = 
EntityInfoAggregator.create(entitySet, null);
+CircleStreamBuffer buffer = new CircleStreamBuffer();
+
+try {
+  BufferedWriter writer = new BufferedWriter(new 
OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
+  JsonEntryEntitySerializer producer = new 
JsonEntryEntitySerializer(properties);
+  producer.append(writer, entityInfo, data);
+  writer.flush();
+  buffer.closeWrite();
+
+ 

[15/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
new file mode 100644
index 000..ac8d934
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonEntryDeserializerTest.java
@@ -0,0 +1,539 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TimeZone;
+
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
+import org.apache.olingo.odata2.api.ep.entry.MediaMetadata;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+/**
+ *  
+ */
+public class JsonEntryDeserializerTest extends AbstractDeserializerTest {
+
+  private static final String SIMPLE_ENTRY_BUILDING = "JsonBuilding.json";
+  private static final String SIMPLE_ENTRY_ROOM = "JsonRoom.json";
+  private static final String SIMPLE_ENTRY_EMPLOYEE = "JsonEmployee.json";
+  private static final String SIMPLE_ENTRY_TEAM = "JsonTeam.json";
+  private static final String INVALID_ENTRY_TEAM_DOUBLE_NAME_PROPERTY = 
"JsonInvalidTeamDoubleNameProperty.json";
+  private static final String SIMPLE_ENTRY_BUILDING_WITHOUT_D = 
"JsonBuildingWithoutD.json";
+
+  // Negative Test jsonStart
+  private static final String negativeJsonStart_1 = "{ \"abc\": {";
+  private static final String negativeJsonStart_2 = "{ \"d\": [a: 1, b: 2] }";
+
+  @Test
+  public void readContentOnlyEmployee() throws Exception {
+// prepare
+String content = readFile("JsonEmployeeContentOnly.json");
+EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+InputStream contentBody = createContentAsStream(content);
+EntityStream contentStream = new EntityStream();
+contentStream.setContent(contentBody);
+contentStream.setReadProperties(DeserializerProperties.init().build());
+
+// execute
+JsonEntityDeserializer xec = new JsonEntityDeserializer();
+ODataEntry result =
+xec.readEntry(entitySet, contentStream);
+
+// verify
+assertEquals(9, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyRoom() throws Exception {
+// prepare
+String content = readFile("JsonRoomContentOnly.json");
+EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+InputStream contentBody = createContentAsStream(content);
+EntityStream entityStream = new EntityStream();
+entityStream.setContent(contentBody);
+entityStream.setReadProperties(DeserializerProperties.init().build());
+
+// execute
+JsonEntityDeserializer xec = new JsonEntityDeserializer();
+ODataEntry result =
+xec.readEntry(entitySet, entityStream);
+
+// verify

[14/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
new file mode 100644
index 000..3a89af0
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/JsonPropertyDeserializerTest.java
@@ -0,0 +1,834 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.gson.stream.JsonReader;
+
+/**
+ *  
+ */
+public class JsonPropertyDeserializerTest extends BaseTest {
+  
+  @Rule
+  public ExpectedException expectedEx = ExpectedException.none();
+  
+  @Test
+  public void booleanSimpleProperty() throws Exception {
+EdmProperty property = mock(EdmProperty.class);
+when(property.getName()).thenReturn("Boolean");
+when(property.isSimple()).thenReturn(true);
+
when(property.getType()).thenReturn(EdmSimpleTypeKind.Boolean.getEdmSimpleTypeInstance());
+
+JsonReader reader = prepareReader("{\"Boolean\":true}");
+final Map resultMap = execute(property, reader);
+assertEquals(Boolean.TRUE, resultMap.get("Boolean"));
+  }
+
+  @Test
+  public void allNumberSimplePropertyKinds() throws Exception {
+String simplePropertyJson = "{\"d\":{\"Age\":67}}";
+EdmProperty edmProperty = mock(EdmProperty.class);
+when(edmProperty.getName()).thenReturn("Age");
+when(edmProperty.isSimple()).thenReturn(true);
+
+// Byte
+JsonReader reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.Byte.getEdmSimpleTypeInstance());
+Map resultMap = execute(edmProperty, reader);
+assertEquals(Short.valueOf("67"), resultMap.get("Age"));
+
+// SByte
+reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.SByte.getEdmSimpleTypeInstance());
+resultMap = execute(edmProperty, reader);
+assertEquals(Byte.valueOf("67"), resultMap.get("Age"));
+// Int16
+reader = prepareReader(simplePropertyJson);
+
when(edmProperty.getType()).thenReturn(EdmSimpleTypeKind.Int16.getEdmSimpleTypeInstance());
+resultMap = execute(edmProperty, reader);
+

[20/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
new file mode 100644
index 000..06bae41
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntryDeserializer.java
@@ -0,0 +1,596 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.exception.ODataApplicationException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import 
org.apache.olingo.odata2.client.api.ep.callback.OnDeserializeInlineContent;
+import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityTypeMapping;
+import org.apache.olingo.odata2.core.ep.entry.EntryMetadataImpl;
+import org.apache.olingo.odata2.core.ep.entry.MediaMetadataImpl;
+import org.apache.olingo.odata2.core.ep.entry.ODataEntryImpl;
+import org.apache.olingo.odata2.core.ep.feed.FeedMetadataImpl;
+import org.apache.olingo.odata2.core.ep.feed.ODataDeltaFeedImpl;
+import org.apache.olingo.odata2.core.ep.util.FormatXml;
+
+/**
+ * Atom/XML format reader/consumer for entries.
+ * 
+ * {@link XmlEntryDeserializer} instance can be reused for several
+ * {@link #readEntry(XMLStreamReader, EntityInfoAggregator, 
EntityProviderReadProperties)} calls
+ * but be aware that the instance and their readEntry* methods 
are NOT THREAD SAFE.
+ * 
+ */
+public class XmlEntryDeserializer {
+
+  private ODataEntryImpl readEntryResult;
+  private Map properties;
+  private MediaMetadataImpl mediaMetadata;
+  private EntryMetadataImpl entryMetadata;
+  private EntityTypeMapping typeMappings;
+  private String currentHandledStartTagName;
+
+  /**
+   * Deserializes payload entry
+   * @param reader
+   * @param eia
+   * @param readProperties
+   * @param isInline
+   * @return ODataEntry
+   * @throws EntityProviderException
+   */
+  public ODataEntry readEntry(final XMLStreamReader reader, final 
EntityInfoAggregator eia,
+  final DeserializerProperties readProperties, final boolean isInline) 
throws EntityProviderException {
+try {
+  initialize(readProperties);
+
+  if (isInline) {
+setETag(reader);
+  }
+
+  while (reader.hasNext() && !isEntryEndTag(reader)) {
+reader.nextTag();
+if (reader.isStartElement()) {
+  handleStartedTag(reader, eia, readProperties);
+}
+  }
+
+  return readEntryResult;
+} catch (XMLStreamException e) {
+  throw new 
EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+  

[07/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
new file mode 100644
index 000..23f3310
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonFeedEntitySerializerTest.java
@@ -0,0 +1,919 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.JsonSerializerDeserializer;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+/**
+ *  
+ */
+public class JsonFeedEntitySerializerTest extends BaseTest { 
+  protected static final String BASE_URI = "http://host:80/service/;;
+  protected static final EntitySerializerProperties DEFAULT_PROPERTIES =
+  EntitySerializerProperties.serviceRoot(URI.create(BASE_URI)).build();
+  protected static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+
+  @Test
+  public void unbalancedPropertyEntryWithInlineFeed() throws Exception {
+Edm edm = MockFacade.getMockEdm();
+EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", 
"Employee").getProperty("ImageUrl");
+EdmFacets facets = mock(EdmFacets.class);
+when(facets.getMaxLength()).thenReturn(1);
+when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+Entity roomData = new Entity();
+roomData.addProperty("Id", "1");
+roomData.addProperty("Name", "Neu Schwanstein");
+roomData.addProperty("Seats", new Integer(20));
+
+
roomData.setWriteProperties(EntitySerializerProperties.serviceRoot(URI.create(BASE_URI))
+.build());
+EntityCollection innerData = new EntityCollection();
+Entity data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("EmployeeName", "EmpName1");
+data.addProperty("RoomId", "1");
+data.setWriteProperties(DEFAULT_PROPERTIES);
+innerData.addEntity(data);
+
+data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("RoomId", "1");
+data.setWriteProperties(DEFAULT_PROPERTIES);
+innerData.addEntity(data);
+roomData.addNavigation("nr_Employees", innerData);
+
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Rooms");
+final ODataResponse response =
+new JsonSerializerDeserializer().writeEntry(entitySet, roomData);
+assertNotNull(response);
+

[06/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
new file mode 100644
index 000..4e4baf6
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/EdmUriBuilderTest.java
@@ -0,0 +1,988 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmComplexType;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata2.api.edm.EdmParameter;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.client.api.uri.QueryOption;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdmUriBuilderTest {
+  
+  protected static final String SERVICE_ROOT_URI = "http://host:80/service/;;
+  protected static final String SERVICE_ROOT_URI_1 = "http://host:80/service;;
+  private Edm edm;
+
+  @Before
+  public void getEdm() throws ODataException {
+edm = MockFacade.getMockEdm();
+  }
+  
+  @Test
+  public void testUriSimpleES() throws EdmException {
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Employees;, uri.toASCIIString());
+  }
+  
+  @Test
+  public void testSimpleESWithCountUri1() throws EdmException {
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+appendCountSegment().
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Employees/$count;, 
uri.toASCIIString());
+  }
+  
+  @Test(expected=RuntimeException.class)
+  public void negTestWithCountAndFormat() throws EdmException {
+new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+
appendEntitySetSegment(edm.getDefaultEntityContainer().getEntitySet("Employees")).
+appendCountSegment().
+format("application/json").
+build();
+  }
+  
+  @Test
+  public void testSimpleESWithCountUri2() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+appendCountSegment().
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Managers('1')/nm_Employees/$count", 
uri.toASCIIString());
+  }
+  
+  @Test
+  public void testSimpleESWithCountAndFilter() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+URI uri = new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+appendCountSegment().
+addQueryOption(QueryOption.FILTER, "TeamId eq '1'").
+build();
+assertNotNull(uri);
+assertEquals("http://host:80/service/Managers('1')/nm_Employees/"
++ "$count?$filter=TeamId%20eq%20'1'", uri.toASCIIString());
+  }
+  
+  @Test(expected=RuntimeException.class)
+  public void negTestUriWithCountSegment1() throws EdmException {
+EdmEntitySet entitySet = 
edm.getDefaultEntityContainer().getEntitySet("Managers");
+EdmEntitySet employeeEntitySet = 
edm.getDefaultEntityContainer().getEntitySet("Employees");
+new EdmURIBuilderImpl(SERVICE_ROOT_URI).
+appendEntitySetSegment(entitySet).
+
appendKeySegment((EdmProperty)entitySet.getEntityType().getProperty("EmployeeId"),
 "1").
+
appendNavigationSegment((EdmNavigationProperty)entitySet.getEntityType().getProperty("nm_Employees")).
+

[22/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
new file mode 100644
index 000..7a0ca1f
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportParameter.java
@@ -0,0 +1,140 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.edm.Impl;
+
+import org.apache.olingo.odata2.api.edm.EdmAnnotations;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.client.api.edm.EdmDocumentation;
+
+/**
+ * Objects of this class represent function import parameters
+ * 
+ */
+public class EdmFunctionImportParameter {
+
+  private String name;
+  private String mode;
+  private EdmSimpleTypeKind type;
+  private EdmFacets facets;
+  private EdmMapping mapping;
+  private EdmDocumentation documentation;
+  private EdmAnnotations annotations;
+
+  /**
+   * @return String name of the parameter
+   */
+  public String getName() {
+return name;
+  }
+
+  /**
+   * @return {@link EdmSimpleTypeKind} of this parameter
+   */
+  public EdmSimpleTypeKind getType() {
+return type;
+  }
+
+  /**
+   * @return {@link EdmFacets} of this parameter
+   */
+  public EdmFacets getFacets() {
+return facets;
+  }
+
+  /**
+   * @return {@link EdmMappingImpl} of this parameter
+   */
+  public EdmMapping getMapping() {
+return mapping;
+  }
+
+  /**
+   * Sets the name of this {@link EdmFunctionImportParameter}
+   * @param name
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setName(final String name) {
+this.name = name;
+return this;
+  }
+
+  /**
+   * Sets the mode of this {@link EdmFunctionImportParameter}
+   * @param mode
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setMode(final String mode) {
+this.mode = mode;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmSimpleTypeKind} of this {@link 
EdmFunctionImportParameter}
+   * @param type
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setType(final EdmSimpleTypeKind type) {
+this.type = type;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmFacets} of this {@link EdmFunctionImportParameter}
+   * @param facets
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setFacets(final EdmFacets facets) {
+this.facets = facets;
+return this;
+  }
+
+  /**
+   * Sets the {@link EdmMappingImpl} of this {@link EdmFunctionImportParameter}
+   * @param mapping
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setMapping(final EdmMapping mapping) {
+this.mapping = mapping;
+return this;
+  }
+
+  /**
+   * Sets the {@link Documentation} of this {@link EdmFunctionImportParameter}
+   * @param documentation
+   * @return {@link EdmFunctionImportParameter} for method chaining
+   */
+  public EdmFunctionImportParameter setDocumentation(final EdmDocumentation 
documentation) {
+this.documentation = documentation;
+return this;
+  }
+
+  public void setAnnotations(EdmAnnotationsImpl annotations) {
+this.annotations = annotations;
+  }
+  
+  public EdmAnnotations getAnnotations() {
+return this.annotations;
+  }  
+  @Override
+  public String toString() {
+  return 

[02/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
--
diff --git a/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml 
b/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
new file mode 100644
index 000..23a4eb0
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/ProductsFeed.xml
@@ -0,0 +1,474 @@
+
+http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/"
 xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata; 
xmlns="http://www.w3.org/2005/Atom;>
+  Products
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products/
+  2017-04-07T05:44:22Z
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(0)
+Bread
+Whole grain bread
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(0)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(0)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(1)
+  Tokyo Traders
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(1)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  1
+  Tokyo Traders
+  0
+  
+NE 40th
+Redmond
+WA
+98052
+USA
+  
+
+  
+
+  
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+  
+0
+1992-01-01T00:00:00
+
+4
+2.5
+  
+
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(1)
+Milk
+Low fat milk
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(1)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(1)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(0)
+  Exotic Liquids
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(0)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  0
+  Exotic Liquids
+  0
+  
+NE 228th
+Sammamish
+WA
+98074
+USA
+  
+
+  
+
+  
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+  
+1
+1995-10-01T00:00:00
+
+3
+3.5
+  
+
+  
+  
+
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Products(2)
+Vint soda
+Americana Variety - Mix of 6 flavors
+2017-04-07T05:44:22Z
+
+  
+
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category; 
type="application/atom+xml;type=entry" title="Category" 
href="Products(2)/Category" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier; 
type="application/atom+xml;type=entry" title="Supplier" 
href="Products(2)/Supplier">
+  
+
+  
http://services.odata.org/(S(tcjpjrwvrq5cbwf1yqulu1hc))/V2/OData/OData.svc/Suppliers(0)
+  Exotic Liquids
+  2017-04-07T05:44:22Z
+  
+
+  
+  
+  http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products; 
type="application/atom+xml;type=feed" title="Products" 
href="Suppliers(0)/Products" />
+  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+  
+
+  0
+  Exotic Liquids
+  0
+  
+NE 228th
+Sammamish
+WA
+98074
+   

[03/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml 
b/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
new file mode 100644
index 000..e9b58d9
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/LargeEmployeeFeed.xml
@@ -0,0 +1,12556 @@
+
+
+http://www.w3.org/2005/Atom; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata; 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices; 
xml:base="https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/;>
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees
+   Employees
+   2013-12-02T12:20:28.605Z
+   
+   
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('1')
+   Walter Winter
+   1999-01-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   1
+   Walter Winter
+   1
+   1
+   1
+   
+   
+   69124
+   Heidelberg
+   
+   Germany
+   
+   52
+   1999-01-01T00:00:00
+   Employees('1')/$value
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('2')
+   Frederic Fall
+   2003-07-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   2
+   Frederic Fall
+   1
+   2
+   1
+   
+   
+   69190
+   Walldorf
+   
+   Germany
+   
+   32
+   2003-07-01T00:00:00
+   Employees('2')/$value
+   
+   
+   
+   
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Employees('3')
+   Jonathan Smith
+   2013-12-02T12:20:28.622Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager; 
title="ne_Manager" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team; 
title="ne_Team" type="application/atom+xml;type=entry"/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room; 
title="ne_Room" type="application/atom+xml;type=entry"/>
+   
+   
+   3
+   Jonathan Smith
+   1
+   2
+   1
+   
+   
+   69190
+   Walldorf
+   
+   Germany
+   
+   56
+   
+   Employees('3')/$value
+   
+   
+   
+   

[04/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
new file mode 100644
index 000..979e39a
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoom_InlineEmployeesToTeam.json
@@ -0,0 +1,79 @@
+{
+  "d": {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')",
+  "type": "RefScenario.Room",
+  "etag": "W/\"1\""
+},
+"Id": "1",
+"Name": "Room 1",
+"Seats": 1,
+"Version": 1,
+"nr_Employees": {
+  "results": [
+{
+  "__metadata": {
+"id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')",
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')",
+"type": "RefScenario.Employee",
+"content_type": "image/jpeg",
+"media_src": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/$value",
+"edit_media": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/$value"
+  },
+  "EmployeeId": "1",
+  "EmployeeName": "Walter Winter",
+  "ManagerId": "1",
+  "RoomId": "1",
+  "TeamId": "1",
+  "Location": {
+"__metadata": {
+  "type": "RefScenario.c_Location"
+},
+"City": {
+  "__metadata": {
+"type": "RefScenario.c_City"
+  },
+  "PostalCode": "69124",
+  "CityName": "Heidelberg"
+},
+"Country": "Germany"
+  },
+  "Age": 52,
+  "EntryDate": "/Date(91514880)/",
+  "ImageUrl": "Employees('1')/$value",
+  "ne_Manager": {
+"__deferred": {
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/ne_Manager"
+}
+  },
+  "ne_Team": {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')",
+  "type": "RefScenario.Team"
+},
+"Id": "1",
+"Name": "Team 1",
+"isScrumTeam": false,
+"nt_Employees": {
+  "__deferred": {
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Teams('1')/nt_Employees"
+  }
+}
+  },
+  "ne_Room": {
+"__deferred": {
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('1')/ne_Room"
+}
+  }
+}
+  ]
+},
+"nr_Building": {
+  "__deferred": {
+"uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Rooms('1')/nr_Building"
+  }
+}
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
new file mode 100644
index 000..671dbb6
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/JsonRoomsToEmployeesWithInlineTeams.json
@@ -0,0 +1,118 @@
+{
+  "d": {
+"results": [
+  {
+"__metadata": {
+  "id": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')",
+  "uri": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')",
+  "type": "RefScenario.Employee",
+  "content_type": "image/jpeg",
+  "media_src": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')/$value",
+  "edit_media": 
"http://localhost:8080/olingo-odata2-ref-web/ReferenceScenario.svc/Employees('2')/$value"
+},
+"EmployeeId": "2",
+"EmployeeName": "Frederic Fall",
+"ManagerId": "1",
+"RoomId": "2",
+"TeamId": "1",
+"Location": {
+  "__metadata": {
+"type": "RefScenario.c_Location"
+  },
+  "City": {
+"__metadata": {
+  

[23/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/pom.xml
--
diff --git a/odata2-lib/odata-client-core/pom.xml 
b/odata2-lib/odata-client-core/pom.xml
new file mode 100644
index 000..e63401b
--- /dev/null
+++ b/odata2-lib/odata-client-core/pom.xml
@@ -0,0 +1,90 @@
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
+   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+   4.0.0
+
+   
+   org.apache.olingo
+   olingo-odata2-lib
+   2.0.11-SNAPSHOT
+   ..
+   
+
+   olingo-odata2-client-core
+   jar
+   ${project.artifactId}
+
+
+   
+ 
+  junit
+  junit
+  ${junit.version}
+  
+  
+   org.apache.olingo
+   olingo-odata2-client-api
+   ${project.version}
+
+   
+   org.apache.olingo
+   olingo-odata2-core
+   ${project.version}
+
+
+org.apache.olingo
+olingo-odata2-testutil
+${project.version}
+test
+
+
+xmlunit
+xmlunit
+test
+
+   
+ org.apache.httpcomponents
+ httpcore
+ ${httpcore.version}
+   
+   
+   
+   
+   
+   maven-jar-plugin
+   
+   
+   
${project.build.outputDirectory}/META-INF/MANIFEST.MF
+   
+   
+   
+   
+   org.apache.felix
+   maven-bundle-plugin
+   true
+   
+   
+   bundle-manifest
+   process-classes
+   
+   manifest
+   
+   
+   
+   
+   
+   
+   *
+   
+   
+   
+   
${project.url}
+   
lazy
+   
${project.artifactId}
+   
+   
+   
+   
+   
+
+
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
--
diff --git 
a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
new file mode 100644
index 000..1a51999
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java
@@ -0,0 +1,199 @@
+package org.apache.olingo.odata2.client.core;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.ODataNotAcceptableException;
+import org.apache.olingo.odata2.api.uri.PathSegment;
+import org.apache.olingo.odata2.api.uri.UriInfo;
+import org.apache.olingo.odata2.api.uri.UriNotMatchingException;
+import org.apache.olingo.odata2.api.uri.UriSyntaxException;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedDeserializer;
+import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedSerializer;
+import 
org.apache.olingo.odata2.client.api.ep.DeserializerMetadataProviderInterface;
+import 

[10/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
new file mode 100644
index 000..74cab47
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
@@ -0,0 +1,1814 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathNotExists;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TimeZone;
+
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmTargetPath;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.edm.ClientEdm;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.AbstractProviderTest;
+import org.apache.olingo.odata2.client.core.ep.AtomSerializerDeserializer;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer;
+import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.helper.XMLUnitHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.custommonkey.xmlunit.SimpleNamespaceContext;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.custommonkey.xmlunit.exceptions.XpathException;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.xml.sax.SAXException;
+
+import junit.framework.Assert;
+
+public class AtomEntrySerializerTest extends AbstractProviderTest {
+
+  @Rule
+  public ExpectedException expectedEx = ExpectedException.none();
+
+  private String buildingXPathString = 
"/a:entry/a:link[@href=\"Rooms('1')/nr_Building\" and @title='nr_Building']";  
+

[09/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
new file mode 100644
index 000..8ceead5
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomFeedSerializerTest.java
@@ -0,0 +1,1033 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathNotExists;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import 
org.apache.olingo.odata2.client.api.ep.EntityCollectionSerializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.AbstractProviderTest;
+import org.apache.olingo.odata2.client.core.ep.AtomSerializerDeserializer;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.custommonkey.xmlunit.exceptions.XpathException;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.xml.sax.SAXException;
+
+/**
+ *  
+ */
+public class AtomFeedSerializerTest extends AbstractProviderTest {
+  @Rule
+  public ExpectedException expectedEx = ExpectedException.none();
+
+  private String employeeXPathString = 
"/a:entry/a:link[@href=\"Rooms('1')/nr_Employees\" and @title='nr_Employees']";
+
+  private static final String EXP_MSG = "Write properties are mandatory for 
XML.";
+  private static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+  
+  public AtomFeedSerializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private GetEntitySetUriInfo view;
+
+  @Before
+  public void before() throws Exception {
+initializeRoomData(1);
+
+view = mock(GetEntitySetUriInfo.class);
+
+EdmEntitySet set = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+when(view.getTargetEntitySet()).thenReturn(set);
+  }
+
+  @Test
+  public void entityWithInlineFeed() throws Exception {
+Entity roomData = new Entity();
+roomData.addProperty("Id", "1");
+roomData.addProperty("Name", "Neu Schwanstein");
+roomData.addProperty("Seats", new Integer(20));
+EntityCollection listData = new EntityCollection();
+EntitySerializerProperties properties =
+EntitySerializerProperties.serviceRoot(BASE_URI)
+.includeMetadata(true).build();
+Entity data = new Entity();
+data.addProperty("EmployeeId", "1");
+data.addProperty("EmployeeName", "EmpName1");
+   

[08/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
new file mode 100644
index 000..f7e0433
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
@@ -0,0 +1,1027 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.serializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.client.api.edm.ClientEdm;
+import org.apache.olingo.odata2.client.api.edm.EdmDataServices;
+import org.apache.olingo.odata2.client.api.ep.Entity;
+import org.apache.olingo.odata2.client.api.ep.EntityCollection;
+import org.apache.olingo.odata2.client.api.ep.EntitySerializerProperties;
+import org.apache.olingo.odata2.client.core.ep.JsonSerializerDeserializer;
+import 
org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
+import org.apache.olingo.odata2.testutil.fit.BaseTest;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Test;
+
+import com.google.gson.Gson;
+import com.google.gson.internal.LinkedTreeMap;
+
+/**
+ *  
+ */
+public class JsonEntryEntitySerializerTest extends BaseTest { 
+  protected static final String BASE_URI = "http://host:80/service/;;
+  protected static final EntitySerializerProperties DEFAULT_PROPERTIES =
+  EntitySerializerProperties.serviceRoot(URI.create(BASE_URI)).build();
+  protected static final String ERROR_MSG = "Entity or expanded entity cannot 
have null value.";
+  protected static final String ERROR_MSG1 = "Navigation has to be either an 
Entity or a Map.";
+  
+
+  @Test
+  public void entry() throws Exception {
+final EdmEntitySet entitySet = 
MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+Entity entity = new Entity();
+entity.addProperty("Id", "1");
+entity.addProperty("isScrumTeam", true);
+entity.setWriteProperties(DEFAULT_PROPERTIES);
+
+final ODataResponse response = new 
JsonSerializerDeserializer().writeEntry(entitySet, entity);
+final String json = verifyResponse(response);
+assertEquals("{\"Id\":\"1\",\"isScrumTeam\":true}", json);
+  }
+
+  

[01/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/clientModule 91bd4b897 -> 9e949e406


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
new file mode 100644
index 000..78c187e
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_deleted_entries.xml
@@ -0,0 +1,40 @@
+
+
+http://www.w3.org/2005/Atom; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata;
+xmlns:at="http://purl.org/atompub/tombstones/1.0; 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices;
+
xml:base="https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/;>
+
https://olingoodata.neo.ondemand.com:443/com.sap.olingo.web/ReferenceScenario.svc/Rooms
+Rooms
+2014-01-21T09:15:52.473Z
+
+
+
+
+
+http://host:123/odata/Rooms('1')
+Room 1
+2014-01-21T09:15:52.474Z
+http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Employees;
+title="nr_Employees" type="application/atom+xml;type=feed" />
+http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building;
+title="nr_Building" type="application/atom+xml;type=entry" />
+
+
+1
+Room 1
+1
+1
+
+
+
+http://host:123/odata/Rooms('2')" 
when="2014-01-14T18:11:06.682+01:00" />
+http://host:123/odata/Rooms?$skiptoken=97; rel="delta" />
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml 
b/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
new file mode 100644
index 000..bb73341
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/feed_with_delta_link.xml
@@ -0,0 +1,69 @@
+
+
+http://www.w3.org/2005/Atom;
+   xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata;
+   xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices;
+   xmlns:at="http://purl.org/atompub/tombstones/1.0;
+   xml:base="http://some.host.com/service.root/ReferenceScenario.svc/;>
+   
http://some.host.com/service.root/ReferenceScenario.svc/Employees
+   Employees
+   2013-04-23T11:46:14.926Z
+   
+   
+   
+   
+   
+   
http://some.host.com/service.root/ReferenceScenario.svc/Employees('1')
+   Walter Winter
+   1999-01-01T00:00:00Z
+   http://schemas.microsoft.com/ado/2007/08/dataservices/scheme; />
+   
+   
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager;
+   title="ne_Manager" type="application/atom+xml; 
type=entry" />
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team;
+   title="ne_Team" type="application/atom+xml; type=entry" 
/>
+   http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room;
+   title="ne_Room" type="application/atom+xml; type=entry" 
/>
+   
+   
+   1
+   Walter Winter
+   1
+   1
+   1
+   
+   
+   69124
+   Heidelberg
+   
+   Germany
+   
+   52
+   1999-01-01T00:00:00
+   Employees('1')/$value
+   
+   
+   http://thisisadeltalink; rel="delta"/>
+

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
--
diff --git 
a/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml 
b/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
new file mode 100644
index 000..a718bf5
--- /dev/null
+++ b/odata2-lib/odata-client-core/src/test/resources/metadataForDeepInsert.xml
@@ -0,0 +1,53 @@
+
+http://schemas.microsoft.com/ado/2007/06/edmx; 

[13/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
new file mode 100644
index 000..caf05da
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlEntityDeserializerTest.java
@@ -0,0 +1,2461 @@
+/***
+ * 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.
+ 
**/
+package org.apache.olingo.odata2.client.core.ep.deserializer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.olingo.odata2.api.commons.HttpContentType;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
+import org.apache.olingo.odata2.api.ep.entry.MediaMetadata;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.api.ep.feed.FeedMetadata;
+import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.api.exception.MessageReference;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
+import org.apache.olingo.odata2.client.api.ep.DeserializerProperties;
+import org.apache.olingo.odata2.client.api.ep.EntityStream;
+import 
org.apache.olingo.odata2.client.api.ep.callback.OnDeserializeInlineContent;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ *  
+ */
+public class XmlEntityDeserializerTest extends AbstractXmlDeserializerTest {
+
+  public XmlEntityDeserializerTest(final StreamWriterImplType type) {
+super(type);
+  }
+
+  private static final Logger LOG = 
Logger.getLogger(XmlEntityDeserializerTest.class.getName());
+  static {
+LOG.setLevel(Level.OFF);
+  }
+
+  public static final String EMPLOYEE_1_XML =
+  ""
+  +
+  "http://www.w3.org/2005/Atom\; " +
+  
"xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\; " +
+  "xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\; 
xml:base=\"http://localhost:19000/\;  " +
+  "m:etag=\"W/1\">"
+  +
+  "  http://localhost:19000/Employees('1')"
+  +
+  "  Walter Winter"
+  +
+  "  1999-01-01T00:00:00Z"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\"/>"
+  +
+  "  "
+  +
+  "  "
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Room\; 
" +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Room\"/>"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager\;
 " +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Manager\"/>"
+  +
+  "  http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Team\; 
" +
+  "type=\"application/atom+xml; type=entry\" title=\"ne_Team\"/>"
+  +
+  "  " +
+  "  " +
+  "1" 

[05/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2

2018-04-02 Thread archanarai
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
--
diff --git 
a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
new file mode 100644
index 000..50d0c5e
--- /dev/null
+++ 
b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/uri/UriParserTest.java
@@ -0,0 +1,1132 @@
+package org.apache.olingo.odata2.client.core.uri;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.commons.InlineCount;
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTypeKind;
+import org.apache.olingo.odata2.api.exception.MessageReference;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
+import org.apache.olingo.odata2.api.uri.KeyPredicate;
+import org.apache.olingo.odata2.api.uri.PathSegment;
+import org.apache.olingo.odata2.api.uri.UriInfo;
+import org.apache.olingo.odata2.api.uri.UriNotMatchingException;
+import org.apache.olingo.odata2.api.uri.UriParser;
+import org.apache.olingo.odata2.api.uri.UriSyntaxException;
+import org.apache.olingo.odata2.client.api.ODataClient;
+import org.apache.olingo.odata2.core.uri.UriInfoImpl;
+import org.apache.olingo.odata2.core.uri.UriParserImpl;
+import org.apache.olingo.odata2.core.uri.UriType;
+import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UriParserTest {
+
+  private Edm edm;
+
+  @Before
+  public void getEdm() throws ODataException {
+edm = MockFacade.getMockEdm();
+  }
+  
+  @Test
+  public void copyPathSegmentsTest() throws Exception {
+List pathSegments = new ArrayList();
+pathSegments.add(UriParser.createPathSegment("$metadata", null));
+UriInfo result = new UriParserImpl(edm).parse(pathSegments, 
Collections. emptyMap());
+assertNotNull(result);
+assertEquals(1, pathSegments.size());
+assertEquals("$metadata", pathSegments.get(0).getPath());
+  }
+  
+  @Test
+  public void copyPathSegmentsTestEncoded() throws Exception {
+List pathSegments = new ArrayList();
+pathSegments.add(UriParser.createPathSegment("%24metadata", null));
+UriInfoImpl result = (UriInfoImpl) new 
UriParserImpl(edm).parse(pathSegments,
+Collections. emptyMap());
+assertNotNull(result);
+assertEquals(UriType.URI8, result.getUriType());
+  }
+  
+  @Test
+  public void parseNonsense() throws Exception {
+parseWrongUri("/bla", UriNotMatchingException.NOTFOUND);
+  }
+
+  @Test
+  public void parseServiceDocument() throws Exception {
+UriInfoImpl result = parse("/");
+assertEquals(UriType.URI0, result.getUriType());
+
+result = parse("");
+assertEquals(UriType.URI0, result.getUriType());
+
+result =
+(UriInfoImpl) new UriParserImpl(edm).parse(Collections. 
emptyList(), Collections
+. emptyMap());
+assertEquals(UriType.URI0, result.getUriType());
+  }
+
+  @Test
+  public void parseMetadata() throws Exception {
+UriInfoImpl result = parse("/$metadata");
+assertEquals(UriType.URI8, result.getUriType());
+  }
+
+  @Test
+  public void parseMetadataError() throws Exception {
+parseWrongUri("/$metadata/somethingwrong", 
UriSyntaxException.MUSTBELASTSEGMENT);
+  }
+
+  @Test
+  public void parseBatch() throws Exception {
+UriInfoImpl result = parse("/$batch");
+assertEquals(UriType.URI9, result.getUriType());
+  }
+
+  @Test
+  public void parseBatchError() throws Exception {
+parseWrongUri("/$batch/somethingwrong", 
UriSyntaxException.MUSTBELASTSEGMENT);
+  }
+
+  @Test
+  public void parseSomethingEntitySet() throws Exception {
+parseWrongUri("/somethingwrong", UriNotMatchingException.NOTFOUND);
+  }
+
+  @Test
+  public void parseContainerWithoutEntitySet() throws Exception {
+parseWrongUri("Container1.", UriNotMatchingException.MATCHPROBLEM);
+  }
+
+  @Test
+  

[olingo-odata2] Git Push Summary

2018-04-02 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/clientModule [created] 91bd4b897


olingo-odata4 git commit: [OLINGO-1237]Serialization changes for odata.metadata=minimal

2018-02-21 Thread archanarai
Repository: olingo-odata4
Updated Branches:
  refs/heads/master 48f93fd87 -> 75cc7197e


[OLINGO-1237]Serialization changes for odata.metadata=minimal


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/75cc7197
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/75cc7197
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/75cc7197

Branch: refs/heads/master
Commit: 75cc7197e32773f94cfecc973784314d7d37
Parents: 48f93fd
Author: Archana Rai 
Authored: Thu Feb 22 11:59:49 2018 +0530
Committer: Archana Rai 
Committed: Thu Feb 22 11:59:49 2018 +0530

--
 .../json/EdmAssistedJsonSerializer.java |  24 +-
 .../json/EdmAssistedJsonSerializerTest.java | 296 ++-
 2 files changed, 308 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/75cc7197/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
--
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
index fd68672..b9cbbd6 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
@@ -66,10 +66,12 @@ public class EdmAssistedJsonSerializer implements 
EdmAssistedSerializer {
 
   protected final boolean isIEEE754Compatible;
   protected final boolean isODataMetadataNone;
+  protected final boolean isODataMetadataFull;
 
   public EdmAssistedJsonSerializer(final ContentType contentType) {
 this.isIEEE754Compatible = 
ContentTypeHelper.isODataIEEE754Compatible(contentType);
 this.isODataMetadataNone = 
ContentTypeHelper.isODataMetadataNone(contentType);
+this.isODataMetadataFull = 
ContentTypeHelper.isODataMetadataFull(contentType);
   }
 
   @Override
@@ -207,15 +209,17 @@ public class EdmAssistedJsonSerializer implements 
EdmAssistedSerializer {
   if (eTag != null) {
 json.writeStringField(Constants.JSON_ETAG, eTag);
   }
-  if (type != null) {
-json.writeStringField(Constants.JSON_TYPE, type);
-  }
-  if (id == null) {
-if (writeNullId) {
-  json.writeNullField(Constants.JSON_ID);
+  if(isODataMetadataFull){
+if (type != null) {
+  json.writeStringField(Constants.JSON_TYPE, type);
+}
+if (id == null) {
+  if (writeNullId) {
+json.writeNullField(Constants.JSON_ID);
+  }
+} else {
+  json.writeStringField(Constants.JSON_ID, id.toASCIIString());
 }
-  } else {
-json.writeStringField(Constants.JSON_ID, id.toASCIIString());
   }
 }
   }
@@ -326,7 +330,7 @@ public class EdmAssistedJsonSerializer implements 
EdmAssistedSerializer {
   final ComplexValue value) throws IOException, SerializerException {
 json.writeStartObject();
 
-if (typeName != null && !isODataMetadataNone) {
+if (typeName != null && isODataMetadataFull) {
   json.writeStringField(Constants.JSON_TYPE, typeName);
 }
 
@@ -362,7 +366,7 @@ public class EdmAssistedJsonSerializer implements 
EdmAssistedSerializer {
   protected void valuable(JsonGenerator json, final Valuable valuable, final 
String name, final EdmType type,
   final EdmProperty edmProperty) throws IOException, SerializerException {
 
-if (!isODataMetadataNone
+if (isODataMetadataFull
 && !(valuable instanceof Annotation) && !valuable.isComplex()) {
 
   String typeName = valuable.getType();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/75cc7197/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
--
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
index 808e459..5874847 100644
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
+++ 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
@@ -56,9 +56,13 @@ public class EdmAssistedJsonSerializerTest {
   new EdmTechProvider(), Collections. emptyList(), null);
   private static final EdmEntityContainer 

olingo-odata2 git commit: [OLINGO-1228]JPA Parameterization issue

2018-01-31 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 1577e4ea1 -> 713a4b311


[OLINGO-1228]JPA Parameterization issue


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/713a4b31
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/713a4b31
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/713a4b31

Branch: refs/heads/master
Commit: 713a4b311a03f9e6f9b0a849bccad09a0a7e0f68
Parents: 1577e4e
Author: Archana Rai 
Authored: Thu Feb 1 11:33:33 2018 +0530
Committer: Archana Rai 
Committed: Thu Feb 1 11:33:33 2018 +0530

--
 .../processor/core/ODataExpressionParser.java| 19 +++
 1 file changed, 7 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/713a4b31/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index ca4f55d..7d845e9 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -405,10 +405,6 @@ public class ODataExpressionParser {
 
   literal = evaluateComparingExpression(literal, edmSimpleType, 
edmMappedType);
 
-  if (edmSimpleType == 
EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance()
-  || edmSimpleType == 
EdmSimpleTypeKind.DateTimeOffset.getEdmSimpleTypeInstance()) {
-literal = literal.substring(literal.indexOf('\''), 
literal.indexOf('}'));
-  }
   if(edmSimpleType == EdmSimpleTypeKind.String.getEdmSimpleTypeInstance()){
 keyFilters.append(tableAlias + JPQLStatement.DELIMITER.PERIOD + 
propertyName + JPQLStatement.DELIMITER.SPACE
 + JPQLStatement.Operator.LIKE + JPQLStatement.DELIMITER.SPACE + 
literal +  " ESCAPE '\\'");
@@ -492,6 +488,7 @@ public class ODataExpressionParser {
 }
   }
   uriLiteral = "?" + index;
+  index++;
 } else if 
(EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance().isCompatible(edmSimpleType)
 || 
EdmSimpleTypeKind.DateTimeOffset.getEdmSimpleTypeInstance().isCompatible(edmSimpleType))
 {
   try {
@@ -503,6 +500,7 @@ public class ODataExpressionParser {
   positionalParameters.put(index, datetime);
 }
 uriLiteral = "?" + index;
+index++;
 
   } catch (EdmSimpleTypeException e) {
 throw 
ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),
 e);
@@ -524,6 +522,7 @@ public class ODataExpressionParser {
  positionalParameters.put(index, Time.valueOf(uriLiteral));
}
uriLiteral = "?" + index;
+   index++;
   } catch (EdmSimpleTypeException e) {
 throw 
ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),
 e);
   }
@@ -538,51 +537,47 @@ public class ODataExpressionParser {
   Class edmMappedType) {
 Class type = edmMappedType==null? 
edmSimpleType.getDefaultType():
   edmMappedType;
+int size = positionalParameters.size();
 if (Long.class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, Long.valueOf(uriLiteral));
   }
-  uriLiteral = "?" + index;
 } else if (Double.class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, Double.valueOf(uriLiteral));
   }
-  uriLiteral = "?" + index;
 } else if (Integer.class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, Integer.valueOf(uriLiteral));
   }
-  uriLiteral = "?" + index;
 } else if (Byte.class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, Byte.valueOf(uriLiteral));
   }
-  uriLiteral = "?" + index;
 }  else if (Byte[].class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, toByteArray(uriLiteral));
   }
-  uriLiteral = "?" + index;
 } else if (Short.class.equals(type)) {
   if (!positionalParameters.containsKey(index)) {
 positionalParameters.put(index, Short.valueOf(uriLiteral));
   }
-  uriLiteral = "?" + index;
 } else if 

olingo-odata2 git commit: [OLINGO-1098]Incorrect handling of SQL wildcards '_' and '%'

2018-01-01 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 18d677b5c -> 1577e4ea1


[OLINGO-1098]Incorrect handling of SQL wildcards '_' and '%'


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/1577e4ea
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/1577e4ea
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/1577e4ea

Branch: refs/heads/master
Commit: 1577e4ea169f1a859a2c1d5b6b61f393e9576ad9
Parents: 18d677b
Author: Archana Rai 
Authored: Tue Jan 2 13:11:44 2018 +0530
Committer: Archana Rai 
Committed: Tue Jan 2 13:11:44 2018 +0530

--
 .../jpa/processor/core/ODataExpressionParser.java  |  6 ++
 .../core/ODataFilterExpressionParserTest.java  | 17 +
 .../core/access/data/JPAQueryBuilderTest.java  |  3 +++
 3 files changed, 18 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1577e4ea/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index 4673675..ca4f55d 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -152,6 +152,12 @@ public class ODataExpressionParser {
 + JPQLStatement.Operator.OR + JPQLStatement.DELIMITER.SPACE + right
 + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
   case EQ:
+EdmSimpleType type = 
(EdmSimpleType)((BinaryExpression)whereExpression).getLeftOperand().getEdmType();
+
if(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance().isCompatible(type)){
+  return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
+  + (!"null".equals(right) ? JPQLStatement.Operator.LIKE : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
+  + " ESCAPE '\\'" + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
+}
 return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + 
JPQLStatement.DELIMITER.SPACE
 + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + 
JPQLStatement.DELIMITER.SPACE + right
 + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1577e4ea/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
index 02baae6..bd15849 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
@@ -48,7 +48,7 @@ public class ODataFilterExpressionParserTest {
   private static final String NAMESPACE = "SalesOrderProcessing";
   private static final String ENTITY_NOTE = "Note";
   // Index 0 - Is test input and Index 1 - Is expected output
-  private static final String[] EXPRESSION_EQ = { "id eq '123'", "(E1.id = 
'123')" };
+  private static final String[] EXPRESSION_EQ = { "id eq '123'", "(E1.id LIKE 
'123' ESCAPE '\\')" };
   private static final String[] EXPRESSION_NE = { "id ne '123'", "(E1.id <> 
'123')" };
   private static final String[] EXPRESSION_ESCAPE = { "id ne '123''22'", 
"(E1.id <> '123''22')" };
   private static final String[] EXPRESSION_BINARY_AND =
@@ -60,7 +60,7 @@ public class ODataFilterExpressionParserTest {
   private static final String[] EXPRESSION_BINARY_OR = { "id ge '123' or soId 
gt 123L",
   "((E1.id >= '123') OR (E1.soId > 123))" };
   private static final String[] EXPRESSION_MEMBER_OR = { "id lt '123' or 
oValue/Currency eq 'INR'",
-  "((E1.id < '123') OR (E1.oValue.Currency = 'INR'))" };
+  "((E1.id < '123') OR (E1.oValue.Currency LIKE 'INR' ESCAPE '\\'))" };
   private static final String[] EXPRESSION_STARTS_WITH = { 
"startswith(oValue/Currency,'INR')",
   "E1.oValue.Currency LIKE CONCAT('INR','%') ESCAPE '\\'" };
   private 

olingo-odata2 git commit: [Olingo-1147]Entity read not working due to normalization

2017-11-29 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 5d88b96e8 -> c04abbad1


[Olingo-1147]Entity read not working due to normalization


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/c04abbad
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/c04abbad
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/c04abbad

Branch: refs/heads/master
Commit: c04abbad175b615954fc7bf86500230fdfb1501d
Parents: 5d88b96
Author: Archana Rai 
Authored: Wed Nov 29 16:03:15 2017 +0530
Committer: Archana Rai 
Committed: Wed Nov 29 16:03:15 2017 +0530

--
 .../jpa/processor/api/jpql/JPQLStatement.java   |  1 +
 .../processor/core/ODataExpressionParser.java   | 11 ++--
 .../JPQLSelectSingleStatementBuilderTest.java   | 54 +---
 3 files changed, 56 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/c04abbad/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/jpql/JPQLStatement.java
--
diff --git 
a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/jpql/JPQLStatement.java
 
b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/jpql/JPQLStatement.java
index 57660b0..6d1f22d 100644
--- 
a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/jpql/JPQLStatement.java
+++ 
b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/jpql/JPQLStatement.java
@@ -115,6 +115,7 @@ public class JPQLStatement {
 public static final String AND = "AND";
 public static final String NOT = "NOT";
 public static final String OR = "OR";
+public static final String LIKE = "LIKE";
 
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/c04abbad/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index a2266df..4673675 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -403,9 +403,14 @@ public class ODataExpressionParser {
   || edmSimpleType == 
EdmSimpleTypeKind.DateTimeOffset.getEdmSimpleTypeInstance()) {
 literal = literal.substring(literal.indexOf('\''), 
literal.indexOf('}'));
   }
-
-  keyFilters.append(tableAlias + JPQLStatement.DELIMITER.PERIOD + 
propertyName + JPQLStatement.DELIMITER.SPACE
-  + JPQLStatement.Operator.EQ + JPQLStatement.DELIMITER.SPACE + 
literal);
+  if(edmSimpleType == EdmSimpleTypeKind.String.getEdmSimpleTypeInstance()){
+keyFilters.append(tableAlias + JPQLStatement.DELIMITER.PERIOD + 
propertyName + JPQLStatement.DELIMITER.SPACE
++ JPQLStatement.Operator.LIKE + JPQLStatement.DELIMITER.SPACE + 
literal +  " ESCAPE '\\'");
+   
+  }else{
+keyFilters.append(tableAlias + JPQLStatement.DELIMITER.PERIOD + 
propertyName + JPQLStatement.DELIMITER.SPACE
++ JPQLStatement.Operator.EQ + JPQLStatement.DELIMITER.SPACE + 
literal);
+  }
 }
 if (keyFilters.length() > 0) {
   Map> parameterizedExpressionMap = 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/c04abbad/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
index 63b5948..1a7b13b 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
@@ -58,7 +58,8 @@ public class JPQLSelectSingleStatementBuilderTest {
 
   }
 
-  private JPQLSelectSingleContext createSelectContext() throws 

olingo-odata2 git commit: [OLINGO-752]Add support for + sign as a separator in addition to %20 for URLs

2017-11-20 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 2d876376a -> 5d88b96e8


[OLINGO-752]Add support for + sign as a separator in addition to %20 for URLs


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/5d88b96e
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/5d88b96e
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/5d88b96e

Branch: refs/heads/master
Commit: 5d88b96e805303bf2c04aa4f93291e074b736910
Parents: 2d87637
Author: Archana Rai 
Authored: Tue Nov 21 11:47:15 2017 +0530
Committer: Archana Rai 
Committed: Tue Nov 21 11:47:15 2017 +0530

--
 .../org/apache/olingo/odata2/api/ODataServiceFactory.java |  5 +
 .../apache/olingo/odata2/core/servlet/ODataServlet.java   |  3 ++-
 .../org/apache/olingo/odata2/core/servlet/RestUtil.java   | 10 +++---
 .../org/apache/olingo/odata2/core/uri/UriParserImpl.java  |  3 ++-
 .../apache/olingo/odata2/core/servlet/RestUtilTest.java   |  8 
 .../org/apache/olingo/odata2/core/uri/UriParserTest.java  |  6 +++---
 6 files changed, 23 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5d88b96e/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ODataServiceFactory.java
--
diff --git 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ODataServiceFactory.java
 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ODataServiceFactory.java
index 57736c7..0fc8443 100644
--- 
a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ODataServiceFactory.java
+++ 
b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ODataServiceFactory.java
@@ -50,6 +50,11 @@ public abstract class ODataServiceFactory {
* Label used in web.xml to assign servlet init parameter for a path split 
(service resolution).
*/
   public static final String PATH_SPLIT_LABEL = 
"org.apache.olingo.odata2.path.split";
+  
+  /**
+   * Label used in web.xml to assign servlet init parameter for a accept form 
encoding.
+   */
+  public static final String ACCEPT_FORM_ENCODING 
="org.apache.olingo.odata.accept.forms.encoding";
 
   /**
* Create instance of custom {@link ODataService}.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5d88b96e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
index 571c313..3fdb99c 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
@@ -177,6 +177,7 @@ public class ODataServlet extends HttpServlet {
   throws IOException {
 try {
   final String pathSplitAsString = 
getInitParameter(ODataServiceFactory.PATH_SPLIT_LABEL);
+  final String formEncoding = 
getInitParameter(ODataServiceFactory.ACCEPT_FORM_ENCODING);
   int pathSplit = 0;
   if (pathSplitAsString != null) {
 pathSplit = Integer.parseInt(pathSplitAsString);
@@ -193,7 +194,7 @@ public class ODataServlet extends HttpServlet {
   
.acceptHeaders(RestUtil.extractAcceptHeaders(req.getHeader(HttpHeaders.ACCEPT)))
   
.acceptableLanguages(RestUtil.extractAcceptableLanguage(req.getHeader(HttpHeaders.ACCEPT_LANGUAGE)))
   .pathInfo(RestUtil.buildODataPathInfo(req, pathSplit))
-  
.allQueryParameters(RestUtil.extractAllQueryParameters(req.getQueryString()))
+  
.allQueryParameters(RestUtil.extractAllQueryParameters(req.getQueryString(), 
formEncoding))
   .requestHeaders(RestUtil.extractHeaders(req))
   .body(req.getInputStream())
   .build();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5d88b96e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
--
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
index 9f5721f..ad76658 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
@@ -69,6 +69,7 @@ public class RestUtil {
   Pattern.compile(REG_EX_ACCEPT_LANGUAGES + 

olingo-odata2 git commit: [Olingo-1147]Entity read not working due to normalization

2017-11-20 Thread archanarai
Repository: olingo-odata2
Updated Branches:
  refs/heads/master 6790766c1 -> 2d876376a


[Olingo-1147]Entity read not working due to normalization


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2d876376
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2d876376
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2d876376

Branch: refs/heads/master
Commit: 2d876376aa86977e1c9a4c9e3da8226e92f839c0
Parents: 6790766
Author: Archana Rai 
Authored: Mon Nov 20 16:23:31 2017 +0530
Committer: Archana Rai 
Committed: Mon Nov 20 16:23:31 2017 +0530

--
 .../odata2/jpa/processor/core/access/data/JPAProcessorImpl.java| 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d876376/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
--
diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index 577e80a..646d8d6 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -300,6 +300,8 @@ public class JPAProcessorImpl implements JPAProcessor {
 }
   } catch(PersistenceException e){
 em.getTransaction().rollback();
+throw ODataJPARuntimeException.throwException(
+ODataJPARuntimeException.ERROR_JPQL_DELETE_REQUEST, e);
   }
 }
 return selectedObject;



  1   2   >