Repository: olingo-odata4 Updated Branches: refs/heads/master 9f663baf5 -> 46cad03fe
[OLINGO-798] Fix potential nullpointer in client getContainerCase Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/46cad03f Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/46cad03f Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/46cad03f Branch: refs/heads/master Commit: 46cad03fed25184cb72fcb72b92446e6f0cd219a Parents: 9f663ba Author: Christian Amend <[email protected]> Authored: Thu Oct 22 15:06:09 2015 +0200 Committer: Christian Amend <[email protected]> Committed: Thu Oct 22 15:06:09 2015 +0200 ---------------------------------------------------------------------- .../client/core/edm/ClientCsdlEdmProvider.java | 15 +++++++++++---- .../org/apache/olingo/client/core/MetadataTest.java | 10 ++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/46cad03f/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java index eaf3597..7ebb8c8 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java @@ -155,11 +155,18 @@ public class ClientCsdlEdmProvider extends CsdlAbstractEdmProvider { @Override public CsdlEntityContainerInfo getEntityContainerInfo(final FullQualifiedName entityContainerName) - throws ODataException { + throws ODataException { for (CsdlSchema schema : xmlSchemas.values()) { - if (schema.getEntityContainer() != null) { - return new CsdlEntityContainerInfo().setContainerName(entityContainerName).setExtendsContainer( - schema.getEntityContainer().getExtendsContainerFQN()); + CsdlEntityContainer entityContainer = schema.getEntityContainer(); + if (entityContainer != null) { + FullQualifiedName containerFQN; + if (entityContainerName == null) { + containerFQN = new FullQualifiedName(schema.getNamespace(), entityContainer.getName()); + } else { + containerFQN = entityContainerName; + } + return new CsdlEntityContainerInfo().setContainerName(containerFQN).setExtendsContainer( + entityContainer.getExtendsContainerFQN()); } } return null; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/46cad03f/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java index 220f293..a24ca36 100644 --- a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java @@ -196,6 +196,16 @@ public class MetadataTest extends AbstractTest { assertEquals("NorthwindEntities", entityContainer.getName()); } + @Test + public void getContainerWithoutCallingGetSchemas() { + final XMLMetadata metadata = getClient().getDeserializer(ContentType.APPLICATION_XML). + toMetadata(getClass().getResourceAsStream("fromdoc1-metadata.xml")); + + Edm edm = getClient().getReader().readMetadata(metadata.getSchemaByNsOrAlias()); + + assertNotNull(edm.getEntityContainer()); + } + /** * Tests Example 85 from CSDL specification. */
