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;
     }

Reply via email to