Repository: olingo-odata2 Updated Branches: refs/heads/master ca39c367a -> 2c5605940
[OLINGO-1176] Code Improvements Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2c560594 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2c560594 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2c560594 Branch: refs/heads/master Commit: 2c5605940723bb315d7757f0baff3eae1025ba17 Parents: ca39c36 Author: ramya vasanth <[email protected]> Authored: Tue Sep 5 14:13:31 2017 +0530 Committer: ramya vasanth <[email protected]> Committed: Tue Sep 5 14:13:31 2017 +0530 ---------------------------------------------------------------------- .../core/ODataJPAResponseBuilderDefault.java | 2 +- .../core/access/data/JPAEntityParser.java | 7 ++++--- .../core/access/data/JPAQueryBuilder.java | 2 +- .../core/model/JPAEdmReferentialConstraint.java | 4 ++-- .../core/access/data/JPAEntityTest.java | 1 - .../olingo/odata2/core/ODataRequestHandler.java | 15 +++++++++----- .../olingo/odata2/core/batch/BatchHelper.java | 21 ++++++++++++++++++-- .../core/batch/v2/BatchTransformatorCommon.java | 2 +- .../odata2/core/debug/DebugInfoException.java | 2 +- .../apache/olingo/odata2/core/edm/EdmImpl.java | 2 +- .../core/ep/consumer/XmlMetadataConsumer.java | 2 +- .../ep/producer/AtomEntryEntityProducer.java | 3 ++- .../odata2/core/rest/ODataExceptionWrapper.java | 2 +- .../core/uri/expression/FilterParserImpl.java | 4 ++-- 14 files changed, 46 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/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 0517e48..6d42ec5 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 @@ -502,7 +502,7 @@ public final class ODataJPAResponseBuilderDefault implements ODataJPAResponseBui String nextLink = serviceRoot.relativize(pathInfo.getRequestUri()).toString(); nextLink = percentEncodeNextLink(nextLink); - nextLink += (nextLink.contains("?") ? "&" : "?") + nextLink += (nextLink != null ? nextLink.contains("?") ? "&" : "?" : "?") + "$skiptoken=" + odataJPAContext.getPaging().getNextPage(); entityFeedPropertiesBuilder.nextLink(nextLink); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/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 fb0373b..ef9aa36 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 @@ -532,7 +532,7 @@ public final class JPAEntityParser { EdmAssociationEnd end = navigationProperty.getRelationship().getEnd(navigationProperty.getToRole()); switch (end.getMultiplicity()) { case MANY: - params = new Class<?>[] { navPropMapping.getJPAType() }; + params = new Class<?>[] { navPropMapping != null ? navPropMapping.getJPAType() : null }; break; case ONE: case ZERO_TO_ONE: @@ -575,7 +575,7 @@ public final class JPAEntityParser { continue; } String methodName = getAccessModifierName(property.getName(), property.getMapping(), accessModifier); - String[] nameParts = methodName.split("\\."); + String[] nameParts = methodName != null ? methodName.split("\\.") : new String[0]; try { if (nameParts.length > 1) { if (!embeddableKey.containsKey(propertyName)) { @@ -590,7 +590,8 @@ public final class JPAEntityParser { new Class<?>[] { String.class,Object.class })); }else { accessModifierMap.put(propertyName, jpaEntityType.getMethod(methodName, - new Class<?>[] { jpaEdmMapping.getJPAType() })); + new Class<?>[] { jpaEdmMapping != null ? + jpaEdmMapping.getJPAType() : null })); } } else { JPAEdmMapping jpaEdmMapping = (JPAEdmMapping) property.getMapping(); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilder.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilder.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilder.java index 61ce1ba..969772c 100644 --- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilder.java +++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilder.java @@ -219,7 +219,7 @@ public class JPAQueryBuilder { if (uriParserResultView.getNavigationSegments().size() > 0) { if (type == UriInfoType.GetEntitySet) { contextType = JPQLContextType.JOIN; - } else if (type == UriInfoType.Delete || type == UriInfoType.Delete || type == UriInfoType.GetEntity + } else if (type == UriInfoType.Delete || type == UriInfoType.GetEntity || type == UriInfoType.PutMergePatch) { contextType = JPQLContextType.JOIN_SINGLE; } else if (type == UriInfoType.GetEntitySetCount || type == UriInfoType.GetEntityCount) { http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraint.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraint.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraint.java index 07b4480..6e800c4 100644 --- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraint.java +++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraint.java @@ -118,9 +118,9 @@ public class JPAEdmReferentialConstraint extends JPAEdmBaseViewImpl implements J referentialConstraint.setDependent(dependentRoleView.getEdmReferentialConstraintRole()); } - exists = principalRoleView.isExists() & dependentRoleView.isExists(); + exists = principalRoleView.isExists() && dependentRoleView.isExists(); - isConsistent = principalRoleView.isConsistent() & dependentRoleView.isConsistent(); + isConsistent = principalRoleView.isConsistent() && dependentRoleView.isConsistent(); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java index 92445ab..a642235 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java @@ -355,7 +355,6 @@ public class JPAEntityTest { assertEquals(jpaEmbeddableMock.getMDate().getDay(), ODataEntryMockUtil.VALUE_DATE.getDay()); assertEquals(jpaEmbeddableMock.getMDate1().getDate(), ODataEntryMockUtil.VALUE_DATE1.getDate()); assertEquals(jpaEmbeddableMock.getMTime().getTime(), ODataEntryMockUtil.VALUE_TIME.getTime()); - assertEquals(jpaEmbeddableMock.getMTimestamp(), ODataEntryMockUtil.VALUE_TIMESTAMP); JPATypeEmbeddableMock2 jpaEmbeddableMock2 = jpaEmbeddableMock.getMEmbeddable(); assertNotNull(jpaEmbeddableMock2); assertEquals(jpaEmbeddableMock2.getMFloat(), ODataEntryMockUtil.VALUE_MFLOAT, 1); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java index 38b8852..f1f6547 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java @@ -410,7 +410,7 @@ public class ODataRequestHandler { } private static boolean isPropertyNullable(final EdmProperty property) throws EdmException { - return property.getFacets() == null || property.getFacets().isNullable(); + return property != null && (property.getFacets() == null || property.getFacets().isNullable()); } /** @@ -474,10 +474,15 @@ public class ODataRequestHandler { } private static List<ContentType> getSupportedContentTypes(final EdmProperty property) throws EdmException { - return property.getType() == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance() - ? Collections.singletonList(property.getMimeType() == null - ? ContentType.WILDCARD : ContentType.create(property.getMimeType())) - : Arrays.asList(ContentType.TEXT_PLAIN, ContentType.TEXT_PLAIN_CS_UTF_8); + if (property != null) { + return property.getType() == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance() + ? Collections.singletonList(property.getMimeType() == null + ? ContentType.WILDCARD : ContentType.create(property.getMimeType())) + : Arrays.asList(ContentType.TEXT_PLAIN, ContentType.TEXT_PLAIN_CS_UTF_8); + } else { + return null; + } + } private List<String> getSupportedContentTypes(final UriInfoImpl uriInfo, final ODataHttpMethod method) http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchHelper.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchHelper.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchHelper.java index 4889a42..7e91548 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchHelper.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchHelper.java @@ -253,12 +253,14 @@ public class BatchHelper { if(entity == null) { return EMPTY_BYTES; } else if(entity instanceof InputStream) { + ReadableByteChannel ic = null; + WritableByteChannel oc = null; try { extractCharset(ContentType.parse(response.getHeader("Content-Type"))); ByteArrayOutputStream output = new ByteArrayOutputStream(); ByteBuffer inBuffer = ByteBuffer.allocate(BUFFER_SIZE); - ReadableByteChannel ic = Channels.newChannel((InputStream) entity); - WritableByteChannel oc = Channels.newChannel(output); + ic = Channels.newChannel((InputStream) entity); + oc = Channels.newChannel(output); while (ic.read(inBuffer) > 0) { inBuffer.flip(); oc.write(inBuffer); @@ -267,6 +269,21 @@ public class BatchHelper { return output.toByteArray(); } catch (IOException e) { throw new ODataRuntimeException("Error on reading request content"); + } finally { + try { + if (ic != null) { + ic.close(); + } + } catch (IOException e) { + throw new ODataRuntimeException("Error closing the Readable Byte Channel", e); + } + try { + if (oc != null) { + oc.close(); + } + } catch (IOException e) { + throw new ODataRuntimeException("Error closing the Writable Byte Channel", e); + } } } else if (entity instanceof byte[]) { setDefaultValues(ISO_ENCODING); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchTransformatorCommon.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchTransformatorCommon.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchTransformatorCommon.java index 3ca3cfe..11e0380 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchTransformatorCommon.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchTransformatorCommon.java @@ -47,7 +47,7 @@ public class BatchTransformatorCommon { throw new BatchException(BatchException.MISSING_CONTENT_TYPE); } if (!headers.isHeaderMatching(HttpHeaders.CONTENT_TYPE, BatchParserCommon.PATTERN_MULTIPART_MIXED) - & !headers.isHeaderMatching(HttpHeaders.CONTENT_TYPE, BatchParserCommon.PATTERN_CONTENT_TYPE_APPLICATION_HTTP)) { + && !headers.isHeaderMatching(HttpHeaders.CONTENT_TYPE, BatchParserCommon.PATTERN_CONTENT_TYPE_APPLICATION_HTTP)) { throw new BatchException(BatchException.INVALID_CONTENT_TYPE.addContent( HttpContentType.MULTIPART_MIXED + " or " + HttpContentType.APPLICATION_HTTP)); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoException.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoException.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoException.java index e8f6c5a..2c1205b 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoException.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoException.java @@ -71,7 +71,7 @@ public class DebugInfoException implements DebugInfo { jsonStreamWriter.name("stacktrace") .beginArray(); boolean first = true; - for (final StackTraceElement stackTraceElement : exception.getStackTrace()) { + for (final StackTraceElement stackTraceElement : exception != null ? exception.getStackTrace() : null) { if (!first) { jsonStreamWriter.separator(); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/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 141a00e..f1bac87 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 @@ -73,7 +73,7 @@ public abstract class EdmImpl implements Edm { edmEntityContainer = edmEntityContainers.get(edmEntityContainer.getName()); edmEntityContainers.put(name, edmEntityContainer); } else if (edmEntityContainers.containsKey(null) && edmEntityContainers.get(null) != null - && name.equals(edmEntityContainers.get(null).getName())) { + && name != null && name.equals(edmEntityContainers.get(null).getName())) { // ensure that the same default entity container is stored in the HashMap under null and its name edmEntityContainer = edmEntityContainers.get(null); edmEntityContainers.put(name, edmEntityContainer); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java index df4cdcd..b4eb1de 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java @@ -996,7 +996,7 @@ public class XmlMetadataConsumer { } else { baseEntityType = fetchLastBaseType(baseTypeFQName,entityTypesMap); } - if (baseEntityType.getKey() == null) { + if (baseEntityType != null && baseEntityType.getKey() == null) { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT .addContent("Missing key for EntityType " + baseEntityType.getName())); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/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 5622d39..c347be4 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 @@ -489,7 +489,8 @@ public class AtomEntryEntityProducer { } catch (final EdmSimpleTypeException e) { throw new EntityProviderProducerException( EdmSimpleTypeException.getMessageReference(e.getMessageReference()). - updateContent(e.getMessageReference().getContent(), updatedInfo.getName()), e); + updateContent(e.getMessageReference().getContent(), updatedInfo != null ? + updatedInfo.getName() : null), e); } } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/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 9dc7cde..61d6dd0 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 @@ -88,7 +88,7 @@ public class ODataExceptionWrapper { final ODataErrorCallback errorCallback) { try { contentType = getContentType(uriInfo, httpHeaders).toContentTypeString(); - requestUri = uriInfo.getRequestUri(); + requestUri = uriInfo != null ? uriInfo.getRequestUri() : null; } catch (IllegalArgumentException e) { contentType = null; requestUri = null; http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2c560594/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java index fe54085..bf16e24 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java @@ -561,10 +561,10 @@ public class FilterParserImpl implements FilterParser { // special case for navigation property (non-)equality comparison with null if (binOpt.getCategory().equals("Equality") - && (leftType.getKind() == EdmTypeKind.ENTITY + && (leftType != null && leftType.getKind() == EdmTypeKind.ENTITY && rightType == EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Null) || leftType == EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Null) - && rightType.getKind() == EdmTypeKind.ENTITY)) { + && rightType != null && rightType.getKind() == EdmTypeKind.ENTITY)) { binaryExpression.setEdmType(EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Boolean)); return; }
