[olingo-odata4] branch master updated: [OLINGO-1490] Update(PUT) Collection Property
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
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()
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
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
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
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
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
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
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
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
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
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/
[olingo-odata2] branch master updated: [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser
This is an automated email from the ASF dual-hosted git repository. archanarai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git The following commit(s) were added to refs/heads/master by this push: new 7284619 [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser 7284619 is described below commit 7284619af7cdc55d0d1b01505bc27f7df600f4b8 Author: Archana Rai AuthorDate: Thu Dec 13 14:08:06 2018 +0530 [OLINGO-1322]ODATA V2.0: An empty string validation in UriParser --- .../java/org/apache/olingo/odata2/core/uri/UriParserImpl.java | 4 .../java/org/apache/olingo/odata2/core/uri/UriParserTest.java | 11 +++ 2 files changed, 15 insertions(+) diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java index 8373df7..3a31ad7 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java @@ -468,6 +468,10 @@ public class UriParserImpl extends UriParser { throw new UriSyntaxException(UriSyntaxException.MISSINGKEYPREDICATENAME.addContent(key)); } } + + if("''".equals(value) || value==null){ +throw new UriSyntaxException(UriSyntaxException.INVALIDVALUE.addContent(value)); + } EdmProperty keyProperty = null; for (final EdmProperty testKeyProperty : keyProperties) { diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java index f08012a..51a2669 100644 --- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java +++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java @@ -254,6 +254,17 @@ public class UriParserTest extends BaseTest { assertEquals("1", result.getKeyPredicates().get(0).getLiteral()); assertEquals("EmployeeId", result.getKeyPredicates().get(0).getProperty().getName()); } + + @Test + public void parseEmployeesEntityWithEmptyKey() throws Exception { +parseWrongUri("/Employees('')", UriSyntaxException.INVALIDVALUE.addContent("''")); + } + + @Test + public void parseEmployeesEntityWithNullKey() throws Exception { +parseWrongUri("/Employees(null)", UriSyntaxException.INCOMPATIBLELITERAL); + } + @Test public void parseEmployeesEntityWithKeyWithComma() throws Exception {
[olingo-odata2] branch master updated: [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode
This is an automated email from the ASF dual-hosted git repository. archanarai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git The following commit(s) were added to refs/heads/master by this push: new f5ee664 [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode f5ee664 is described below commit f5ee664c909d2e9d269469bfd1b882c42ac721d3 Author: Archana Rai AuthorDate: Thu Dec 13 13:38:24 2018 +0530 [OLINGO-1321]ODATA V2.0 : An api to return list of child expandSelectTreeNode --- .../odata2/api/uri/ExpandSelectTreeNode.java | 8 +- .../odata2/core/ep/consumer/JsonEntryConsumer.java | 8 + .../odata2/core/ep/consumer/XmlEntryConsumer.java | 9 + .../odata2/core/uri/ExpandSelectTreeNodeImpl.java | 9 +- .../core/ep/consumer/JsonEntryConsumerTest.java| 28 ++ .../core/ep/consumer/XmlEntityConsumerTest.java| 28 ++ .../resources/employeesWithDifferentInlines.xml| 307 + .../jsonEmployeesWithDifferentInlines.json | 160 +++ 8 files changed, 554 insertions(+), 3 deletions(-) diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java index b12eb43..a1915ec 100644 --- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java +++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/ExpandSelectTreeNode.java @@ -53,7 +53,13 @@ public abstract class ExpandSelectTreeNode { * otherwise the link must be expanded with information found in that node */ public abstract Map getLinks(); - + + /** + * A list of all expanded links within the parent entity. + * @return {@link ExpandSelectTreeNodeBuilder} for method chaining. + */ + public abstract List getExpandedList(); + /** * Creates a builder instance and sets the entitySet for this node. * @param entitySet on which this node is based diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java index d9d8e6e..d1c4179 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java @@ -389,6 +389,14 @@ public class JsonEntryConsumer { List entries = feed.getEntries(); if (!entries.isEmpty()) { updateExpandSelectTree(navigationPropertyName, entries.get(0)); + for(ODataEntry entry : entries){ +ExpandSelectTreeNodeImpl newExpandedSelectedTree = new ExpandSelectTreeNodeImpl(); +newExpandedSelectedTree.setExpanded(); +newExpandedSelectedTree.setExplicitlySelected(); +newExpandedSelectedTree.putLink(navigationPropertyName, +(ExpandSelectTreeNodeImpl) entry.getExpandSelectTree()); +expandSelectTree.getExpandedList().add(newExpandedSelectedTree); + } } else { expandSelectTree.setExpanded(); expandSelectTree.setExplicitlySelected(); diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java index 962fc34..8c5a240 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java @@ -345,6 +345,15 @@ public class XmlEntryConsumer { expandSelectTree.setExpanded(); ExpandSelectTreeNodeImpl subNode = getExpandSelectTreeNode(inlineEntries); expandSelectTree.putLink(navigationPropertyName, subNode); +for(ODataEntry entry : inlineEntries){ + ExpandSelectTreeNodeImpl newExpandedSelectedTree = new ExpandSelectTreeNodeImpl(); + newExpandedSelectedTree.setExpanded(); + newExpandedSelectedTree.setExplicitlySelected(); + newExpandedSelectedTree.putLink(navigationPropertyName, + (ExpandSelectTreeNodeImpl) entry.getExpandSelectTree()); + expandSelectTree.getExpandedList().add(newExpandedSelectedTree); +} + } /** diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java index 0237cdf..b7b646d 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ExpandSelectTreeNodeImpl.java @@ -60,7 +60,8 @@ public class ExpandSelectTreeNodeImpl
olingo-odata2 git commit: [Olingo-1259]Function Import enhancements
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 writeEntry(funct
olingo-odata2 git commit: [OLINGO-1183, 1118, 1309, 1313]Multiple JPA issues
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 a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo
olingo-odata2 git commit: [Olingo-1228]JPA Parameterization issue
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 ?((JPAEdmMappingImpl)edmMapping).getJPAType()
[2/2] olingo-odata4 git commit: [OLINGO-1191]Code Improvements
[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 = ODataClientFac
[1/2] olingo-odata4 git commit: [OLINGO-1191]Code Improvements
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 +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/ODataClientTest.jav
olingo-odata4 git commit: [OLINGO-1315]ODATA V4.0 Client: API to return HTTP Request details
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
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); +when
olingo-odata2 git commit: [OLINGO-1298] Hibernate latest version compliance
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
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 f
olingo-odata4 git commit: [OLINGO-1296] EdmDateTimeOffSet precision validation
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, null
olingo-odata4 git commit: [OLINGO-1191] Code Improvements
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 --- a/lib/client-core/src/main/java/org/apac
svn commit: r1034257 - /websites/production/olingo/content/
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
Author: archanarai Date: Tue Aug 21 11:27:05 2018 New Revision: 1838540 URL: http://svn.apache.org/viewvc?rev=1838540&view=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&r1=1838539&r2=1838540&view=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
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
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 +++ b/lib/commons-api/src/main/java/org/
[3/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations
[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 org.apache.olingo.commons.api.edm.provide
[2/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations
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
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 createDeserializer(ContentTyp
olingo-odata2 git commit: [OLINGO-1283]Facet info for Function Import parameters not honored
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 EdmLiteral(getI
olingo-odata4 git commit: [OLINGO-1280]OData V4.0: Client throws exception for Asynchronous Action requests
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", entity.getProperty("PropertyString").getPrimitiveValue().toValue()
olingo-odata4 git commit: [OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute
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()); +} + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1da3
olingo-odata4 git commit: Revert "[OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute"
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 org.apache.olingo.commons.api.http.Http
olingo-odata4 git commit: [OLINGO-1279]OData V4.0: Client returns CsdlPath for CsdlAnnotationPath attribute
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 static
olingo-odata2 git commit: [Olingo-1259]Function Import enhancements
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); } +container.setNamespace(currentNamespace)
olingo-odata2 git commit: [Olingo-1259]Function Import enhancements
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 org.apach
olingo-odata2 git commit: [Olingo-1259]Function Import enhancements
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 edmEntityContainer.getEntitySet(entitySet); +
olingo-odata2 git commit: [OLINGO-1258]JPA Filter for null is throwing exception
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
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-1255] is malformed when auto generation of key is enabled
Repository: olingo-odata2 Updated Branches: refs/heads/master 2b6be00b3 -> 2db7d0a03 [OLINGO-1255] is malformed when auto generation of key is enabled Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2db7d0a0 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2db7d0a0 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2db7d0a0 Branch: refs/heads/master Commit: 2db7d0a0325a44fde7dee96d91992dc636b4204c Parents: 2b6be00 Author: Archana Rai Authored: Wed Apr 11 10:45:04 2018 +0530 Committer: Archana Rai Committed: Wed Apr 11 10:45:04 2018 +0530 -- .../serializer/AtomEntryEntitySerializer.java | 16 - .../ep/serializer/AtomEntrySerializerTest.java | 34 .../JsonEntryEntitySerializerTest.java | 2 +- 3 files changed, 42 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2db7d0a0/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 5881813..058 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 @@ -531,7 +531,7 @@ public class AtomEntryEntitySerializer { } sb.append(Encoder.encode(eia.getEntitySetName())); -String keyValue = createEntryKey(eia, data, isKeyAutoGenerated, isIdTag); +String keyValue = createEntryKey(eia, data, isKeyAutoGenerated); if (isIdTag && isKeyAutoGenerated && "".equals(keyValue) && keyValue.length() == 0) { sb.append(extension == null ? "" : ("/" + extension)); } else { @@ -542,7 +542,7 @@ public class AtomEntryEntitySerializer { } private static String createEntryKey(final EntityInfoAggregator entityInfo, final Map data, - boolean isKeyAutoGenerated, boolean isIdTag) + boolean isKeyAutoGenerated) throws EntityProviderException { final List keyPropertyInfos = entityInfo.getKeyPropertyInfos(); @@ -561,13 +561,11 @@ public class AtomEntryEntitySerializer { try { String keyValue = null; if (isKeyAutoGenerated && data.get(name) == null) { - if (isIdTag) { -keyValue = ""; - } else { -Object value = fetchDefaultValue(type.getDefaultType()); -keyValue = Encoder.encode(type.valueToString(value, EdmLiteralKind.URI, -keyPropertyInfo.getFacets())); - } + // Every time default values for the key is generated + // if it is not there and auto generation has to be done by the server + Object value = fetchDefaultValue(type.getDefaultType()); + keyValue = Encoder.encode(type.valueToString(value, EdmLiteralKind.URI, + keyPropertyInfo.getFacets())); } else { keyValue = Encoder.encode(type.valueToString(data.get(name), EdmLiteralKind.URI, keyPropertyInfo.getFacets())); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2db7d0a0/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 74cab47..f384bbc 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 @@ -935,6 +935,40 @@ public class AtomEntrySerializerTest extends AbstractProviderTest { assertXpathEvaluatesTo(BASE_URI.toASCIIString() + "Container2.Photos(Id=1,Type='image%2Fpng')", "/a:entry/a:id/text()", xmlString); } + + @Test + public void serializeGenIds() throws IOException, XpathException, SAXException, XMLStreamException, + FactoryConfigurationError, ODataException { +AtomSerializerDeserializer ser = createAtomEntityProvider(); +EntitySerializerProperties props = +E
olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required
olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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 License for the + * specific language governi
[16/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 properti
[17/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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: +addFormat(format); +break; +default: +throw new RuntimeException("Unkown state:" + state)
[10/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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/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']"; +
[05/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 + public void parseEmployeesEntitySet() throws Except
[12/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 Xml
[21/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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); + } + + @Tes
[22/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 String.fo
[03/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 + + + + https://olingoodata.neo.ondemand.com:443/c
[14/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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); +assertEquals(Short.valueOf("67"), resultMap.get("Age")); +//
[09/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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 org.
[07/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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); +assertNotNull(resp
[11/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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[] propertyNa
[19/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 org.apache.olingo.odata2.client.core.edm.Impl.Ed
[20/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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() + .getSimpleName()), e); +
[24/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
[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 + .../serializer/AtomEntryEntitySerializer.java | 669 + .../co
[15/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 +
[02/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 +9
[06/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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")). + appendKeySegment((EdmProperty)employeeEntitySet.getEntityT
[18/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 readCollection(XMLStreamReader reader, final EntityPropertyInfo info, + final DeserializerProperties prope
[13/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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\"/>" + + + " " + + " " + +
[01/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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"; xmlns:m="http://schemas.microsoft.com/ado/20
[04/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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": { + "type
olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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[] propertyNa
[19/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 org.apache.olingo.odata2.client.core.edm.Impl.Ed
[16/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 properti
[17/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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: +addFormat(format); +break; +default: +throw new RuntimeException("Unkown state:" + state)
[12/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 Xml
[24/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
[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 + .../serializer/AtomEntryEntitySerializer.java | 669 +
[18/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 readCollection(XMLStreamReader reader, final EntityPropertyInfo info, + final DeserializerProperties prope
[21/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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 +
[06/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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")). + appendKeySegment((EdmProperty)employeeEntitySet.getEntityT
[22/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 String.fo
[14/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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); +assertEquals(Short.valueOf("67"), resultMap.get("Age")); +//
[20/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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() + .getSimpleName()), e); +
[07/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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); +assertNotNull(resp
[02/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 +9
[03/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 + + + + https://olingoodata.neo.ondemand.com:443/c
[04/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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": { + "type
[23/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 org.
[10/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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']"; +
[01/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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"; xmlns:m="http://schemas.microsoft.com/
[13/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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\"/>" + + + " " + + " " + +
[05/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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 + public void parseEmployeesEntitySet() throws Except
[09/24] olingo-odata2 git commit: [OLINGO-1253]Client Module for Olingo v2
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
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); + } + + @Tes
[olingo-odata2] Git Push Summary
Repository: olingo-odata2 Updated Branches: refs/heads/clientModule [created] 91bd4b897
olingo-odata4 git commit: [OLINGO-1237]Serialization changes for odata.metadata=minimal
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 entityContainer = metadata.getEdm().getEntityCo
olingo-odata2 git commit: [OLINGO-1228]JPA Parameterization issue
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 (BigDecimal.class.equals(type)) { if
olingo-odata2 git commit: [OLINGO-1098]Incorrect handling of SQL wildcards '_' and '%'
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 static final String[] EXPRESSION_STARTS_WITH_E
olingo-odata2 git commit: [Olingo-1147]Entity read not working due to normalization
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 ODataJPARuntimeException, EdmException { + private JPQLSelectSingleContext createSelectCon