You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/04/26 22:52:43 UTC
[01/15] olingo-odata2 git commit: [OLINGO-883] Make URI literal
prefix case insensitive
Repository: olingo-odata2
Updated Branches:
refs/heads/OLINGO-882_EnableContainerManagedPersistence 185e97f28 -> a838b6960
[OLINGO-883] Make URI literal prefix case insensitive
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/891d3ddd
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/891d3ddd
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/891d3ddd
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 891d3ddd4011bebf36443d398d45b0fffbeb7795
Parents: f582a80
Author: Christian Amend <ch...@sap.com>
Authored: Mon Feb 22 10:54:13 2016 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Mon Feb 22 10:54:13 2016 +0100
----------------------------------------------------------------------
.../olingo/odata2/core/edm/EdmDateTime.java | 3 ++-
.../odata2/core/edm/EdmDateTimeOffset.java | 3 ++-
.../apache/olingo/odata2/core/edm/EdmGuid.java | 27 +++++++++++++++-----
.../apache/olingo/odata2/core/edm/EdmTime.java | 3 ++-
.../odata2/core/edm/EdmSimpleTypeTest.java | 22 +++++++++++++---
5 files changed, 46 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/891d3ddd/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
index 38b213d..dddb0a2 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
@@ -84,7 +84,8 @@ public class EdmDateTime extends AbstractSimpleType {
String valueString;
if (literalKind == EdmLiteralKind.URI) {
- if (value.length() > 10 && value.startsWith("datetime'") && value.endsWith("'")) {
+ //OLINGO-883 prefix is case insensitve so we need to check with lower case if we want to use startsWith()
+ if (value.length() > 10 && value.toLowerCase().startsWith("datetime'") && value.endsWith("'")) {
valueString = value.substring(9, value.length() - 1);
} else {
throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/891d3ddd/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
index 16f867f..cfc1a67 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
@@ -58,7 +58,8 @@ public class EdmDateTimeOffset extends AbstractSimpleType {
protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
final Class<T> returnType) throws EdmSimpleTypeException {
if (literalKind == EdmLiteralKind.URI) {
- if (value.length() > 16 && value.startsWith("datetimeoffset'") && value.endsWith("'")) {
+ //OLINGO-883 prefix is case insensitve so we need to check with lower case if we want to use startsWith()
+ if (value.length() > 16 && value.toLowerCase().startsWith("datetimeoffset'") && value.endsWith("'")) {
return internalValueOfString(value.substring(15, value.length() - 1), EdmLiteralKind.DEFAULT, facets,
returnType);
} else {
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/891d3ddd/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
index dadd3b6..70594b3 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
@@ -46,20 +46,35 @@ public class EdmGuid extends AbstractSimpleType {
public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
return value == null ?
facets == null || facets.isNullable() == null || facets.isNullable() :
- validateLiteral(value, literalKind);
+ validateLiteralInternal(value, literalKind);
}
- private boolean validateLiteral(final String value, final EdmLiteralKind literalKind) {
- return value.matches(literalKind == EdmLiteralKind.URI ? toUriLiteral(PATTERN) : PATTERN);
+ private boolean validateLiteralInternal(String value, EdmLiteralKind literalKind) {
+ String cleanValue = null;
+ if (literalKind == EdmLiteralKind.URI && value.toLowerCase().startsWith("guid'") && value.endsWith("'")) {
+ cleanValue = value.substring(5, value.length() - 1);
+ } else {
+ cleanValue = value;
+ }
+ return validateLiteral(cleanValue);
+ }
+
+ private boolean validateLiteral(final String value) {
+ return value.matches(PATTERN);
}
@Override
protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
final Class<T> returnType) throws EdmSimpleTypeException {
UUID result;
- if (validateLiteral(value, literalKind)) {
- result = UUID.fromString(
- literalKind == EdmLiteralKind.URI ? value.substring(5, value.length() - 1) : value);
+ String cleanValue = null;
+ if (literalKind == EdmLiteralKind.URI && value.toLowerCase().startsWith("guid'") && value.endsWith("'")) {
+ cleanValue = value.substring(5, value.length() - 1);
+ } else {
+ cleanValue = value;
+ }
+ if (validateLiteral(cleanValue)) {
+ result = UUID.fromString(cleanValue);
} else {
throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/891d3ddd/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmTime.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmTime.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmTime.java
index fb80227..fc99d6a 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmTime.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmTime.java
@@ -57,8 +57,9 @@ public class EdmTime extends AbstractSimpleType {
protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
final Class<T> returnType) throws EdmSimpleTypeException {
+ //OLINGO-883 prefix is case insensitve so we need to check with lower case if we want to use startsWith()
if (literalKind == EdmLiteralKind.URI
- && (value.length() <= 6 || !value.startsWith("time'") || !value.endsWith("'"))) {
+ && (value.length() <= 6 || !value.toLowerCase().startsWith("time'") || !value.endsWith("'"))) {
throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/891d3ddd/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
index 5b1b50b..ebe6211 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
@@ -1139,6 +1139,10 @@ public class EdmSimpleTypeTest extends BaseTest {
Date.class));
assertEquals(dateTime, instance.valueOfString("datetime'2012-02-29T23:32:03.001'", EdmLiteralKind.URI, null,
Calendar.class));
+
+ //OLINGO-883 prefix is case insensitive
+ assertEquals(dateTime, instance.valueOfString("DaTeTiMe'2012-02-29T23:32:03.001'", EdmLiteralKind.URI, null,
+ Calendar.class));
dateTime.add(Calendar.MILLISECOND, 9);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:03.01", EdmLiteralKind.DEFAULT,
@@ -1235,7 +1239,12 @@ public class EdmSimpleTypeTest extends BaseTest {
Calendar.class));
assertEquals(dateTime, instance.valueOfString("datetimeoffset'2012-02-29T01:02:03-01:30'", EdmLiteralKind.URI,
null, Calendar.class));
-
+
+ //OLINGO-883 prefix is case insensitive
+ assertEquals(dateTime, instance.valueOfString("DaTeTiMeoFFset'2012-02-29T01:02:03-01:30'", EdmLiteralKind.URI,
+ null, Calendar.class));
+
+
dateTime.clear();
dateTime.setTimeZone(TimeZone.getTimeZone("GMT+11:00"));
dateTime.set(2012, 1, 29, 1, 2, 3);
@@ -1438,7 +1447,11 @@ public class EdmSimpleTypeTest extends BaseTest {
UUID.class));
assertEquals(uuid, instance.valueOfString("guid'AABBCCDD-aabb-ccdd-eeff-AABBCCDDEEFF'", EdmLiteralKind.URI, null,
UUID.class));
-
+
+ //OLINGO-883 prefix is case insensitive
+ assertEquals(uuid, instance.valueOfString("GuId'AABBCCDD-aabb-ccdd-eeff-AABBCCDDEEFF'", EdmLiteralKind.URI, null,
+ UUID.class));
+
expectErrorInValueOfString(instance, "AABBCCDDAABBCCDDEEFFAABBCCDDEEFF", EdmLiteralKind.DEFAULT, null,
EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT);
expectErrorInValueOfString(instance, "uid'AABBCCDD-aabb-ccdd-eeff-AABBCCDDEEFF'", EdmLiteralKind.URI, null,
@@ -1652,7 +1665,10 @@ public class EdmSimpleTypeTest extends BaseTest {
assertEquals(dateTime, instance.valueOfString("PT23H32M3.001S", EdmLiteralKind.DEFAULT, null, Calendar.class));
assertEquals(dateTime, instance.valueOfString("PT23H32M3.001S", EdmLiteralKind.JSON, null, Calendar.class));
assertEquals(dateTime, instance.valueOfString("time'PT23H32M3.001S'", EdmLiteralKind.URI, null, Calendar.class));
-
+
+ //OLINGO-883 prefix is case insensitive
+ assertEquals(dateTime, instance.valueOfString("TiMe'PT23H32M3.001S'", EdmLiteralKind.URI, null, Calendar.class));
+
dateTime.add(Calendar.MILLISECOND, -1);
assertEquals(dateTime, instance.valueOfString("PT23H32M3S", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(0, null), Calendar.class));
[15/15] olingo-odata2 git commit: [OLINGO-882] Merge branch 'master'
into OLINGO-882_EnableContainerManagedPersistence
Posted by mi...@apache.org.
[OLINGO-882] Merge branch 'master' into OLINGO-882_EnableContainerManagedPersistence
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/a838b696
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/a838b696
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/a838b696
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: a838b6960bbbeac98a2afe819ee4ce9371791051
Parents: 185e97f 768bc4c
Author: mibo <mi...@mirb.de>
Authored: Tue Apr 26 22:28:55 2016 +0200
Committer: mibo <mi...@mirb.de>
Committed: Tue Apr 26 22:28:55 2016 +0200
----------------------------------------------------------------------
.../api/exception/ODataJPARuntimeException.java | 2 +
.../jpa/processor/api/model/JPAEdmMapping.java | 4 +
.../jpa/processor/core/ODataEntityParser.java | 45 +++--
.../processor/core/ODataExpressionParser.java | 28 ++-
.../core/ODataJPAResponseBuilderDefault.java | 4 +-
.../processor/core/access/data/JPAEntity.java | 202 ++++++++++++-------
.../core/access/data/JPAEntityParser.java | 66 ++++--
.../processor/core/model/JPAEdmMappingImpl.java | 11 +
.../main/resources/jpaprocessor_msg.properties | 1 +
.../core/ODataFilterExpressionParserTest.java | 26 ++-
.../core/ODataJPAResponseBuilderTest.java | 4 +-
.../JPAEntityParserForStaticMethodTest.java | 72 ++++++-
.../core/access/data/JPAEntityParserTest.java | 29 ++-
.../core/access/data/JPAExpandCallBackTest.java | 1 -
.../processor/core/mock/data/EdmMockUtil.java | 4 +-
.../ref/web/JPAReferenceServiceFactory.java | 16 ++
odata2-lib/odata-core/pom.xml | 1 +
.../olingo/odata2/core/commons/XmlHelper.java | 24 ++-
.../olingo/odata2/core/debug/DebugInfoBody.java | 4 +-
.../olingo/odata2/core/edm/EdmDateTime.java | 3 +-
.../odata2/core/edm/EdmDateTimeOffset.java | 3 +-
.../apache/olingo/odata2/core/edm/EdmGuid.java | 27 ++-
.../apache/olingo/odata2/core/edm/EdmImpl.java | 14 ++
.../apache/olingo/odata2/core/edm/EdmTime.java | 3 +-
.../provider/EdmServiceMetadataImplProv.java | 3 +-
.../odata2/core/ep/AtomEntityProvider.java | 35 ++--
.../odata2/core/ep/BasicEntityProvider.java | 20 +-
.../ep/EntityProviderProducerException.java | 44 ++++
.../odata2/core/ep/JsonEntityProvider.java | 25 ++-
.../ep/producer/AtomEntryEntityProducer.java | 43 ++--
.../core/ep/producer/AtomFeedProducer.java | 17 +-
.../producer/AtomServiceDocumentProducer.java | 13 +-
.../producer/JsonCollectionEntityProducer.java | 6 +-
.../JsonDeletedEntryEntityProducer.java | 3 +-
.../ep/producer/JsonEntryEntityProducer.java | 10 +-
.../ep/producer/JsonFeedEntityProducer.java | 5 +-
.../ep/producer/JsonLinkEntityProducer.java | 3 +-
.../ep/producer/JsonLinksEntityProducer.java | 3 +-
.../ep/producer/JsonPropertyEntityProducer.java | 16 +-
.../producer/JsonServiceDocumentProducer.java | 8 +-
.../core/ep/producer/TombstoneProducer.java | 5 +-
.../producer/XmlCollectionEntityProducer.java | 3 +-
.../core/ep/producer/XmlLinkEntityProducer.java | 3 +-
.../ep/producer/XmlLinksEntityProducer.java | 3 +-
.../core/ep/producer/XmlMetadataProducer.java | 5 +-
.../ep/producer/XmlPropertyEntityProducer.java | 15 +-
.../odata2/core/rest/ODataExceptionWrapper.java | 11 +-
.../core/servlet/ODataExceptionWrapper.java | 11 +-
.../odata2/core/commons/XmlHelperTest.java | 31 +++
.../odata2/core/edm/EdmSimpleTypeTest.java | 22 +-
.../odata2/core/ep/LoadXMLFactoryTest.java | 6 +-
.../olingo/odata2/core/ep/PerformanceTest.java | 3 +-
.../core/ep/producer/AtomEntryProducerTest.java | 8 +-
.../core/ep/producer/TombstoneProducerTest.java | 3 +-
.../ep/producer/XmlMetadataProducerTest.java | 3 +-
.../fit/ref/InvalidDataInScenarioTest.java | 164 +++++++++++++++
56 files changed, 854 insertions(+), 290 deletions(-)
----------------------------------------------------------------------
[11/15] olingo-odata2 git commit: [OLINGO-937] Improve XmlFactory
creation/caching
Posted by mi...@apache.org.
[OLINGO-937] Improve XmlFactory creation/caching
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/1c81f7ba
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/1c81f7ba
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/1c81f7ba
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 1c81f7ba8b92ede9f4df7eadf148b3539ebfd9e5
Parents: 910d3bc
Author: Michael Bolz <mi...@sap.com>
Authored: Tue Apr 19 22:22:19 2016 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Tue Apr 19 22:26:04 2016 +0200
----------------------------------------------------------------------
.../olingo/odata2/core/commons/XmlHelper.java | 26 +++++++++++++++++++-
.../olingo/odata2/core/debug/DebugInfoBody.java | 4 ++-
.../provider/EdmServiceMetadataImplProv.java | 3 ++-
.../odata2/core/ep/AtomEntityProvider.java | 15 +++++------
.../odata2/core/ep/BasicEntityProvider.java | 3 ++-
.../producer/AtomServiceDocumentProducer.java | 3 ++-
.../odata2/core/ep/LoadXMLFactoryTest.java | 6 ++---
.../olingo/odata2/core/ep/PerformanceTest.java | 3 ++-
.../core/ep/producer/TombstoneProducerTest.java | 3 ++-
.../ep/producer/XmlMetadataProducerTest.java | 3 ++-
10 files changed, 51 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
index 3433186..1d6e79f 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
@@ -21,8 +21,10 @@ package org.apache.olingo.odata2.core.commons;
import java.io.InputStream;
import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.TransformerFactory;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
@@ -31,6 +33,28 @@ public class XmlHelper {
/** Default used charset for reader */
private static final String DEFAULT_CHARSET = "UTF-8";
+
+ private static class XmlInputFactoryHolder {
+ private static final XMLInputFactory INSTANCE = XMLInputFactory.newInstance();
+ }
+
+ private static class XmlOutputFactoryHolder {
+ private static final XMLOutputFactory INSTANCE = XMLOutputFactory.newInstance();
+ }
+ private static class TransformerFactoryHolder {
+ private static final TransformerFactory INSTANCE = TransformerFactory.newInstance();
+ }
+
+ public static XMLInputFactory getXMLInputFactory() {
+ return XmlInputFactoryHolder.INSTANCE;
+ }
+ public static XMLOutputFactory getXMLOutputFactory() {
+ return XmlOutputFactoryHolder.INSTANCE;
+ }
+ public static TransformerFactory getTransformerFactory() {
+ return TransformerFactoryHolder.INSTANCE;
+ }
+
public static XMLStreamReader createStreamReader(final Object content) throws EntityProviderException {
if (content == null) {
throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT
@@ -38,7 +62,7 @@ public class XmlHelper {
}
XMLStreamReader streamReader;
try {
- XMLInputFactory factory = XMLInputFactory.newInstance();
+ XMLInputFactory factory = getXMLInputFactory();
factory.setProperty(XMLInputFactory.IS_VALIDATING, false);
factory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java
index 4954c75..e2ea936 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java
@@ -36,6 +36,7 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.olingo.odata2.api.commons.HttpContentType;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.BasicEntityProvider;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -117,7 +118,8 @@ public class DebugInfoBody implements DebugInfo {
private String formatXml(final String xml) throws IOException {
try {
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ final TransformerFactory transformerFactory = XmlHelper.getTransformerFactory();
+ Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
StreamResult outputTarget = new StreamResult(new StringWriter());
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java
index e7853eb..3b2558a 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java
@@ -42,6 +42,7 @@ import org.apache.olingo.odata2.api.edm.provider.Property;
import org.apache.olingo.odata2.api.edm.provider.Schema;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer;
import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
@@ -72,7 +73,7 @@ public class EdmServiceMetadataImplProv implements EdmServiceMetadata {
try {
writer = new OutputStreamWriter(csb.getOutputStream(), "UTF-8");
- XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
+ XMLStreamWriter xmlStreamWriter = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(writer);
XmlMetadataProducer.writeMetadata(metadata, xmlStreamWriter, null);
return csb.getInputStream();
} catch (XMLStreamException e) {
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/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 acdf998..0977bec 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
@@ -52,6 +52,7 @@ import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder
import org.apache.olingo.odata2.api.servicedocument.ServiceDocument;
import org.apache.olingo.odata2.core.commons.ContentType;
import org.apache.olingo.odata2.core.commons.ContentType.ODataFormat;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
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.AtomServiceDocumentConsumer;
@@ -107,7 +108,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
XmlErrorDocumentProducer producer = new XmlErrorDocumentProducer();
producer.writeErrorDocument(writer, errorCode, message, locale, innerError);
@@ -162,7 +163,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
AtomEntryEntityProducer as = new AtomEntryEntityProducer(properties);
@@ -198,7 +199,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
XmlPropertyEntityProducer ps = new XmlPropertyEntityProducer(false, true);
@@ -225,7 +226,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
AtomFeedProducer atomFeedProvider = new AtomFeedProducer(properties);
@@ -254,7 +255,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
XmlLinkEntityProducer entity = new XmlLinkEntityProducer(properties);
@@ -283,7 +284,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
XmlLinksEntityProducer entity = new XmlLinksEntityProducer(properties);
@@ -310,7 +311,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
try {
OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ XMLStreamWriter writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
XmlCollectionEntityProducer.append(writer, propertyInfo, data);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
index 7d9a59c..0b34b42 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
@@ -51,6 +51,7 @@ import org.apache.olingo.odata2.api.edm.provider.Schema;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.processor.ODataResponse;
import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer;
import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
@@ -242,7 +243,7 @@ public class BasicEntityProvider {
CircleStreamBuffer csb = new CircleStreamBuffer();
try {
writer = new OutputStreamWriter(csb.getOutputStream(), DEFAULT_CHARSET);
- XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
+ XMLStreamWriter xmlStreamWriter = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(writer);
XmlMetadataProducer.writeMetadata(metadata, xmlStreamWriter, predefinedNamespaces);
} catch (UnsupportedEncodingException e) {
throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
index d5827e2..ffd3748 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
@@ -33,6 +33,7 @@ import org.apache.olingo.odata2.api.edm.EdmServiceMetadata;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -57,7 +58,7 @@ public class AtomServiceDocumentProducer {
EdmServiceMetadata serviceMetadata = edm.getServiceMetadata();
try {
- XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
+ XMLStreamWriter xmlStreamWriter = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(writer);
xmlStreamWriter.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
xmlStreamWriter.setPrefix(Edm.PREFIX_XML, Edm.NAMESPACE_XML_1998);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/LoadXMLFactoryTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/LoadXMLFactoryTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/LoadXMLFactoryTest.java
index 3af05cd..3aae2dd 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/LoadXMLFactoryTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/LoadXMLFactoryTest.java
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -26,7 +26,7 @@ import javax.xml.stream.XMLOutputFactory;
import org.junit.Test;
/**
- *
+ *
*/
public class LoadXMLFactoryTest {
// CHECKSTYLE:OFF
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/PerformanceTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/PerformanceTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/PerformanceTest.java
index e7ab5b9..b97a0b9 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/PerformanceTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/PerformanceTest.java
@@ -36,6 +36,7 @@ import org.apache.olingo.odata2.api.edm.EdmEntitySet;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.producer.AtomEntryEntityProducer;
import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
@@ -79,7 +80,7 @@ public class PerformanceTest extends AbstractProviderTest {
outStream = new ByteArrayOutputStream();
}
- writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, "utf-8");
+ writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, "utf-8");
writer.writeStartElement("junit");
writer.writeDefaultNamespace(Edm.NAMESPACE_ATOM_2005);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducerTest.java
index 11fc21a..aa2829d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducerTest.java
@@ -40,6 +40,7 @@ import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
import org.apache.olingo.odata2.api.ep.callback.TombstoneCallback;
import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.AbstractProviderTest;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
@@ -65,7 +66,7 @@ public class TombstoneProducerTest extends AbstractProviderTest {
public void initialize() throws Exception {
csb = new CircleStreamBuffer();
OutputStream outStream = csb.getOutputStream();
- writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
+ writer = XmlHelper.getXMLOutputFactory().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
defaultProperties = EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
defaultEia =
EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"),
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/1c81f7ba/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducerTest.java
index eb2a795..83961b7 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducerTest.java
@@ -41,6 +41,7 @@ import org.apache.olingo.odata2.api.edm.provider.Property;
import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
import org.apache.olingo.odata2.api.edm.provider.Schema;
import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
+import org.apache.olingo.odata2.core.commons.XmlHelper;
import org.apache.olingo.odata2.core.ep.AbstractXmlProducerTestHelper;
import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
import org.apache.olingo.odata2.testutil.helper.StringHelper;
@@ -60,7 +61,7 @@ public class XmlMetadataProducerTest extends AbstractXmlProducerTestHelper {
@Before
public void before() {
- xmlStreamWriterFactory = XMLOutputFactory.newInstance();
+ xmlStreamWriterFactory = XmlHelper.getXMLOutputFactory();
}
@Test
[12/15] olingo-odata2 git commit: [OLINGO-937] Changes in test
Posted by mi...@apache.org.
[OLINGO-937] Changes in test
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/0a00f197
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/0a00f197
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/0a00f197
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 0a00f197f53585b6eb6c69551eca0eb19c473fdc
Parents: 1c81f7b
Author: Michael Bolz <mi...@sap.com>
Authored: Wed Apr 20 09:48:09 2016 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Apr 20 09:48:09 2016 +0200
----------------------------------------------------------------------
.../olingo/odata2/core/commons/XmlHelper.java | 8 ++---
.../odata2/core/commons/XmlHelperTest.java | 31 ++++++++++++++++++++
2 files changed, 34 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/0a00f197/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
index 1d6e79f..e5379e2 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
@@ -33,15 +33,13 @@ public class XmlHelper {
/** Default used charset for reader */
private static final String DEFAULT_CHARSET = "UTF-8";
-
- private static class XmlInputFactoryHolder {
+ static class XmlInputFactoryHolder {
private static final XMLInputFactory INSTANCE = XMLInputFactory.newInstance();
}
-
- private static class XmlOutputFactoryHolder {
+ static class XmlOutputFactoryHolder {
private static final XMLOutputFactory INSTANCE = XMLOutputFactory.newInstance();
}
- private static class TransformerFactoryHolder {
+ static class TransformerFactoryHolder {
private static final TransformerFactory INSTANCE = TransformerFactory.newInstance();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/0a00f197/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/commons/XmlHelperTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/commons/XmlHelperTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/commons/XmlHelperTest.java
index dc8fb77..e633e66 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/commons/XmlHelperTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/commons/XmlHelperTest.java
@@ -25,6 +25,8 @@ import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
@@ -35,6 +37,7 @@ import org.apache.olingo.odata2.api.ep.EntityProvider;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
import org.apache.olingo.odata2.testutil.mock.MockFacade;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
@@ -87,13 +90,41 @@ public class XmlHelperTest {
" <data>&rules;</data>" +
"</extract>";
+ private static Object beforeXmlInputFactory;
+
@BeforeClass
public static void beforeClass() {
// CHECKSTYLE:OFF
System.setProperty("javax.xml.stream.XMLInputFactory", "com.ctc.wstx.stax.WstxInputFactory"); // NOSONAR
+ //
+ beforeXmlInputFactory = replaceXmlInputFactoryInstance(XMLInputFactory.newInstance());
// CHECKSTYLE:ON
}
+ @AfterClass
+ public static void afterClass() {
+ replaceXmlInputFactoryInstance(beforeXmlInputFactory);
+ }
+
+ private static Object replaceXmlInputFactoryInstance(Object newInstance) {
+ try {
+ Field field = XmlHelper.XmlInputFactoryHolder.class.getDeclaredField("INSTANCE");
+ field.setAccessible(true);
+
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+
+ Object replaced = field.get(null);
+ field.set(null, newInstance);
+ return replaced;
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
@Test
public void createReader() throws Exception {
InputStream content = new ByteArrayInputStream(XML.getBytes("UTF-8"));
[14/15] olingo-odata2 git commit: [OLINGO-941] Fixed NPE for
navigation property selection
Posted by mi...@apache.org.
[OLINGO-941] Fixed NPE for navigation property selection
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/768bc4c6
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/768bc4c6
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/768bc4c6
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 768bc4c65f0869d89b02349f5b9bfffd2abc378d
Parents: f87b681
Author: mibo <mi...@mirb.de>
Authored: Mon Apr 25 20:35:39 2016 +0200
Committer: mibo <mi...@mirb.de>
Committed: Mon Apr 25 20:35:39 2016 +0200
----------------------------------------------------------------------
.../jpa/processor/core/ODataJPAResponseBuilderDefault.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/768bc4c6/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/odata2/jpa/processor/core/ODataJPAResponseBuilderDefault.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderDefault.java
index 3b43001..0517e48 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderDefault.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderDefault.java
@@ -622,12 +622,12 @@ public final class ODataJPAResponseBuilderDefault implements ODataJPAResponseBui
for (EdmProperty keyProperty : entity.getKeyProperties()) {
flag = true;
for (SelectItem selectedItem : selectItems) {
- if (selectedItem.isStar() == false && selectedItem.getProperty().equals(keyProperty)) {
+ if (!selectedItem.isStar() && keyProperty.equals(selectedItem.getProperty())) {
flag = false;
break;
}
}
- if (flag == true) {
+ if (flag) {
selectPropertyList.add(keyProperty);
}
}
[09/15] olingo-odata2 git commit: Merge branch 'master' into
OLINGO-895
Posted by mi...@apache.org.
Merge branch 'master' into OLINGO-895
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/b081eed8
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/b081eed8
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/b081eed8
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: b081eed85729e789bdbfe8640a47fe58c12e1c33
Parents: 599991e bef01c2
Author: Christian Amend <ch...@sap.com>
Authored: Tue Apr 12 16:21:16 2016 +0200
Committer: Christian Amend <ch...@sap.com>
Committed: Tue Apr 12 16:21:16 2016 +0200
----------------------------------------------------------------------
odata2-lib/odata-core/pom.xml | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
[08/15] olingo-odata2 git commit: [OLINGO-895] test case fixes for
virtual access changes
Posted by mi...@apache.org.
[OLINGO-895] test case fixes for virtual access changes
Signed-off-by: Christian Amend <ch...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/599991e1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/599991e1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/599991e1
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 599991e170d6a636eb7d5a39f279a75908616024
Parents: 32689c1
Author: Shankara G <sh...@sap.com>
Authored: Thu Feb 25 10:55:07 2016 +0530
Committer: Christian Amend <ch...@sap.com>
Committed: Tue Apr 12 16:10:07 2016 +0200
----------------------------------------------------------------------
.../processor/core/access/data/JPAEntity.java | 210 +++++++++++--------
.../core/access/data/JPAEntityParser.java | 6 +-
.../core/ODataJPAResponseBuilderTest.java | 4 +-
.../JPAEntityParserForStaticMethodTest.java | 72 ++++++-
.../core/access/data/JPAEntityParserTest.java | 29 ++-
.../processor/core/mock/data/EdmMockUtil.java | 4 +-
6 files changed, 218 insertions(+), 107 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
index e8bcbeb..793e151 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
@@ -49,6 +49,7 @@ import org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAModelException;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmMapping;
+import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl;
public class JPAEntity {
@@ -204,91 +205,19 @@ public class JPAEntity {
this.jpaEntity = jpaEntity;
}
- @SuppressWarnings("unchecked")
protected void setComplexProperty(Method accessModifier, final Object jpaEntity,
- final EdmStructuralType edmComplexType, final HashMap<String, Object> propertyValue, String propertyName)
+ final EdmStructuralType edmComplexType, final HashMap<String, Object> propertyValue)
throws EdmException, IllegalAccessException, IllegalArgumentException, InvocationTargetException,
InstantiationException, ODataJPARuntimeException, NoSuchMethodException, SecurityException, SQLException {
- JPAEdmMapping mapping = (JPAEdmMapping) edmComplexType.getMapping();
- Object embeddableObject = mapping.getJPAType().newInstance();
- accessModifier.invoke(jpaEntity, embeddableObject);
-
- HashMap<String, Method> accessModifiers =
- jpaEntityParser.getAccessModifiers(embeddableObject, edmComplexType, JPAEntityParser.ACCESS_MODIFIER_SET);
-
- for (String edmPropertyName : edmComplexType.getPropertyNames()) {
- EdmTyped edmTyped = (EdmTyped) edmComplexType.getProperty(edmPropertyName);
- accessModifier = accessModifiers.get(edmPropertyName);
- if (edmTyped.getType().getKind().toString().equals(EdmTypeKind.COMPLEX.toString())) {
- EdmStructuralType structualType = (EdmStructuralType) edmTyped.getType();
- setComplexProperty(accessModifier, embeddableObject, structualType, (HashMap<String, Object>) propertyValue
- .get(edmPropertyName),propertyName);
- } else {
- setProperty(accessModifier, embeddableObject, propertyValue.get(edmPropertyName), (EdmSimpleType) edmTyped
- .getType(),propertyName);
- }
- }
+ setComplexProperty(accessModifier, jpaEntity, edmComplexType, propertyValue, null);
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
protected void setProperty(final Method method, final Object entity, final Object entityPropertyValue,
- final EdmSimpleType type, String propertyName) throws
+ final EdmSimpleType type) throws
IllegalAccessException, IllegalArgumentException, InvocationTargetException, ODataJPARuntimeException {
- if (entityPropertyValue != null) {
- if(method.getParameterTypes().length>1) {
- method.invoke(entity, propertyName,entityPropertyValue);
- return;
- }
- Class<?> parameterType = method.getParameterTypes()[0];
- if (type != null && type.getDefaultType().equals(String.class)) {
- if (parameterType.equals(String.class)) {
- method.invoke(entity, entityPropertyValue);
- } else if (parameterType.equals(char[].class)) {
- char[] characters = ((String) entityPropertyValue).toCharArray();
- method.invoke(entity, characters);
- } else if (parameterType.equals(char.class)) {
- char c = ((String) entityPropertyValue).charAt(0);
- method.invoke(entity, c);
- } else if (parameterType.equals(Character[].class)) {
- Character[] characters = JPAEntityParser.toCharacterArray((String) entityPropertyValue);
- method.invoke(entity, (Object) characters);
- } else if (parameterType.equals(Character.class)) {
- Character c = Character.valueOf(((String) entityPropertyValue).charAt(0));
- method.invoke(entity, c);
- } else if (parameterType.isEnum()) {
- Enum e = Enum.valueOf((Class<Enum>) parameterType, (String) entityPropertyValue);
- method.invoke(entity, e);
- }
- } else if (parameterType.equals(Blob.class)) {
- if (onJPAWriteContent == null) {
- throw ODataJPARuntimeException
- .throwException(ODataJPARuntimeException.ERROR_JPA_BLOB_NULL, null);
- } else {
- method.invoke(entity, onJPAWriteContent.getJPABlob((byte[]) entityPropertyValue));
- }
- } else if (parameterType.equals(Clob.class)) {
- if (onJPAWriteContent == null) {
- throw ODataJPARuntimeException
- .throwException(ODataJPARuntimeException.ERROR_JPA_CLOB_NULL, null);
- } else {
- method.invoke(entity, onJPAWriteContent.getJPAClob(((String) entityPropertyValue).toCharArray()));
- }
- } else if (parameterType.equals(Timestamp.class)) {
- Timestamp ts = new Timestamp(((Calendar) entityPropertyValue).getTimeInMillis());
- method.invoke(entity, ts);
- } else if (parameterType.equals(java.util.Date.class)) {
- method.invoke(entity, ((Calendar) entityPropertyValue).getTime());
- } else if (parameterType.equals(java.sql.Date.class)) {
- long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
- method.invoke(entity, new java.sql.Date(timeInMs));
- } else if (parameterType.equals(java.sql.Time.class)) {
- long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
- method.invoke(entity, new java.sql.Time(timeInMs));
- } else {
- method.invoke(entity, entityPropertyValue);
- }
- }
+
+ setProperty(method, entity, entityPropertyValue, type, null);
}
protected void setEmbeddableKeyProperty(final HashMap<String, String> embeddableKeys,
@@ -412,9 +341,14 @@ public class JPAEntity {
propertyNames = oDataEntryProperties.keySet();
}
+ boolean isVirtual = false;
for (String propertyName : propertyNames) {
EdmTyped edmTyped = (EdmTyped) oDataEntityType.getProperty(propertyName);
-
+ if (edmTyped instanceof EdmProperty) {
+ isVirtual = ((JPAEdmMappingImpl)((EdmProperty) edmTyped).getMapping()).isVirtualAccess();
+ } else {
+ isVirtual = false;
+ }
Method accessModifier = null;
switch (edmTyped.getType().getKind()) {
@@ -425,16 +359,26 @@ public class JPAEntity {
}
}
accessModifier = accessModifiersWrite.get(propertyName);
- setProperty(accessModifier, jpaEntity, oDataEntryProperties.get(propertyName), (EdmSimpleType) edmTyped
- .getType(),propertyName);
-
+ if (isVirtual) {
+ setProperty(accessModifier, jpaEntity, oDataEntryProperties.get(propertyName), (EdmSimpleType) edmTyped
+ .getType(), propertyName);
+ } else {
+ setProperty(accessModifier, jpaEntity, oDataEntryProperties.get(propertyName), (EdmSimpleType) edmTyped
+ .getType());
+ }
break;
case COMPLEX:
structuralType = (EdmStructuralType) edmTyped.getType();
accessModifier = accessModifiersWrite.get(propertyName);
- setComplexProperty(accessModifier, jpaEntity,
- structuralType,
- (HashMap<String, Object>) oDataEntryProperties.get(propertyName),propertyName);
+ if (isVirtual) {
+ setComplexProperty(accessModifier, jpaEntity,
+ structuralType,
+ (HashMap<String, Object>) oDataEntryProperties.get(propertyName), propertyName);
+ } else {
+ setComplexProperty(accessModifier, jpaEntity,
+ structuralType,
+ (HashMap<String, Object>) oDataEntryProperties.get(propertyName));
+ }
break;
case NAVIGATION:
case ENTITY:
@@ -479,4 +423,102 @@ public class JPAEntity {
.addContent(e.getMessage()), e);
}
}
+
+ @SuppressWarnings("unchecked")
+ protected void setComplexProperty(Method accessModifier, final Object jpaEntity,
+ final EdmStructuralType edmComplexType, final HashMap<String, Object> propertyValue, String propertyName)
+ throws EdmException, IllegalAccessException, IllegalArgumentException, InvocationTargetException,
+ InstantiationException, ODataJPARuntimeException, NoSuchMethodException, SecurityException, SQLException {
+
+ JPAEdmMapping mapping = (JPAEdmMapping) edmComplexType.getMapping();
+ Object embeddableObject = mapping.getJPAType().newInstance();
+ accessModifier.invoke(jpaEntity, embeddableObject);
+
+ HashMap<String, Method> accessModifiers =
+ jpaEntityParser.getAccessModifiers(embeddableObject, edmComplexType,
+ JPAEntityParser.ACCESS_MODIFIER_SET);
+
+ for (String edmPropertyName : edmComplexType.getPropertyNames()) {
+ EdmTyped edmTyped = (EdmTyped) edmComplexType.getProperty(edmPropertyName);
+ accessModifier = accessModifiers.get(edmPropertyName);
+ if (edmTyped.getType().getKind().toString().equals(EdmTypeKind.COMPLEX.toString())) {
+ EdmStructuralType structualType = (EdmStructuralType) edmTyped.getType();
+ if (propertyName != null) {
+ setComplexProperty(accessModifier, embeddableObject, structualType,
+ (HashMap<String, Object>) propertyValue.get(edmPropertyName), propertyName);
+ } else {
+ setComplexProperty(accessModifier, embeddableObject, structualType,
+ (HashMap<String, Object>) propertyValue.get(edmPropertyName));
+ }
+ } else {
+ if (propertyName != null) {
+ setProperty(accessModifier, embeddableObject, propertyValue.get(edmPropertyName),
+ (EdmSimpleType) edmTyped.getType(), propertyName);
+ } else {
+ setProperty(accessModifier, embeddableObject, propertyValue.get(edmPropertyName),
+ (EdmSimpleType) edmTyped.getType());
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ protected void setProperty(final Method method, final Object entity, final Object entityPropertyValue,
+ final EdmSimpleType type, String propertyName) throws
+ IllegalAccessException, IllegalArgumentException, InvocationTargetException, ODataJPARuntimeException {
+ if (entityPropertyValue != null) {
+ if (propertyName != null) {
+ method.invoke(entity, propertyName, entityPropertyValue);
+ return;
+ }
+ Class<?> parameterType = method.getParameterTypes()[0];
+ if (type != null && type.getDefaultType().equals(String.class)) {
+ if (parameterType.equals(String.class)) {
+ method.invoke(entity, entityPropertyValue);
+ } else if (parameterType.equals(char[].class)) {
+ char[] characters = ((String) entityPropertyValue).toCharArray();
+ method.invoke(entity, characters);
+ } else if (parameterType.equals(char.class)) {
+ char c = ((String) entityPropertyValue).charAt(0);
+ method.invoke(entity, c);
+ } else if (parameterType.equals(Character[].class)) {
+ Character[] characters = JPAEntityParser.toCharacterArray((String) entityPropertyValue);
+ method.invoke(entity, (Object) characters);
+ } else if (parameterType.equals(Character.class)) {
+ Character c = Character.valueOf(((String) entityPropertyValue).charAt(0));
+ method.invoke(entity, c);
+ } else if (parameterType.isEnum()) {
+ Enum e = Enum.valueOf((Class<Enum>) parameterType, (String) entityPropertyValue);
+ method.invoke(entity, e);
+ }
+ } else if (parameterType.equals(Blob.class)) {
+ if (onJPAWriteContent == null) {
+ throw ODataJPARuntimeException
+ .throwException(ODataJPARuntimeException.ERROR_JPA_BLOB_NULL, null);
+ } else {
+ method.invoke(entity, onJPAWriteContent.getJPABlob((byte[]) entityPropertyValue));
+ }
+ } else if (parameterType.equals(Clob.class)) {
+ if (onJPAWriteContent == null) {
+ throw ODataJPARuntimeException
+ .throwException(ODataJPARuntimeException.ERROR_JPA_CLOB_NULL, null);
+ } else {
+ method.invoke(entity, onJPAWriteContent.getJPAClob(((String) entityPropertyValue).toCharArray()));
+ }
+ } else if (parameterType.equals(Timestamp.class)) {
+ Timestamp ts = new Timestamp(((Calendar) entityPropertyValue).getTimeInMillis());
+ method.invoke(entity, ts);
+ } else if (parameterType.equals(java.util.Date.class)) {
+ method.invoke(entity, ((Calendar) entityPropertyValue).getTime());
+ } else if (parameterType.equals(java.sql.Date.class)) {
+ long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
+ method.invoke(entity, new java.sql.Date(timeInMs));
+ } else if (parameterType.equals(java.sql.Time.class)) {
+ long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
+ method.invoke(entity, new java.sql.Time(timeInMs));
+ } else {
+ method.invoke(entity, entityPropertyValue);
+ }
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
index c8e3c8e..4c1d439 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
@@ -175,7 +175,7 @@ public final class JPAEntityParser {
navigationProperty.getMapping(), ACCESS_MODIFIER_GET);
Method getterMethod = null;
if(((JPAEdmMapping)navigationProperty.getMapping()).isVirtualAccess()) {
- getterMethod = jpaEntity.getClass().getMethod("get", String.class);
+ getterMethod = jpaEntity.getClass().getMethod(ACCESS_MODIFIER_GET, String.class);
}else{
getterMethod = jpaEntity.getClass()
.getMethod(methodName, (Class<?>[]) null);
@@ -556,7 +556,7 @@ public final class JPAEntityParser {
if (accessModifier.equals(ACCESS_MODIFIER_SET)) {
JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping();
if(jpaEdmMapping.isVirtualAccess()) {
- accessModifierMap.put(propertyName, jpaEntityType.getMethod("set",
+ accessModifierMap.put(propertyName, jpaEntityType.getMethod(ACCESS_MODIFIER_SET,
new Class<?>[] { String.class,Object.class }));
}else {
accessModifierMap.put(propertyName, jpaEntityType.getMethod(methodName,
@@ -565,7 +565,7 @@ public final class JPAEntityParser {
} else {
JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping();
if(jpaEdmMapping.isVirtualAccess()) {
- method = jpaEntityType.getMethod("get", String.class);
+ method = jpaEntityType.getMethod(ACCESS_MODIFIER_GET, String.class);
}else{
method = jpaEntityType.getMethod(methodName, (Class<?>[]) null);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
index 049b365..ebf268f 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
@@ -62,6 +62,7 @@ import org.apache.olingo.odata2.jpa.processor.api.ODataJPAResponseBuilder;
import org.apache.olingo.odata2.jpa.processor.api.access.JPAPaging;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants;
+import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl;
import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmTestModelView;
import org.easymock.EasyMock;
import org.junit.Before;
@@ -384,9 +385,10 @@ public class ODataJPAResponseBuilderTest extends JPAEdmTestModelView {
}
EasyMock.replay(edmType);
EdmProperty edmProperty = EasyMock.createMock(EdmProperty.class);
- EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
+ JPAEdmMappingImpl edmMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
EasyMock.expect(edmMapping.getInternalName()).andStubReturn("soId");
EasyMock.expect(edmMapping.getMediaResourceMimeTypeKey()).andReturn(null);
+ EasyMock.expect(((JPAEdmMappingImpl) edmMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping);
try {
EasyMock.expect(edmProperty.getName()).andStubReturn("ID");
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserForStaticMethodTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserForStaticMethodTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserForStaticMethodTest.java
index 9a18f41..7a277fc 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserForStaticMethodTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserForStaticMethodTest.java
@@ -84,7 +84,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharacter() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharacter", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertEquals("A", output);
} catch (NoSuchMethodException e) {
@@ -100,7 +100,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharacterNull() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharacterNull", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertNull(output);
} catch (NoSuchMethodException e) {
@@ -116,7 +116,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharacterArray() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharacterArray", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertEquals("AB", output);
} catch (NoSuchMethodException e) {
@@ -132,7 +132,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharacterArrayNull() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharacterArrayNull", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertNull(output);
} catch (NoSuchMethodException e) {
@@ -148,7 +148,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyChar() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getChar", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertEquals("A", output);
} catch (NoSuchMethodException e) {
@@ -164,7 +164,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharNull() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharNull", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertNull(output);
} catch (NoSuchMethodException e) {
@@ -180,7 +180,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharArray() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharArray", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertEquals("AB", output);
} catch (NoSuchMethodException e) {
@@ -196,7 +196,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharArrayNull() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharArrayNull", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertNull(output);
} catch (NoSuchMethodException e) {
@@ -212,7 +212,7 @@ public class JPAEntityParserForStaticMethodTest {
public void testGetPropertyCharArrayValueNull() {
try {
Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getCharArrayValueNull", (Class<?>[]) null);
- String output = (String) JPAEntityParser.getPropertyValue(method, this);
+ String output = (String) JPAEntityParser.getPropertyValue(method, this, "");
assertEquals("A\u0000", output);
} catch (NoSuchMethodException e) {
@@ -225,6 +225,41 @@ public class JPAEntityParserForStaticMethodTest {
}
@Test
+ public void testGetPropertyObject() {
+
+ try {
+ Method method = JPAEntityParserForStaticMethodTest.class.getMethod("getObject", (Class<?>[]) null);
+ Object output = (Object) JPAEntityParser.getPropertyValue(method, this, "");
+ assertTrue(output != null);
+
+ } catch (NoSuchMethodException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ } catch (SecurityException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ } catch (ODataJPARuntimeException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ }
+ }
+
+@Test
+ public void testGetPropertyObjectWithParameters() {
+
+ try {
+ Method method = JPAEntityParserForStaticMethodTest.class.
+ getMethod("getObjectWithParameters", getParameterTypeForMethod("getObjectWithParameters"));
+ Object output = (Object) JPAEntityParser.getPropertyValue(method, this, "obj1");
+ assertTrue(output != null);
+
+ } catch (NoSuchMethodException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ } catch (SecurityException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ } catch (ODataJPARuntimeException e) {
+ fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+ }
+ }
+
+@Test
public void testGetString() {
char[] expectedChar = new char[] { 'a', 'b', 'c' };
try {
@@ -315,4 +350,23 @@ public class JPAEntityParserForStaticMethodTest {
public char[] getCharArrayValueNull() {
return new char[] { 'A', '\u0000' };
}
+
+ public Object getObject() {
+ return new Object();
+ }
+
+ public Object getObjectWithParameters(Object ob1) {
+ return new Object();
+ }
+
+ private Class<?>[] getParameterTypeForMethod(String methodName) {
+
+ Method[] methods = JPAEntityParserForStaticMethodTest.class.getMethods();
+ for (Method method: methods) {
+ if (method.getName().equals(methodName)) {
+ return method.getParameterTypes();
+ }
+ }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTest.java
index 01bf774..8035f2b 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTest.java
@@ -39,6 +39,7 @@ import org.apache.olingo.odata2.api.edm.EdmType;
import org.apache.olingo.odata2.api.edm.EdmTypeKind;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants;
+import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl;
import org.easymock.EasyMock;
import org.junit.Test;
@@ -66,14 +67,15 @@ public class JPAEntityParserTest {
EdmType edmType = EasyMock.createMock(EdmType.class);
EdmProperty edmTyped01 = EasyMock.createMock(EdmProperty.class);
EdmType edmType01 = EasyMock.createMock(EdmType.class);
- EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
- EdmMapping edmMapping01 = EasyMock.createMock(EdmMapping.class);
+ EdmMapping edmMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
+ EdmMapping edmMapping01 = EasyMock.createMock(JPAEdmMappingImpl.class);
try {
EasyMock.expect(edmType.getKind()).andStubReturn(EdmTypeKind.SIMPLE);
EasyMock.expect(edmTyped.getName()).andStubReturn("identifier");
EasyMock.replay(edmType);
EasyMock.expect(edmMapping.getInternalName()).andStubReturn("id");
+ EasyMock.expect(((JPAEdmMappingImpl) edmMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping);
EasyMock.expect(edmTyped.getType()).andStubReturn(edmType);
EasyMock.expect(edmTyped.getMapping()).andStubReturn(edmMapping);
@@ -84,6 +86,7 @@ public class JPAEntityParserTest {
EasyMock.expect(edmTyped01.getName()).andStubReturn("Value");
EasyMock.replay(edmType01);
EasyMock.expect(edmMapping01.getInternalName()).andStubReturn("value");
+ EasyMock.expect(((JPAEdmMappingImpl) edmMapping01).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping01);
EasyMock.expect(edmTyped01.getType()).andStubReturn(edmType01);
EasyMock.expect(edmTyped01.getMapping()).andStubReturn(edmMapping01);
@@ -119,8 +122,8 @@ public class JPAEntityParserTest {
EdmType edmType = EasyMock.createMock(EdmType.class);
EdmProperty edmTyped01 = EasyMock.createMock(EdmProperty.class);
EdmType edmType01 = EasyMock.createMock(EdmType.class);
- EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
- EdmMapping edmMapping01 = EasyMock.createMock(EdmMapping.class);
+ EdmMapping edmMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
+ EdmMapping edmMapping01 = EasyMock.createMock(JPAEdmMappingImpl.class);
try {
EasyMock.expect(edmType.getKind())
@@ -128,6 +131,7 @@ public class JPAEntityParserTest {
EasyMock.expect(edmType.getName()).andReturn("identifier");
EasyMock.replay(edmType);
EasyMock.expect(edmMapping.getInternalName()).andStubReturn("id");
+ EasyMock.expect(((JPAEdmMappingImpl)edmMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping);
EasyMock.expect(edmTyped.getType()).andStubThrow(
new EdmException(null));
@@ -143,6 +147,8 @@ public class JPAEntityParserTest {
EasyMock.replay(edmType01);
EasyMock.expect(edmMapping01.getInternalName()).andStubReturn(
"value");
+ EasyMock.expect(((JPAEdmMappingImpl)edmMapping01).isVirtualAccess())
+ .andStubReturn(false);
EasyMock.replay(edmMapping01);
EasyMock.expect(edmTyped01.getName()).andReturn("value").anyTimes();
EasyMock.expect(edmTyped01.getType()).andStubReturn(edmType01);
@@ -183,9 +189,10 @@ public class JPAEntityParserTest {
List<EdmNavigationProperty> navigationPropertyList = new ArrayList<EdmNavigationProperty>();
// Mocking a navigation property and its mapping object
EdmNavigationProperty navigationProperty = EasyMock.createMock(EdmNavigationProperty.class);
- EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
+ JPAEdmMappingImpl edmMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
try {
EasyMock.expect(edmMapping.getInternalName()).andStubReturn("relatedEntity");
+ EasyMock.expect(((JPAEdmMappingImpl)edmMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping);
EasyMock.expect(navigationProperty.getName()).andStubReturn("RelatedEntities");
EasyMock.expect(navigationProperty.getMapping()).andStubReturn(edmMapping);
@@ -220,13 +227,14 @@ public class JPAEntityParserTest {
EdmType edmType1 = EasyMock.createMock(EdmType.class);
EdmStructuralType edmType2 = EasyMock.createMock(EdmStructuralType.class);
EdmType edmComplexType = EasyMock.createMock(EdmType.class);
- EdmMapping mapping1 = EasyMock.createMock(EdmMapping.class);
- EdmMapping mapping2 = EasyMock.createMock(EdmMapping.class);
- EdmMapping complexMapping = EasyMock.createMock(EdmMapping.class);
+ JPAEdmMappingImpl mapping1 = EasyMock.createMock(JPAEdmMappingImpl.class);
+ JPAEdmMappingImpl mapping2 = EasyMock.createMock(JPAEdmMappingImpl.class);
+ JPAEdmMappingImpl complexMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
try {
EasyMock.expect(edmType1.getKind()).andStubReturn(EdmTypeKind.SIMPLE);
EasyMock.replay(edmType1);
EasyMock.expect(mapping1.getInternalName()).andStubReturn("id");
+ EasyMock.expect(((JPAEdmMappingImpl) mapping1).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(mapping1);
EasyMock.expect(edmProperty1.getName()).andStubReturn("Id");
EasyMock.expect(edmProperty1.getMapping()).andStubReturn(mapping1);
@@ -236,6 +244,7 @@ public class JPAEntityParserTest {
EasyMock.expect(edmComplexType.getKind()).andStubReturn(EdmTypeKind.SIMPLE);
EasyMock.replay(edmComplexType);
EasyMock.expect(complexMapping.getInternalName()).andStubReturn("order");
+ EasyMock.expect(((JPAEdmMappingImpl) complexMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(complexMapping);
EasyMock.expect(edmComplexProperty.getName()).andStubReturn("OrderName");
EasyMock.expect(edmComplexProperty.getMapping()).andStubReturn(complexMapping);
@@ -248,6 +257,7 @@ public class JPAEntityParserTest {
EasyMock.expect(edmType2.getPropertyNames()).andStubReturn(propertyNames);
EasyMock.replay(edmType2);
EasyMock.expect(mapping2.getInternalName()).andStubReturn("relatedEntity");
+ EasyMock.expect(((JPAEdmMappingImpl) mapping2).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(mapping2);
EasyMock.expect(edmProperty2.getName()).andStubReturn("Order");
EasyMock.expect(edmProperty2.getMapping()).andStubReturn(mapping2);
@@ -528,8 +538,9 @@ public class JPAEntityParserTest {
private EdmProperty getEdmProperty() {
EdmProperty edmTyped = EasyMock.createMock(EdmProperty.class);
- EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
+ JPAEdmMappingImpl edmMapping = EasyMock.createMock(JPAEdmMappingImpl.class);
EasyMock.expect(edmMapping.getInternalName()).andStubReturn("Field1");
+ EasyMock.expect(((JPAEdmMappingImpl) edmMapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(edmMapping);
EdmType edmType = EasyMock.createMock(EdmType.class);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/599991e1/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/EdmMockUtil.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/EdmMockUtil.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/EdmMockUtil.java
index 7bd7bcf..b0e713e 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/EdmMockUtil.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/EdmMockUtil.java
@@ -42,6 +42,7 @@ import org.apache.olingo.odata2.api.ep.callback.WriteFeedCallbackContext;
import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
import org.apache.olingo.odata2.api.uri.NavigationPropertySegment;
import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants;
+import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl;
import org.easymock.EasyMock;
public class EdmMockUtil {
@@ -320,8 +321,9 @@ public class EdmMockUtil {
EdmType type = EasyMock.createMock(EdmType.class);
EasyMock.expect(type.getKind()).andStubReturn(EdmTypeKind.SIMPLE);
EasyMock.replay(type);
- EdmMapping mapping = EasyMock.createMock(EdmMapping.class);
+ JPAEdmMappingImpl mapping = EasyMock.createMock(JPAEdmMappingImpl.class);
EasyMock.expect(mapping.getInternalName()).andStubReturn("price");
+ EasyMock.expect(((JPAEdmMappingImpl) mapping).isVirtualAccess()).andStubReturn(false);
EasyMock.replay(mapping);
try {
EasyMock.expect(edmProperty.getName()).andStubReturn("price");
[13/15] olingo-odata2 git commit: [OLINGO-929] Fix for deferred link
in update
Posted by mi...@apache.org.
[OLINGO-929] Fix for deferred link in update
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/f87b681c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/f87b681c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/f87b681c
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: f87b681cf068f484fa6a6ec83327be422f0fe6c5
Parents: 0a00f19
Author: mibo <mi...@mirb.de>
Authored: Wed Apr 20 21:55:10 2016 +0200
Committer: mibo <mi...@mirb.de>
Committed: Wed Apr 20 21:55:10 2016 +0200
----------------------------------------------------------------------
.../jpa/processor/core/ODataEntityParser.java | 45 +++++++++++---------
1 file changed, 26 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f87b681c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
index a6ec241..9977219 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
@@ -115,9 +115,9 @@ public final class ODataEntityParser {
final String serviceRoot = odataContext.getPathInfo().getServiceRoot().toString();
final String path =
uriString.startsWith(serviceRoot.toString()) ? uriString.substring(serviceRoot.length()) : uriString;
- final PathSegment pathSegment = getPathSegment(path);
+ final List<PathSegment> pathSegment = getPathSegment(path);
edm = getEdm();
- uri = UriParser.parse(edm, Arrays.asList(pathSegment), Collections.<String, String> emptyMap());
+ uri = UriParser.parse(edm, pathSegment, Collections.<String, String> emptyMap());
} catch (ODataException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
}
@@ -128,8 +128,8 @@ public final class ODataEntityParser {
throws ODataJPARuntimeException {
List<PathSegment> pathSegments = new ArrayList<PathSegment>();
for (String link : linkSegments) {
- PathSegment pathSegment = getPathSegment(link);
- pathSegments.add(pathSegment);
+ List<PathSegment> pathSegment = getPathSegment(link);
+ pathSegments.addAll(pathSegment);
}
UriInfo uriInfo = null;
try {
@@ -143,11 +143,11 @@ public final class ODataEntityParser {
public UriInfo parseBindingLink(final String link, final Map<String, String> options)
throws ODataJPARuntimeException {
- final PathSegment pathSegment = getPathSegment(link);
+ final List<PathSegment> pathSegment = getPathSegment(link);
UriInfo uriInfo = null;
try {
edm = getEdm();
- uriInfo = UriParser.parse(edm, Arrays.asList(pathSegment), options);
+ uriInfo = UriParser.parse(edm, pathSegment, options);
} catch (ODataException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
}
@@ -161,19 +161,26 @@ public final class ODataEntityParser {
return edm;
}
- private PathSegment getPathSegment(final String path) {
- final PathSegment pathSegment = new PathSegment() {
-
- @Override
- public String getPath() {
- return path.replace(serviceRoot, "");
- }
+ private List<PathSegment> getPathSegment(final String path) {
+ String trimmedPath = path.replace(serviceRoot, "");
+
+ final String[] splittedPath = trimmedPath.split("/");
+ final List<PathSegment> pathSegments = new ArrayList<PathSegment>();
+
+ for (final String pathSegmentString : splittedPath) {
+ final PathSegment pathSegment = new PathSegment() {
+ @Override
+ public String getPath() {
+ return pathSegmentString;
+ }
+ @Override
+ public Map<String, List<String>> getMatrixParameters() {
+ return null;
+ }
+ };
+ pathSegments.add(pathSegment);
+ }
- @Override
- public Map<String, List<String>> getMatrixParameters() {
- return null;
- }
- };
- return pathSegment;
+ return pathSegments;
}
}
[04/15] olingo-odata2 git commit: [OLINGO-836] compare to null
handling
Posted by mi...@apache.org.
[OLINGO-836] compare to null handling
Signed-off-by: Michael Bolz <mi...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/27fced0c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/27fced0c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/27fced0c
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 27fced0c26f84852df17d3cd343c0eb7642c95e6
Parents: 2538dcc
Author: tothgya <to...@gmail.com>
Authored: Mon Dec 14 13:38:34 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Thu Mar 3 08:26:45 2016 +0100
----------------------------------------------------------------------
.../jpa/processor/core/ODataExpressionParser.java | 9 ++++++---
.../core/ODataFilterExpressionParserTest.java | 15 +++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/27fced0c/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 a6f7c9b..1141831 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
@@ -135,11 +135,14 @@ public class ODataExpressionParser {
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case EQ:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
- + JPQLStatement.Operator.EQ + JPQLStatement.DELIMITER.SPACE + right
+ + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + JPQLStatement.DELIMITER.SPACE + right
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case NE:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
- + JPQLStatement.Operator.NE + JPQLStatement.DELIMITER.SPACE + right
+ + (!"null".equals(right) ?
+ JPQLStatement.Operator.NE :
+ "IS" + JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.NOT)
+ + JPQLStatement.DELIMITER.SPACE + right
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case LT:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
@@ -428,7 +431,7 @@ public class ODataExpressionParser {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
}
- } else if (edmSimpleType.getDefaultType().equals(Long.class)) {
+ } else if (Long.class.equals(edmSimpleType.getDefaultType())) {
uriLiteral = uriLiteral + JPQLStatement.DELIMITER.LONG; //$NON-NLS-1$
}
return uriLiteral;
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/27fced0c/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 24062a2..a29ba5c 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
@@ -93,6 +93,11 @@ public class ODataFilterExpressionParserTest {
"(((E1.id = '123') AND (E1.id <> '123')) OR ((E1.id = '123') AND (E1.id <> '123')))" };
private static final String[] EXPRESSION_DATETIME = { "date eq datetime'2000-01-01T00:00:00'",
"(E1.date = {ts '2000-01-01 00:00:00.000'})" };
+
+ private static final String[] EXPRESSION_NULL = { "date eq null", "(E1.date IS null)" };
+
+ private static final String[] EXPRESSION_NOT_NULL = { "date ne null", "(E1.date IS NOT null)" };
+
private static Edm edm = null;
@BeforeClass
@@ -205,6 +210,16 @@ public class ODataFilterExpressionParserTest {
assertEquals(EXPRESSION_MEMBER_OR[OUTPUT], parseWhereExpression(EXPRESSION_MEMBER_OR[INPUT], false));
}
+ @Test
+ public void testNull() {
+ assertEquals(EXPRESSION_NULL[OUTPUT], parseWhereExpression(EXPRESSION_NULL[INPUT], false));
+ }
+
+ @Test
+ public void testNotNull() {
+ assertEquals(EXPRESSION_NOT_NULL[OUTPUT], parseWhereExpression(EXPRESSION_NOT_NULL[INPUT], false));
+ }
+
private String parseWhereExpression(final String input, final boolean isExceptionExpected) {
FilterExpression expression;
try {
[02/15] olingo-odata2 git commit: [OLINGO-891] Use nested concat
instead of concat with 3 parameters in JPA Where clauses
Posted by mi...@apache.org.
[OLINGO-891] Use nested concat instead of concat with 3 parameters in JPA Where clauses
Signed-off-by: Michael Bolz <mi...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/8c0d1521
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/8c0d1521
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/8c0d1521
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 8c0d15219993ad9a34c25723907934d33c1d84ed
Parents: 891d3dd
Author: Jan Penninkhof <ja...@penninkhof.com>
Authored: Tue Feb 23 01:59:24 2016 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Feb 24 09:29:13 2016 +0100
----------------------------------------------------------------------
.../olingo/odata2/jpa/processor/core/ODataExpressionParser.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8c0d1521/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 e733337..1479b10 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
@@ -210,9 +210,9 @@ public class ODataExpressionParser {
case SUBSTRINGOF:
if (methodFlag.get() != null && methodFlag.get() == 1) {
methodFlag.set(null);
- return String.format("(CASE WHEN (%s LIKE CONCAT('%%',%s,'%%')) THEN TRUE ELSE FALSE END)", second, first);
+ return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END)", second, first);
} else {
- return String.format("(CASE WHEN (%s LIKE CONCAT('%%',%s,'%%')) THEN TRUE ELSE FALSE END) = true", second,
+ return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END) = true", second,
first);
}
case TOLOWER:
[06/15] olingo-odata2 git commit: [OLINGO-895] First draft for
virtual access implementation
Posted by mi...@apache.org.
[OLINGO-895] First draft for virtual access implementation
Based on the patch files which were contributed to Olingo. The patch files
can be found in our JIRA: https://issues.apache.org/jira/browse/OLINGO-895
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/32689c14
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/32689c14
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/32689c14
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 32689c14548ad4973b97ea970635b951d8f5b96b
Parents: eb806b9
Author: Christian Amend <ch...@sap.com>
Authored: Thu Mar 3 15:42:46 2016 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Thu Mar 3 15:42:46 2016 +0100
----------------------------------------------------------------------
.../jpa/processor/api/model/JPAEdmMapping.java | 4 ++
.../processor/core/access/data/JPAEntity.java | 16 +++--
.../core/access/data/JPAEntityParser.java | 66 +++++++++++++-------
.../processor/core/model/JPAEdmMappingImpl.java | 11 ++++
4 files changed, 69 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/32689c14/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmMapping.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmMapping.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmMapping.java
index 44f0f29..27fb683 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmMapping.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmMapping.java
@@ -75,5 +75,9 @@ public interface JPAEdmMapping {
* @return JPA EntityListener type
*/
public Class<? extends ODataJPATombstoneEntityListener> getODataJPATombstoneEntityListener();
+
+ public boolean isVirtualAccess();
+
+ public void setVirtualAccess(boolean virtualAccess);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/32689c14/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
index 07564d5..e8bcbeb 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
@@ -206,7 +206,7 @@ public class JPAEntity {
@SuppressWarnings("unchecked")
protected void setComplexProperty(Method accessModifier, final Object jpaEntity,
- final EdmStructuralType edmComplexType, final HashMap<String, Object> propertyValue)
+ final EdmStructuralType edmComplexType, final HashMap<String, Object> propertyValue, String propertyName)
throws EdmException, IllegalAccessException, IllegalArgumentException, InvocationTargetException,
InstantiationException, ODataJPARuntimeException, NoSuchMethodException, SecurityException, SQLException {
@@ -223,19 +223,23 @@ public class JPAEntity {
if (edmTyped.getType().getKind().toString().equals(EdmTypeKind.COMPLEX.toString())) {
EdmStructuralType structualType = (EdmStructuralType) edmTyped.getType();
setComplexProperty(accessModifier, embeddableObject, structualType, (HashMap<String, Object>) propertyValue
- .get(edmPropertyName));
+ .get(edmPropertyName),propertyName);
} else {
setProperty(accessModifier, embeddableObject, propertyValue.get(edmPropertyName), (EdmSimpleType) edmTyped
- .getType());
+ .getType(),propertyName);
}
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
protected void setProperty(final Method method, final Object entity, final Object entityPropertyValue,
- final EdmSimpleType type) throws
+ final EdmSimpleType type, String propertyName) throws
IllegalAccessException, IllegalArgumentException, InvocationTargetException, ODataJPARuntimeException {
if (entityPropertyValue != null) {
+ if(method.getParameterTypes().length>1) {
+ method.invoke(entity, propertyName,entityPropertyValue);
+ return;
+ }
Class<?> parameterType = method.getParameterTypes()[0];
if (type != null && type.getDefaultType().equals(String.class)) {
if (parameterType.equals(String.class)) {
@@ -422,7 +426,7 @@ public class JPAEntity {
}
accessModifier = accessModifiersWrite.get(propertyName);
setProperty(accessModifier, jpaEntity, oDataEntryProperties.get(propertyName), (EdmSimpleType) edmTyped
- .getType());
+ .getType(),propertyName);
break;
case COMPLEX:
@@ -430,7 +434,7 @@ public class JPAEntity {
accessModifier = accessModifiersWrite.get(propertyName);
setComplexProperty(accessModifier, jpaEntity,
structuralType,
- (HashMap<String, Object>) oDataEntryProperties.get(propertyName));
+ (HashMap<String, Object>) oDataEntryProperties.get(propertyName),propertyName);
break;
case NAVIGATION:
case ENTITY:
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/32689c14/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
index 03ef879..c8e3c8e 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
@@ -116,7 +116,7 @@ public final class JPAEntityParser {
propertyValue = getEmbeddablePropertyValue(methodName, propertyValue);
}
} else {
- propertyValue = getPropertyValue(accessModifierMap.get(propertyName), propertyValue);
+ propertyValue = getPropertyValue(accessModifierMap.get(propertyName), propertyValue, propertyName);
}
if (property.getType().getKind()
.equals(EdmTypeKind.COMPLEX)) {
@@ -169,17 +169,24 @@ public final class JPAEntityParser {
if (navigationPropertyList != null
&& navigationPropertyList.size() != 0) {
- try {
- for (EdmNavigationProperty navigationProperty : navigationPropertyList) {
- methodName = getAccessModifierName(navigationProperty.getName(),
- navigationProperty.getMapping(), ACCESS_MODIFIER_GET);
- Method getterMethod = jpaEntity.getClass()
- .getMethod(methodName, (Class<?>[]) null);
- getterMethod.setAccessible(true);
- result = getPropertyValue(getterMethod, jpaEntity);
- navigationMap.put(navigationProperty.getName(), result);
- }
- } catch (IllegalArgumentException e) {
+ try {
+ for (EdmNavigationProperty navigationProperty : navigationPropertyList) {
+ methodName = getAccessModifierName(navigationProperty.getName(),
+ navigationProperty.getMapping(), ACCESS_MODIFIER_GET);
+ Method getterMethod = null;
+ if(((JPAEdmMapping)navigationProperty.getMapping()).isVirtualAccess()) {
+ getterMethod = jpaEntity.getClass().getMethod("get", String.class);
+ }else{
+ getterMethod = jpaEntity.getClass()
+ .getMethod(methodName, (Class<?>[]) null);
+ }
+
+ getterMethod.setAccessible(true);
+ result = getPropertyValue(getterMethod, jpaEntity,
+ navigationProperty.getMapping().getInternalName());
+ navigationMap.put(navigationProperty.getName(), result);
+ }
+ } catch (IllegalArgumentException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
} catch (EdmException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
@@ -215,7 +222,8 @@ public final class JPAEntityParser {
return getAccessModifiers(getEdmProperties(structuralType), jpaEntity.getClass(), accessModifier);
}
- public static Object getPropertyValue(final Method method, final Object entity) throws ODataJPARuntimeException {
+ public static Object getPropertyValue(final Method method, final Object entity, String propertyName)
+ throws ODataJPARuntimeException {
Object propertyValue = null;
if (method == null) {
return null;
@@ -246,7 +254,11 @@ public final class JPAEntityParser {
} else if (returnType.equals(Clob.class)) {
propertyValue = getString((Clob) method.invoke(entity));
} else {
- propertyValue = method.invoke(entity);
+ if(method.getParameterTypes().length>0) {
+ propertyValue = method.invoke(entity,propertyName);
+ } else {
+ propertyValue = method.invoke(entity);
+ }
}
} catch (IllegalAccessException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
@@ -393,7 +405,7 @@ public final class JPAEntityParser {
}
method = propertyValue.getClass().getMethod(namePart, (Class<?>[]) null);
method.setAccessible(true);
- propertyValue = getPropertyValue(method, propertyValue);
+ propertyValue = getPropertyValue(method, propertyValue,namePart);
}
} catch (NoSuchMethodException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
@@ -541,13 +553,23 @@ public final class JPAEntityParser {
continue;
}
} else {
- if (accessModifier.equals(ACCESS_MODIFIER_SET)) {
- JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping();
- accessModifierMap.put(propertyName, jpaEntityType.getMethod(methodName,
- new Class<?>[] { jpaEdmMapping.getJPAType() }));
- } else {
- method = jpaEntityType.getMethod(methodName, (Class<?>[]) null);
- }
+ if (accessModifier.equals(ACCESS_MODIFIER_SET)) {
+ JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping();
+ if(jpaEdmMapping.isVirtualAccess()) {
+ accessModifierMap.put(propertyName, jpaEntityType.getMethod("set",
+ new Class<?>[] { String.class,Object.class }));
+ }else {
+ accessModifierMap.put(propertyName, jpaEntityType.getMethod(methodName,
+ new Class<?>[] { jpaEdmMapping.getJPAType() }));
+ }
+ } else {
+ JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping();
+ if(jpaEdmMapping.isVirtualAccess()) {
+ method = jpaEntityType.getMethod("get", String.class);
+ }else{
+ method = jpaEntityType.getMethod(methodName, (Class<?>[]) null);
+ }
+ }
}
} catch (EdmException exp) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, exp);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/32689c14/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmMappingImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmMappingImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmMappingImpl.java
index 5944191..b07c7ca 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmMappingImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmMappingImpl.java
@@ -27,6 +27,7 @@ public class JPAEdmMappingImpl extends Mapping implements JPAEdmMapping {
private String columnName = null;
private Class<?> type = null;
private Class<? extends ODataJPATombstoneEntityListener> entityListener = null;
+ private boolean isVirtualAccess;
@Override
public void setJPAColumnName(final String name) {
@@ -60,4 +61,14 @@ public class JPAEdmMappingImpl extends Mapping implements JPAEdmMapping {
public Class<? extends ODataJPATombstoneEntityListener> getODataJPATombstoneEntityListener() {
return entityListener;
}
+
+ @Override
+ public boolean isVirtualAccess() {
+ return isVirtualAccess;
+ }
+
+ @Override
+ public void setVirtualAccess(boolean virtualAccess) {
+ this.isVirtualAccess=virtualAccess;
+ }
}
[10/15] olingo-odata2 git commit: [OLINGO-930] New error message:
Filter on navigation not supported
Posted by mi...@apache.org.
[OLINGO-930] New error message: Filter on navigation not supported
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/910d3bc2
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/910d3bc2
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/910d3bc2
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 910d3bc286c218e923a70cb569c03a1c6093b761
Parents: b081eed
Author: Christian Amend <ch...@sap.com>
Authored: Wed Apr 13 11:17:01 2016 +0200
Committer: Christian Amend <ch...@sap.com>
Committed: Wed Apr 13 11:17:01 2016 +0200
----------------------------------------------------------------------
.../api/exception/ODataJPARuntimeException.java | 2 ++
.../jpa/processor/core/ODataExpressionParser.java | 18 +++++++++++++-----
.../main/resources/jpaprocessor_msg.properties | 1 +
.../ref/web/JPAReferenceServiceFactory.java | 16 ++++++++++++++++
4 files changed, 32 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/910d3bc2/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPARuntimeException.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPARuntimeException.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPARuntimeException.java
index 0b9c3b2..dd70e8d 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPARuntimeException.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPARuntimeException.java
@@ -72,6 +72,8 @@ public class ODataJPARuntimeException extends ODataJPAException {
"ERROR_JPA_CLOB_NULL");
public static final MessageReference OPERATOR_EQ_NE_MISSING = createMessageReference(ODataJPARuntimeException.class,
"OPERATOR_EQ_NE_MISSING");
+ public static final MessageReference FILTER_ON_NAVIGATION_NOT_SUPPORTED =
+ createMessageReference(ODataJPARuntimeException.class, "FILTER_ON_NAVIGATION_NOT_SUPPORTED");
private ODataJPARuntimeException(final String localizedMessage, final Throwable e, final MessageReference msgRef) {
super(localizedMessage, e, msgRef);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/910d3bc2/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 1141831..79905ce 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
@@ -27,10 +27,12 @@ import org.apache.olingo.odata2.api.edm.EdmException;
import org.apache.olingo.odata2.api.edm.EdmLiteral;
import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
import org.apache.olingo.odata2.api.edm.EdmMapping;
+import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
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.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTyped;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.api.exception.ODataNotImplementedException;
import org.apache.olingo.odata2.api.uri.KeyPredicate;
@@ -139,9 +141,9 @@ public class ODataExpressionParser {
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case NE:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
- + (!"null".equals(right) ?
- JPQLStatement.Operator.NE :
- "IS" + JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.NOT)
+ + (!"null".equals(right) ?
+ JPQLStatement.Operator.NE :
+ "IS" + JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.NOT)
+ JPQLStatement.DELIMITER.SPACE + right
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case LT:
@@ -437,8 +439,14 @@ public class ODataExpressionParser {
return uriLiteral;
}
- private static String getPropertyName(final CommonExpression whereExpression) throws EdmException {
- EdmProperty property = ((EdmProperty) ((PropertyExpression) whereExpression).getEdmProperty());
+ private static String getPropertyName(final CommonExpression whereExpression) throws EdmException,
+ ODataJPARuntimeException {
+ EdmTyped edmProperty = ((PropertyExpression) whereExpression).getEdmProperty();
+ if (edmProperty instanceof EdmNavigationProperty) {
+ throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.FILTER_ON_NAVIGATION_NOT_SUPPORTED, null);
+ }
+
+ EdmProperty property = ((EdmProperty) edmProperty);
EdmMapping mapping = property.getMapping();
String name = mapping != null ? mapping.getInternalName() : property.getName();
return name;
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/910d3bc2/odata2-jpa-processor/jpa-core/src/main/resources/jpaprocessor_msg.properties
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/resources/jpaprocessor_msg.properties b/odata2-jpa-processor/jpa-core/src/main/resources/jpaprocessor_msg.properties
index 7b4bb95..a5a115c 100644
--- a/odata2-jpa-processor/jpa-core/src/main/resources/jpaprocessor_msg.properties
+++ b/odata2-jpa-processor/jpa-core/src/main/resources/jpaprocessor_msg.properties
@@ -58,6 +58,7 @@ org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException.RE
org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException.ERROR_JPA_BLOB_NULL="OData - JPA Runtime: Blob data type is null. Initialize Blob type by implementing callback interface org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent.
org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException.ERROR_JPA_CLOB_NULL="OData - JPA Runtime: Clob data type is null. Initialize Clob type by implementing callback interface org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent.
org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException.OPERATOR_EQ_NE_MISSING="OData - JPA Runtime: OData Expression parser - Operator EQ or NE missing"
+org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException.FILTER_ON_NAVIGATION_NOT_SUPPORTED="OData - JPA Runtime: OData Expression parser - Filter expressions with navigation are currently not supported"
#JPA Common Errors
org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAException.ODATA_JPACTX_NULL="OData JPA: OData JPA Context cannot be null"
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/910d3bc2/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
index fa499c8..6e59903 100644
--- a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
+++ b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
@@ -20,6 +20,8 @@ package org.apache.olingo.odata2.jpa.processor.ref.web;
import java.util.ResourceBundle;
+import org.apache.olingo.odata2.api.ODataCallback;
+import org.apache.olingo.odata2.api.ODataDebugCallback;
import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory;
import org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent;
@@ -57,4 +59,18 @@ public class JPAReferenceServiceFactory extends ODataJPAServiceFactory {
boolean error = Boolean.parseBoolean(config.getString(SHOW_DETAIL_ERROR));
setDetailErrors(error);
}
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends ODataCallback> T getCallback(final Class<T> callbackInterface) {
+ return (T) (callbackInterface.isAssignableFrom(ODataDebugCallback.class) ?
+ new ScenarioDebugCallback() : super.getCallback(callbackInterface));
+ }
+
+ private final class ScenarioDebugCallback implements ODataDebugCallback {
+ @Override
+ public boolean isDebugEnabled() {
+ return true;
+ }
+ }
}
[05/15] olingo-odata2 git commit: [OLINGO-763] New internal server
error code for serializer exceptions
Posted by mi...@apache.org.
[OLINGO-763] New internal server error code for serializer exceptions
Also imporved the exception handling for producers. If the root cause is a
message exception we will now provide the root cause instead of the
wrapper. This should lead to more detailed exception texts for
ProducerExceptions
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/eb806b91
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/eb806b91
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/eb806b91
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: eb806b91042ae450cdec1b6934ecb9418b6008fa
Parents: 27fced0
Author: Christian Amend <ch...@sap.com>
Authored: Thu Mar 3 15:27:18 2016 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Thu Mar 3 15:29:30 2016 +0100
----------------------------------------------------------------------
.../apache/olingo/odata2/core/edm/EdmImpl.java | 14 ++
.../odata2/core/ep/AtomEntityProvider.java | 20 +--
.../odata2/core/ep/BasicEntityProvider.java | 17 +-
.../ep/EntityProviderProducerException.java | 44 +++++
.../odata2/core/ep/JsonEntityProvider.java | 25 ++-
.../ep/producer/AtomEntryEntityProducer.java | 43 ++---
.../core/ep/producer/AtomFeedProducer.java | 17 +-
.../producer/AtomServiceDocumentProducer.java | 10 +-
.../producer/JsonCollectionEntityProducer.java | 6 +-
.../JsonDeletedEntryEntityProducer.java | 3 +-
.../ep/producer/JsonEntryEntityProducer.java | 10 +-
.../ep/producer/JsonFeedEntityProducer.java | 5 +-
.../ep/producer/JsonLinkEntityProducer.java | 3 +-
.../ep/producer/JsonLinksEntityProducer.java | 3 +-
.../ep/producer/JsonPropertyEntityProducer.java | 16 +-
.../producer/JsonServiceDocumentProducer.java | 8 +-
.../core/ep/producer/TombstoneProducer.java | 5 +-
.../producer/XmlCollectionEntityProducer.java | 3 +-
.../core/ep/producer/XmlLinkEntityProducer.java | 3 +-
.../ep/producer/XmlLinksEntityProducer.java | 3 +-
.../core/ep/producer/XmlMetadataProducer.java | 5 +-
.../ep/producer/XmlPropertyEntityProducer.java | 15 +-
.../odata2/core/rest/ODataExceptionWrapper.java | 11 +-
.../core/servlet/ODataExceptionWrapper.java | 11 +-
.../core/ep/producer/AtomEntryProducerTest.java | 8 +-
.../fit/ref/InvalidDataInScenarioTest.java | 164 +++++++++++++++++++
26 files changed, 367 insertions(+), 105 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmImpl.java
index 80f3776..141a00e 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmImpl.java
@@ -81,6 +81,8 @@ public abstract class EdmImpl implements Edm {
edmEntityContainers.put(name, edmEntityContainer);
}
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -104,6 +106,8 @@ public abstract class EdmImpl implements Edm {
if (edmEntityType != null) {
edmEntityTypes.put(fqName, edmEntityType);
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -118,6 +122,8 @@ public abstract class EdmImpl implements Edm {
if (aliasToNamespaceInfo == null) {
aliasToNamespaceInfo = new HashMap<String, String>();
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -145,6 +151,8 @@ public abstract class EdmImpl implements Edm {
if (edmComplexType != null) {
edmComplexTypes.put(fqName, edmComplexType);
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -167,6 +175,8 @@ public abstract class EdmImpl implements Edm {
if (edmAssociation != null) {
edmAssociations.put(fqName, edmAssociation);
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -190,6 +200,8 @@ public abstract class EdmImpl implements Edm {
if (edmEntitySets == null) {
edmEntitySets = createEntitySets();
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
@@ -202,6 +214,8 @@ public abstract class EdmImpl implements Edm {
if (edmFunctionImports == null) {
edmFunctionImports = createFunctionImports();
}
+ } catch (EdmException e) {
+ throw e;
} catch (ODataException e) {
throw new EdmException(EdmException.COMMON, e);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/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 6dc6b7a..acdf998 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
@@ -150,7 +150,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -181,7 +181,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -213,7 +213,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -242,7 +242,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (XMLStreamException e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -270,7 +270,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
@@ -299,7 +299,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -324,7 +324,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -349,8 +349,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
return writeSingleTypedElement(info, data);
}
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -419,8 +418,7 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
new XmlEntityConsumer().readProperty(info, content, properties).get(info.getName());
}
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
- .addContent(e.getClass().getSimpleName()), e);
+ throw new EntityProviderException(e.getMessageReference(), e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
index c8b2520..7d9a59c 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
@@ -122,8 +122,7 @@ public class BasicEntityProvider {
try {
type = (EdmSimpleType) edmProperty.getType();
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderException(e.getMessageReference(), e);
}
if (type == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance()) {
@@ -137,8 +136,7 @@ public class BasicEntityProvider {
return type.valueOfString(readText(content), EdmLiteralKind.DEFAULT, edmProperty.getFacets(), typeMapping);
}
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderException(e.getMessageReference(), e);
}
}
}
@@ -179,8 +177,7 @@ public class BasicEntityProvider {
}
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -197,7 +194,7 @@ public class BasicEntityProvider {
try {
stream = new ByteArrayInputStream(value.getBytes(DEFAULT_CHARSET));
} catch (UnsupportedEncodingException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
builder.entity(stream);
@@ -248,13 +245,13 @@ public class BasicEntityProvider {
XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
XmlMetadataProducer.writeMetadata(metadata, xmlStreamWriter, predefinedNamespaces);
} catch (UnsupportedEncodingException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
} catch (FactoryConfigurationError e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
builder.entity(csb.getInputStream());
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/EntityProviderProducerException.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/EntityProviderProducerException.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/EntityProviderProducerException.java
new file mode 100644
index 0000000..2c23846
--- /dev/null
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/EntityProviderProducerException.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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.core.ep;
+
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.MessageReference;
+
+public class EntityProviderProducerException extends EntityProviderException {
+
+ private static final long serialVersionUID = 1L;
+
+ public EntityProviderProducerException(final MessageReference messageReference) {
+ super(messageReference);
+ }
+
+ public EntityProviderProducerException(final MessageReference messageReference, final Throwable cause) {
+ super(messageReference, cause);
+ }
+
+ public EntityProviderProducerException(final MessageReference messageReference, final String errorCode) {
+ super(messageReference, errorCode);
+ }
+
+ public EntityProviderProducerException(final MessageReference messageReference, final Throwable cause,
+ final String errorCode) {
+ super(messageReference, cause, errorCode);
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/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 092135b..c83b128 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
@@ -125,7 +125,8 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
.build();
} catch (Exception e) {
buffer.close();
- throw new ODataRuntimeException(e);
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ .getSimpleName()), e);
}
}
@@ -151,7 +152,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -180,7 +181,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -203,7 +204,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -228,7 +229,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -255,7 +256,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -276,7 +277,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
throw e;
} catch (Exception e) {
buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -298,8 +299,7 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
return writeSingleTypedElement(info, data);
}
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -330,12 +330,11 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
} else {
final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
return functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY ?
- new JsonEntityConsumer().readCollection(info, content, properties) :
- new JsonEntityConsumer().readProperty(info, content, properties).get(info.getName());
+ new JsonEntityConsumer().readCollection(info, content, properties) :
+ new JsonEntityConsumer().readProperty(info, content, properties).get(info.getName());
}
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
- .addContent(e.getClass().getSimpleName()), e);
+ throw new EntityProviderException(e.getMessageReference(), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index 5e92500..6250739 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -57,6 +57,7 @@ import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
import org.apache.olingo.odata2.core.commons.ContentType;
import org.apache.olingo.odata2.core.commons.Encoder;
import org.apache.olingo.odata2.core.edm.EdmDateTimeOffset;
+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.util.FormatXml;
@@ -139,11 +140,11 @@ public class AtomEntryEntityProducer {
writer.flush();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
} catch (URISyntaxException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -208,7 +209,7 @@ public class AtomEntryEntityProducer {
return etag;
} catch (EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -245,7 +246,7 @@ public class AtomEntryEntityProducer {
}
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -269,13 +270,13 @@ public class AtomEntryEntityProducer {
ODataCallback callback = properties.getCallbacks().get(navigationPropertyName);
if (callback == null) {
- throw new EntityProviderException(EntityProviderException.EXPANDNOTSUPPORTED);
+ throw new EntityProviderProducerException(EntityProviderException.EXPANDNOTSUPPORTED);
}
WriteFeedCallbackResult result;
try {
result = ((OnWriteFeedContent) callback).retrieveFeedResult(context);
} catch (ODataApplicationException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
List<Map<String, Object>> inlineData = result.getFeedData();
if (inlineData == null) {
@@ -313,13 +314,13 @@ public class AtomEntryEntityProducer {
ODataCallback callback = properties.getCallbacks().get(navigationPropertyName);
if (callback == null) {
- throw new EntityProviderException(EntityProviderException.EXPANDNOTSUPPORTED);
+ throw new EntityProviderProducerException(EntityProviderException.EXPANDNOTSUPPORTED);
}
WriteEntryCallbackResult result;
try {
result = ((OnWriteEntryContent) callback).retrieveEntryResult(context);
} catch (ODataApplicationException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
Map<String, Object> inlineData = result.getEntryData();
if (inlineData != null && !inlineData.isEmpty()) {
@@ -346,9 +347,9 @@ public class AtomEntryEntityProducer {
writer.writeAttribute(FormatXml.ATOM_TITLE, eia.getEntityType().getName());
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -373,7 +374,7 @@ public class AtomEntryEntityProducer {
writer.writeAttribute(FormatXml.ATOM_TYPE, mediaResourceMimeType);
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -410,7 +411,7 @@ public class AtomEntryEntityProducer {
writer.writeAttribute(FormatXml.ATOM_SRC, self);
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -443,9 +444,9 @@ public class AtomEntryEntityProducer {
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -477,7 +478,7 @@ public class AtomEntryEntityProducer {
}
return null;
} catch (EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -520,9 +521,9 @@ public class AtomEntryEntityProducer {
writer.writeAttribute(FormatXml.ATOM_CATEGORY_SCHEME, Edm.NAMESPACE_SCHEME_2007_08);
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -538,7 +539,7 @@ public class AtomEntryEntityProducer {
writer.writeEndElement();
}
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -574,7 +575,7 @@ public class AtomEntryEntityProducer {
keys.append(Encoder.encode(type.valueToString(data.get(name), EdmLiteralKind.URI,
keyPropertyInfo.getFacets())));
} catch (final EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -601,7 +602,7 @@ public class AtomEntryEntityProducer {
writer.writeEndElement();
}
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducer.java
index 5684814..0c43572 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducer.java
@@ -37,6 +37,7 @@ import org.apache.olingo.odata2.api.ep.callback.TombstoneCallback;
import org.apache.olingo.odata2.api.ep.callback.TombstoneCallbackResult;
import org.apache.olingo.odata2.core.commons.Encoder;
import org.apache.olingo.odata2.core.edm.EdmDateTimeOffset;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -88,7 +89,7 @@ public class AtomFeedProducer {
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -120,7 +121,7 @@ public class AtomFeedProducer {
writer.writeAttribute(FormatXml.ATOM_HREF, deltaLink);
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
}
@@ -132,7 +133,7 @@ public class AtomFeedProducer {
writer.writeAttribute(FormatXml.ATOM_REL, FormatXml.ATOM_NEXT_LINK);
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -147,14 +148,14 @@ public class AtomFeedProducer {
private void appendInlineCount(final XMLStreamWriter writer, final Integer inlineCount)
throws EntityProviderException {
if (inlineCount == null || inlineCount < 0) {
- throw new EntityProviderException(EntityProviderException.INLINECOUNT_INVALID);
+ throw new EntityProviderProducerException(EntityProviderException.INLINECOUNT_INVALID);
}
try {
writer.writeStartElement(Edm.NAMESPACE_M_2007_08, FormatXml.M_COUNT);
writer.writeCharacters(String.valueOf(inlineCount));
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -175,7 +176,7 @@ public class AtomFeedProducer {
writer.writeAttribute(FormatXml.ATOM_TITLE, eia.getEntitySetName());
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
@@ -217,9 +218,9 @@ public class AtomFeedProducer {
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
index a5299f1..d5827e2 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
@@ -28,10 +28,12 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata2.api.edm.EdmException;
import org.apache.olingo.odata2.api.edm.EdmServiceMetadata;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
/**
@@ -88,11 +90,13 @@ public class AtomServiceDocumentProducer {
xmlStreamWriter.flush();
} catch (FactoryConfigurationError e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
+ } catch (EdmException e) {
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
} catch (ODataException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonCollectionEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonCollectionEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonCollectionEntityProducer.java
index 4ba8577..0c25410 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonCollectionEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonCollectionEntityProducer.java
@@ -25,6 +25,7 @@ import java.util.List;
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.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -69,11 +70,10 @@ public class JsonCollectionEntityProducer {
jsonStreamWriter.endObject()
.endObject();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonDeletedEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonDeletedEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonDeletedEntryEntityProducer.java
index 2452228..0ce7f80 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonDeletedEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonDeletedEntryEntityProducer.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -68,7 +69,7 @@ public class JsonDeletedEntryEntityProducer {
}
}
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index fe02cc7..6615935 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -45,6 +45,7 @@ import org.apache.olingo.odata2.api.ep.callback.WriteFeedCallbackResult;
import org.apache.olingo.odata2.api.exception.ODataApplicationException;
import org.apache.olingo.odata2.core.commons.ContentType;
import org.apache.olingo.odata2.core.commons.Encoder;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -100,11 +101,10 @@ public class JsonEntryEntityProducer {
writer.flush();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -147,7 +147,7 @@ public class JsonEntryEntityProducer {
ODataCallback callback = properties.getCallbacks().get(navigationPropertyName);
if (callback == null) {
- throw new EntityProviderException(EntityProviderException.EXPANDNOTSUPPORTED);
+ throw new EntityProviderProducerException(EntityProviderException.EXPANDNOTSUPPORTED);
}
try {
if (isFeed) {
@@ -182,7 +182,7 @@ public class JsonEntryEntityProducer {
}
}
} catch (final ODataApplicationException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducer.java
index 4dc4dae..db71b63 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducer.java
@@ -28,6 +28,7 @@ import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
import org.apache.olingo.odata2.api.ep.callback.TombstoneCallback;
import org.apache.olingo.odata2.api.ep.callback.TombstoneCallbackResult;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -84,7 +85,7 @@ public class JsonFeedEntityProducer {
jsonStreamWriter.endObject();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
@@ -97,7 +98,7 @@ public class JsonFeedEntityProducer {
appendEntries(writer, entityInfo, data, jsonStreamWriter);
jsonStreamWriter.endArray();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
index 9ddfddd..7c3efd8 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -56,7 +57,7 @@ public class JsonLinkEntityProducer {
jsonStreamWriter.endObject();
}
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
index 858456c..7a19ed6 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
@@ -26,6 +26,7 @@ import java.util.Map;
import org.apache.olingo.odata2.api.commons.InlineCount;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -81,7 +82,7 @@ public class JsonLinksEntityProducer {
jsonStreamWriter.endObject();
}
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonPropertyEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonPropertyEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonPropertyEntityProducer.java
index 6947910..00ab712 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonPropertyEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonPropertyEntityProducer.java
@@ -22,8 +22,15 @@ import java.io.IOException;
import java.io.Writer;
import java.util.Map;
-import org.apache.olingo.odata2.api.edm.*;
+import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmType;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
@@ -52,11 +59,10 @@ public class JsonPropertyEntityProducer {
jsonStreamWriter.endObject()
.endObject();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
} catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -78,7 +84,7 @@ public class JsonPropertyEntityProducer {
}
jsonStreamWriter.endObject();
} else {
- throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT
+ throw new EntityProviderProducerException(EntityProviderException.ILLEGAL_ARGUMENT
.addContent("A complex property must have a Map as data"));
}
} else {
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonServiceDocumentProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonServiceDocumentProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonServiceDocumentProducer.java
index bca6b65..bb4d351 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonServiceDocumentProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonServiceDocumentProducer.java
@@ -23,9 +23,11 @@ import java.io.Writer;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata2.api.edm.EdmException;
import org.apache.olingo.odata2.api.edm.EdmServiceMetadata;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.util.FormatJson;
import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
@@ -60,10 +62,12 @@ public class JsonServiceDocumentProducer {
.endObject()
.endObject();
} catch (final IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
+ } catch (final EdmException e) {
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
} catch (final ODataException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
+ throw new EntityProviderProducerException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducer.java
index 7f1babb..142db4d 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/TombstoneProducer.java
@@ -33,6 +33,7 @@ import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
import org.apache.olingo.odata2.api.ep.callback.TombstoneCallback;
import org.apache.olingo.odata2.core.edm.EdmDateTimeOffset;
+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.util.FormatXml;
@@ -66,9 +67,9 @@ public class TombstoneProducer {
writer.writeEndElement();
}
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmSimpleTypeException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlCollectionEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlCollectionEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlCollectionEntityProducer.java
index bf0bc8c..96eae72 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlCollectionEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlCollectionEntityProducer.java
@@ -25,6 +25,7 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -49,7 +50,7 @@ public class XmlCollectionEntityProducer {
writer.writeEndElement();
writer.flush();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinkEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinkEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinkEntityProducer.java
index fe59c4a..1e20f1c 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinkEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinkEntityProducer.java
@@ -26,6 +26,7 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -55,7 +56,7 @@ public class XmlLinkEntityProducer {
writer.writeEndElement();
writer.flush();
} catch (final XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinksEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinksEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinksEntityProducer.java
index 84eff3b..a8a240e 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinksEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlLinksEntityProducer.java
@@ -27,6 +27,7 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -60,7 +61,7 @@ public class XmlLinksEntityProducer {
writer.writeEndElement();
writer.flush();
} catch (final XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducer.java
index f917de7..f301482 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlMetadataProducer.java
@@ -57,6 +57,7 @@ import org.apache.olingo.odata2.api.edm.provider.Schema;
import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
import org.apache.olingo.odata2.api.edm.provider.Using;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.util.XmlMetadataConstants;
import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
@@ -420,9 +421,9 @@ public class XmlMetadataProducer {
xmlStreamWriter.flush();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (FactoryConfigurationError e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
index 433e79e..587748d 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
@@ -32,6 +32,7 @@ import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
import org.apache.olingo.odata2.api.edm.EdmSimpleType;
import org.apache.olingo.odata2.api.ep.EntityProviderException;
import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.aggregator.EntityComplexPropertyInfo;
import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
import org.apache.olingo.odata2.core.ep.util.FormatXml;
@@ -77,9 +78,9 @@ public class XmlPropertyEntityProducer {
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -92,9 +93,9 @@ public class XmlPropertyEntityProducer {
writer.writeEndElement();
}
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -123,9 +124,9 @@ public class XmlPropertyEntityProducer {
writer.writeEndElement();
} catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(EntityProviderException.COMMON, e);
} catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
+ throw new EntityProviderProducerException(e.getMessageReference(), e);
}
}
@@ -229,7 +230,7 @@ public class XmlPropertyEntityProducer {
String nsPrefix = mapping.getFcNsPrefix();
String nsUri = mapping.getFcNsUri();
if (nsUri == null || nsPrefix == null) {
- throw new EntityProviderException(EntityProviderException.INVALID_NAMESPACE.addContent(name));
+ throw new EntityProviderProducerException(EntityProviderException.INVALID_NAMESPACE.addContent(name));
}
writer.writeStartElement(nsPrefix, name, nsUri);
writer.writeNamespace(nsPrefix, nsUri);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionWrapper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionWrapper.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionWrapper.java
index 30efb9c..4300ab1 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionWrapper.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionWrapper.java
@@ -48,6 +48,7 @@ import org.apache.olingo.odata2.api.processor.ODataErrorCallback;
import org.apache.olingo.odata2.api.processor.ODataErrorContext;
import org.apache.olingo.odata2.api.processor.ODataResponse;
import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.ProviderFacadeImpl;
import org.apache.olingo.odata2.core.exception.MessageService;
import org.apache.olingo.odata2.core.exception.MessageService.Message;
@@ -160,7 +161,15 @@ public class ODataExceptionWrapper {
if (toHandleException instanceof ODataHttpException) {
errorContext.setHttpStatus(((ODataHttpException) toHandleException).getHttpStatus());
} else if (toHandleException instanceof EntityProviderException) {
- errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
+ if(toHandleException instanceof EntityProviderProducerException){
+ /*
+ * As per OLINGO-763 serializer exceptions are produced by the server and must therefore result
+ * in a 500 internal server error
+ */
+ errorContext.setHttpStatus(HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ }else{
+ errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
+ }
} else if (toHandleException instanceof BatchException) {
errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataExceptionWrapper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataExceptionWrapper.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataExceptionWrapper.java
index 9a87505..e012ec4 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataExceptionWrapper.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataExceptionWrapper.java
@@ -43,6 +43,7 @@ import org.apache.olingo.odata2.api.processor.ODataErrorCallback;
import org.apache.olingo.odata2.api.processor.ODataErrorContext;
import org.apache.olingo.odata2.api.processor.ODataResponse;
import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.EntityProviderProducerException;
import org.apache.olingo.odata2.core.ep.ProviderFacadeImpl;
import org.apache.olingo.odata2.core.exception.MessageService;
import org.apache.olingo.odata2.core.exception.MessageService.Message;
@@ -152,7 +153,15 @@ public class ODataExceptionWrapper {
if (toHandleException instanceof ODataHttpException) {
errorContext.setHttpStatus(((ODataHttpException) toHandleException).getHttpStatus());
} else if (toHandleException instanceof EntityProviderException) {
- errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
+ if(toHandleException instanceof EntityProviderProducerException){
+ /*
+ * As per OLINGO-763 serializer exceptions are produced by the server and must therefore result
+ * in a 500 internal server error
+ */
+ errorContext.setHttpStatus(HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ }else{
+ errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
+ }
} else if (toHandleException instanceof BatchException) {
errorContext.setHttpStatus(HttpStatusCodes.BAD_REQUEST);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index ff429af..c6b712d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -41,6 +41,7 @@ import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLStreamException;
import junit.framework.Assert;
+
import org.apache.olingo.odata2.api.edm.Edm;
import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
@@ -60,6 +61,7 @@ import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
import org.apache.olingo.odata2.core.commons.ContentType;
import org.apache.olingo.odata2.core.ep.AbstractProviderTest;
import org.apache.olingo.odata2.core.ep.AtomEntityProvider;
+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;
@@ -465,7 +467,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
try {
ser.writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
} catch (EntityProviderException e) {
- verifyRootCause(EntityProviderException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
+ verifyRootCause(EntityProviderProducerException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
thrown = true;
}
if (!thrown) {
@@ -497,7 +499,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
try {
ser.writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
} catch (EntityProviderException e) {
- verifyRootCause(EntityProviderException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
+ verifyRootCause(EntityProviderProducerException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
thrown = true;
}
if (!thrown) {
@@ -528,7 +530,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
try {
ser.writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
} catch (EntityProviderException e) {
- verifyRootCause(EntityProviderException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
+ verifyRootCause(EntityProviderProducerException.class, EntityProviderException.INVALID_NAMESPACE.getKey(), e);
thrown = true;
}
if (!thrown) {
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/eb806b91/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/InvalidDataInScenarioTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/InvalidDataInScenarioTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/InvalidDataInScenarioTest.java
new file mode 100644
index 0000000..10be915
--- /dev/null
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/InvalidDataInScenarioTest.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * 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.fit.ref;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.http.HttpResponse;
+import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.api.exception.ODataApplicationException;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.processor.ODataContext;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetSimplePropertyUriInfo;
+import org.apache.olingo.odata2.core.processor.ODataSingleProcessorService;
+import org.apache.olingo.odata2.ref.edm.ScenarioEdmProvider;
+import org.apache.olingo.odata2.testutil.server.ServletType;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Based on OLINGO-763 we changed the behaviour of serializer exceptions. Now they must result in 500 internal server
+ * errors if an application provides false data. This test is to ensure that the serializer throws the correct exception
+ * which then results in the correct status code.
+ */
+public class InvalidDataInScenarioTest extends AbstractRefTest {
+
+ public InvalidDataInScenarioTest(ServletType servletType) {
+ super(servletType);
+ }
+
+ @Override
+ protected ODataSingleProcessorService createService() {
+ ODataSingleProcessor processor = new LocalProcessor();
+ EdmProvider provider = new ScenarioEdmProvider();
+
+ return new ODataSingleProcessorService(provider, processor) {};
+ }
+
+ @Before
+ public void showStacktrace() {
+ disableLogging();
+ }
+
+ @Test
+ public void nullKeyInEntryData() throws Exception {
+ HttpResponse response = callUri("Employees('1')", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ System.out.println(getBody(response));
+ response = callUri("Employees('1')?$format=json", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("null value"));
+ }
+
+ @Test
+ public void violatedFacetsInEntry() throws Exception {
+ HttpResponse response = callUri("Employees('2')", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("metadata constraints"));
+ response = callUri("Employees('2')?$format=json", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("metadata constraints"));
+ }
+
+ @Test
+ public void nullKeyInFeedData() throws Exception {
+ HttpResponse response = callUri("Employees", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("null value"));
+ response = callUri("Employees?$format=json", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("null value"));
+ }
+
+ @Test
+ public void wrongPropertyValueIsNull() throws Exception {
+ HttpResponse response = callUri("Employees('1')/EmployeeId", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("null value"));
+ response = callUri("Employees('1')/EmployeeId?$format=json", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("null value"));
+ }
+
+ @Test
+ public void wrongPropertyValueWithFacets() throws Exception {
+ HttpResponse response = callUri("Employees('2')/TeamId", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("metadata constraints"));
+ response = callUri("Employees('2')/TeamId?$format=json", HttpStatusCodes.INTERNAL_SERVER_ERROR);
+ assertTrue(getBody(response).contains("metadata constraints"));
+ }
+
+ public class LocalProcessor extends ODataSingleProcessor {
+
+ @Override
+ public ODataResponse readEntity(GetEntityUriInfo uriInfo, String contentType) throws ODataException {
+ HashMap<String, Object> data = new HashMap<String, Object>();
+
+ if ("Employees".equals(uriInfo.getTargetEntitySet().getName())) {
+ if ("2".equals(uriInfo.getKeyPredicates().get(0).getLiteral())) {
+ data.put("EmployeeId", "1");
+ data.put("TeamId", "420");
+ }
+
+ ODataContext context = getContext();
+ EntityProviderWriteProperties writeProperties =
+ EntityProviderWriteProperties.serviceRoot(context.getPathInfo().getServiceRoot()).build();
+
+ return EntityProvider.writeEntry(contentType, uriInfo.getTargetEntitySet(), data, writeProperties);
+ } else {
+ throw new ODataApplicationException("Wrong testcall", Locale.getDefault(), HttpStatusCodes.NOT_IMPLEMENTED);
+ }
+ }
+
+ @Override
+ public ODataResponse readEntitySet(GetEntitySetUriInfo uriInfo, String contentType) throws ODataException {
+ if ("Employees".equals(uriInfo.getTargetEntitySet().getName())) {
+ ODataContext context = getContext();
+ EntityProviderWriteProperties writeProperties =
+ EntityProviderWriteProperties.serviceRoot(context.getPathInfo().getServiceRoot()).build();
+ List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
+ data.add(new HashMap<String, Object>());
+ return EntityProvider.writeFeed(contentType, uriInfo.getTargetEntitySet(), data, writeProperties);
+ } else {
+ throw new ODataApplicationException("Wrong testcall", Locale.getDefault(), HttpStatusCodes.NOT_IMPLEMENTED);
+ }
+ }
+
+ @Override
+ public ODataResponse readEntitySimpleProperty(GetSimplePropertyUriInfo uriInfo, String contentType)
+ throws ODataException {
+ EdmProperty edmProperty = uriInfo.getPropertyPath().get(0);
+ Object value = null;
+ if ("EmployeeId".equals(edmProperty.getName())) {
+ // must be null for a specific test
+ value = null;
+ } else if ("TeamId".equals(edmProperty.getName())) {
+ value = new Integer(520);
+ }
+
+ return EntityProvider.writeProperty(contentType, edmProperty, value);
+ }
+ }
+}
[07/15] olingo-odata2 git commit: [OLINGO-901] Set osgi range for
gson to include 2.2
Posted by mi...@apache.org.
[OLINGO-901] Set osgi range for gson to include 2.2
OLINGO-827 changed the gson version to 2.4 which causes the maven bundle
plugin to set the lower range for gson to 2.4.
Signed-off-by: Christian Amend <ch...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/bef01c28
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/bef01c28
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/bef01c28
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: bef01c2881fff1e76c84c803fda041d4987dc8eb
Parents: eb806b9
Author: Andrew Clemons <an...@gmail.com>
Authored: Thu Mar 10 15:43:22 2016 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Fri Mar 11 13:41:08 2016 +0100
----------------------------------------------------------------------
odata2-lib/odata-core/pom.xml | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bef01c28/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index 38bb297..b05b8bf 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -74,6 +74,7 @@
<Import-Package>
javax.ws.rs,
javax.ws.rs.*,
+ com.google.gson.*;version="[2.2,$(version;+;${gson.version}))",
*
</Import-Package>
<Export-Package>
[03/15] olingo-odata2 git commit: [OLINGO-891] Fixed tests and
checkstyle issues
Posted by mi...@apache.org.
[OLINGO-891] Fixed tests and checkstyle 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/2538dcc7
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2538dcc7
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2538dcc7
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 2538dcc7eaf5161ae282c08e0596a36a428fe3fb
Parents: 8c0d152
Author: Michael Bolz <mi...@sap.com>
Authored: Wed Feb 24 10:42:58 2016 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Feb 24 10:42:58 2016 +0100
----------------------------------------------------------------------
.../odata2/jpa/processor/core/ODataExpressionParser.java | 7 ++++---
.../processor/core/ODataFilterExpressionParserTest.java | 11 ++++++-----
.../core/access/data/JPAExpandCallBackTest.java | 1 -
3 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2538dcc7/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 1479b10..a6f7c9b 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
@@ -210,10 +210,11 @@ public class ODataExpressionParser {
case SUBSTRINGOF:
if (methodFlag.get() != null && methodFlag.get() == 1) {
methodFlag.set(null);
- return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END)", second, first);
+ return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END)",
+ second, first);
} else {
- return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END) = true", second,
- first);
+ return String.format("(CASE WHEN (%s LIKE CONCAT('%%',CONCAT(%s,'%%'))) THEN TRUE ELSE FALSE END) = true",
+ second, first);
}
case TOLOWER:
return String.format("LOWER(%s)", first);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2538dcc7/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 8d1d38e..24062a2 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,7 +49,7 @@ public class ODataFilterExpressionParserTest {
private static final String[] EXPRESSION_BINARY_AND =
{
"id le '123' and soId eq 123L and not (substringof(id,'123') eq false) eq true",
- "(((E1.id <= '123') AND (E1.soId = 123L)) AND (NOT(((CASE WHEN ('123' LIKE CONCAT('%',E1.id,'%')) "
+ "(((E1.id <= '123') AND (E1.soId = 123L)) AND (NOT(((CASE WHEN ('123' LIKE CONCAT('%',CONCAT(E1.id,'%'))) "
+ "THEN TRUE ELSE FALSE END) = false)) = true))" };
private static final String[] EXPRESSION_BINARY_OR = { "id ge '123' or soId gt 123L",
"((E1.id >= '123') OR (E1.soId > 123L))" };
@@ -68,22 +68,23 @@ public class ODataFilterExpressionParserTest {
"(SUBSTRING(E1.oValue.Currency, 2 + 1 ) NOT LIKE CONCAT('%','INR') )" };
private static final String[] EXPRESSION_SUBSTRING_OF = {
"substringof(id,'123') ne true",
- "((CASE WHEN ('123' LIKE CONCAT('%',E1.id,'%')) THEN TRUE ELSE FALSE END) <> true)" };
+ "((CASE WHEN ('123' LIKE CONCAT('%',CONCAT(E1.id,'%'))) THEN TRUE ELSE FALSE END) <> true)" };
private static final String[] EXPRESSION_STARTS_WITH_WRONG_OP = { "startswith(oValue/Currency,'INR') lt true", "" };
private static final String[] EXPRESSION_SUBSTRING_ALL_OP = { "substring(oValue/Currency,1,3) eq 'INR'",
"(SUBSTRING(E1.oValue.Currency, 1 + 1 , 3) = 'INR')" };
private static final String[] EXPRESSION_SUBSTRINGOF_INJECTION1 = {
"substringof('a'' OR 1=1 OR E1.id LIKE ''b',id) eq true",
- "((CASE WHEN (E1.id LIKE CONCAT('%','a'' OR 1=1 OR E1.id LIKE ''b','%')) THEN TRUE ELSE FALSE END) = true)" };
+ "((CASE WHEN (E1.id LIKE CONCAT('%',CONCAT('a'' OR 1=1 OR E1.id LIKE ''b','%'))) "
+ + "THEN TRUE ELSE FALSE END) = true)" };
private static final String[] EXPRESSION_SUBSTRINGOF_INJECTION2 =
{
"substringof('substringof(''a'' OR 1=1 OR E1.id LIKE ''b'',id)',id) eq true",
- "((CASE WHEN (E1.id LIKE CONCAT('%','substringof(''a'' OR 1=1 OR E1.id LIKE ''b'',id)','%')) "
+ "((CASE WHEN (E1.id LIKE CONCAT('%',CONCAT('substringof(''a'' OR 1=1 OR E1.id LIKE ''b'',id)','%'))) "
+ "THEN TRUE ELSE FALSE END) = true)" };
private static final String[] EXPRESSION_SUBSTRINGOF_INJECTION3 =
{
"substringof( substring(' ) OR execute_my_sql OR '' LIKE ',3),'de''') eq true",
- "((CASE WHEN ('de''' LIKE CONCAT('%',SUBSTRING(' ) OR execute_my_sql OR '' LIKE ', 3 + 1 ),'%')) "
+ "((CASE WHEN ('de''' LIKE CONCAT('%',CONCAT(SUBSTRING(' ) OR execute_my_sql OR '' LIKE ', 3 + 1 ),'%'))) "
+ "THEN TRUE ELSE FALSE END) = true)" };
private static final String[] EXPRESSION_ENDSWITH_INJECTION1 = { "endswith(id,'Str''eet') eq true",
"(E1.id LIKE CONCAT('%','Str''eet') )" };
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2538dcc7/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java
index 29a2a7a..ae59cfd 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java
@@ -44,7 +44,6 @@ import org.apache.olingo.odata2.api.uri.NavigationPropertySegment;
import org.apache.olingo.odata2.jpa.processor.core.callback.JPAExpandCallBack;
import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.EdmMockUtil;
-import org.easymock.EasyMock;
import org.junit.Test;
public class JPAExpandCallBackTest {