Repository: olingo-odata4
Updated Branches:
  refs/heads/master 46cad03fe -> 17e4a3aef


[OLINGO-784] Prevent NPE in combination with typeinfo objects


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/17e4a3ae
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/17e4a3ae
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/17e4a3ae

Branch: refs/heads/master
Commit: 17e4a3aeffb892667e670b71f303ea2b5522bd06
Parents: 46cad03
Author: Christian Amend <[email protected]>
Authored: Thu Oct 22 16:51:07 2015 +0200
Committer: Christian Amend <[email protected]>
Committed: Thu Oct 22 16:51:07 2015 +0200

----------------------------------------------------------------------
 .../commons/api/edm/provider/CsdlParameter.java | 16 +++++-----
 .../api/edm/provider/CsdlReturnType.java        | 10 +++---
 .../olingo/commons/core/edm/AbstractEdm.java    | 22 +++++++-------
 .../commons/core/edm/EdmParameterImpl.java      | 13 ++++----
 .../commons/core/edm/EdmPropertyImpl.java       | 21 ++++++++++---
 .../commons/core/edm/EdmReturnTypeImpl.java     | 15 +++++----
 .../olingo/commons/core/edm/EdmTermImpl.java    | 22 +++-----------
 .../core/edm/provider/EdmParameterImplTest.java | 27 +++++++++++++++++
 .../core/edm/provider/EdmPropertyImplTest.java  | 32 ++++++++++++++++++++
 .../edm/provider/EdmReturnTypeImplTest.java     | 20 ++++++++++++
 .../core/edm/provider/EdmSchemaImplTest.java    | 12 ++++----
 .../core/edm/provider/EdmTermImplTest.java      | 22 ++++++++++++++
 .../tecsvc/provider/ContainerProvider.java      |  6 ++--
 13 files changed, 172 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlParameter.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlParameter.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlParameter.java
index 4873873..089acc3 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlParameter.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlParameter.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
@@ -33,7 +33,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
 
   private String name;
 
-  private FullQualifiedName type;
+  private String type;
 
   private boolean isCollection;
 
@@ -74,7 +74,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
    * @return the type
    */
   public String getType() {
-    return type.getFullQualifiedNameAsString();
+    return type;
   }
 
   /**
@@ -83,7 +83,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
    * @return the type fQN
    */
   public FullQualifiedName getTypeFQN() {
-    return type;
+    return new FullQualifiedName(type);
   }
 
   /**
@@ -93,7 +93,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
    * @return the type
    */
   public CsdlParameter setType(final String type) {
-    this.type = new FullQualifiedName(type);
+    this.type = type;
     return this;
   }
 
@@ -104,7 +104,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
    * @return the type
    */
   public CsdlParameter setType(final FullQualifiedName type) {
-    this.type = type;
+    this.type = type.getFullQualifiedNameAsString();
     return this;
   }
 
@@ -232,7 +232,7 @@ public class CsdlParameter extends CsdlAbstractEdmItem 
implements CsdlNamed, Csd
   public List<CsdlAnnotation> getAnnotations() {
     return annotations;
   }
-  
+
   /**
    * Sets a list of annotations
    * @param annotations list of annotations

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlReturnType.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlReturnType.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlReturnType.java
index d1ec2df..7d1b02d 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlReturnType.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlReturnType.java
@@ -28,7 +28,7 @@ public class CsdlReturnType extends CsdlAbstractEdmItem {
 
   private static final long serialVersionUID = 4816954124986010965L;
 
-  private FullQualifiedName type;
+  private String type;
 
   private boolean isCollection;
 
@@ -49,7 +49,7 @@ public class CsdlReturnType extends CsdlAbstractEdmItem {
    * @return the type
    */
   public String getType() {
-    return type.getFullQualifiedNameAsString();
+    return type;
   }
 
   /**
@@ -58,7 +58,7 @@ public class CsdlReturnType extends CsdlAbstractEdmItem {
    * @return the type fQN
    */
   public FullQualifiedName getTypeFQN() {
-    return type;
+    return new FullQualifiedName(type);
   }
 
   /**
@@ -68,7 +68,7 @@ public class CsdlReturnType extends CsdlAbstractEdmItem {
    * @return the type
    */
   public CsdlReturnType setType(final String type) {
-    this.type = new FullQualifiedName(type);
+    this.type = type;
     return this;
   }
 
@@ -79,7 +79,7 @@ public class CsdlReturnType extends CsdlAbstractEdmItem {
    * @return the type
    */
   public CsdlReturnType setType(final FullQualifiedName type) {
-    this.type = type;
+    this.type = type.getFullQualifiedNameAsString();
     return this;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
index 71f4d70..b31b827 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java
@@ -40,7 +40,6 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
 public abstract class AbstractEdm implements Edm {
 
   protected Map<String, EdmSchema> schemas;
-
   protected List<EdmSchema> schemaList;
 
   private final Map<FullQualifiedName, EdmEntityContainer> entityContainers =
@@ -79,8 +78,7 @@ public abstract class AbstractEdm implements Edm {
   private final Map<TargetQualifierMapKey, EdmAnnotations> annotationGroups =
       Collections.synchronizedMap(new HashMap<TargetQualifierMapKey, 
EdmAnnotations>());
 
-  private Map<String, String> aliasToNamespaceInfo = 
Collections.synchronizedMap(new HashMap<String, String>());
-  private boolean aliasToNamespaceInfoCreated = false;
+  private Map<String, String> aliasToNamespaceInfo = null;
 
   @Override
   public List<EdmSchema> getSchemas() {
@@ -98,18 +96,15 @@ public abstract class AbstractEdm implements Edm {
 
     EdmSchema schema = schemas.get(namespace);
     if (schema == null) {
-      if (!aliasToNamespaceInfoCreated) {
-        aliasToNamespaceInfo = createAliasToNamespaceInfo();
-      }
       schema = schemas.get(aliasToNamespaceInfo.get(namespace));
     }
-
     return schema;
   }
 
   private void initSchemas() {
-    schemas = createSchemas();
-    aliasToNamespaceInfoCreated = true;
+    loadAliasToNamespaceInfo();
+    Map<String, EdmSchema> localSchemas = createSchemas();
+    schemas = Collections.synchronizedMap(localSchemas);
 
     if (schemas == null) {
       schemas = Collections.emptyMap();
@@ -117,6 +112,11 @@ public abstract class AbstractEdm implements Edm {
     schemaList = Collections.unmodifiableList(new 
ArrayList<EdmSchema>(schemas.values()));
   }
 
+  private void loadAliasToNamespaceInfo() {
+    Map<String, String> localAliasToNamespaceInfo = 
createAliasToNamespaceInfo();
+    aliasToNamespaceInfo = 
Collections.synchronizedMap(localAliasToNamespaceInfo);
+  }
+
   @Override
   public EdmEntityContainer getEntityContainer() {
     return getEntityContainer(null);
@@ -311,8 +311,8 @@ public abstract class AbstractEdm implements Edm {
   }
 
   private FullQualifiedName resolvePossibleAlias(final FullQualifiedName 
namespaceOrAliasFQN) {
-    if (!aliasToNamespaceInfoCreated) {
-      aliasToNamespaceInfo = createAliasToNamespaceInfo();
+    if (aliasToNamespaceInfo == null) {
+      loadAliasToNamespaceInfo();
     }
     FullQualifiedName finalFQN = null;
     if (namespaceOrAliasFQN != null) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmParameterImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmParameterImpl.java
index 622dd05..69af130 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmParameterImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmParameterImpl.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
@@ -30,13 +30,11 @@ import 
org.apache.olingo.commons.api.edm.provider.CsdlParameter;
 public class EdmParameterImpl extends AbstractEdmNamed implements 
EdmParameter, EdmElement {
 
   private final CsdlParameter parameter;
-  private final EdmTypeInfo typeInfo;
   private EdmType typeImpl;
 
   public EdmParameterImpl(final Edm edm, final CsdlParameter parameter) {
     super(edm, parameter.getName(), parameter);
     this.parameter = parameter;
-    typeInfo = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(parameter.getType()).build();
   }
 
   @Override
@@ -77,9 +75,12 @@ public class EdmParameterImpl extends AbstractEdmNamed 
implements EdmParameter,
   @Override
   public EdmType getType() {
     if (typeImpl == null) {
-      typeImpl = typeInfo.getType();
+      if (parameter.getType() == null) {
+        throw new EdmException("Parameter " + parameter.getName() + " must 
hava a full qualified type.");
+      }
+      typeImpl = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(parameter.getType()).build().getType();
       if (typeImpl == null) {
-        throw new EdmException("Cannot find type with name: " + 
typeInfo.getFullQualifiedName());
+        throw new EdmException("Cannot find type with name: " + 
parameter.getTypeFQN());
       }
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmPropertyImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmPropertyImpl.java
index 830741b..5385d8a 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmPropertyImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmPropertyImpl.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
@@ -30,19 +30,22 @@ import 
org.apache.olingo.commons.api.edm.provider.CsdlProperty;
 public class EdmPropertyImpl extends AbstractEdmNamed implements EdmProperty, 
EdmElement {
 
   private final CsdlProperty property;
-  private final EdmTypeInfo typeInfo;
+  private EdmTypeInfo typeInfo;
   private EdmType propertyType;
 
   public EdmPropertyImpl(final Edm edm, final CsdlProperty property) {
     super(edm, property.getName(), property);
 
     this.property = property;
-    typeInfo = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(property.getType().toString()).build();
+
   }
 
   @Override
   public EdmType getType() {
     if (propertyType == null) {
+      if (typeInfo == null) {
+        buildTypeInfo();
+      }
       propertyType = typeInfo.getType();
       if (propertyType == null) {
         throw new EdmException("Cannot find type with name: " + 
typeInfo.getFullQualifiedName());
@@ -52,6 +55,13 @@ public class EdmPropertyImpl extends AbstractEdmNamed 
implements EdmProperty, Ed
     return propertyType;
   }
 
+  private void buildTypeInfo() {
+    if (property.getType() == null) {
+      throw new EdmException("Property " + property.getName() + " must hava a 
full qualified type.");
+    }
+    typeInfo = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(property.getType().toString()).build();
+  }
+
   @Override
   public boolean isCollection() {
     return property.isCollection();
@@ -104,6 +114,9 @@ public class EdmPropertyImpl extends AbstractEdmNamed 
implements EdmProperty, Ed
 
   @Override
   public boolean isPrimitive() {
+    if (typeInfo == null) {
+      buildTypeInfo();
+    }
     return typeInfo.isPrimitiveType();
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReturnTypeImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReturnTypeImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReturnTypeImpl.java
index 37d3f26..a3e98da 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReturnTypeImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReturnTypeImpl.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
@@ -28,12 +28,12 @@ import 
org.apache.olingo.commons.api.edm.provider.CsdlReturnType;
 public class EdmReturnTypeImpl implements EdmReturnType {
 
   private final CsdlReturnType returnType;
-  private final EdmTypeInfo typeInfo;
+  private final Edm edm;
   private EdmType typeImpl;
 
   public EdmReturnTypeImpl(final Edm edm, final CsdlReturnType returnType) {
+    this.edm = edm;
     this.returnType = returnType;
-    typeInfo = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(returnType.getType()).build();
   }
 
   @Override
@@ -69,9 +69,12 @@ public class EdmReturnTypeImpl implements EdmReturnType {
   @Override
   public EdmType getType() {
     if (typeImpl == null) {
-      typeImpl = typeInfo.getType();
+      if (returnType.getType() == null) {
+        throw new EdmException("Return types must hava a full qualified 
type.");
+      }
+      typeImpl = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(returnType.getType()).build().getType();
       if (typeImpl == null) {
-        throw new EdmException("Cannot find type with name: " + 
typeInfo.getFullQualifiedName());
+        throw new EdmException("Cannot find type with name: " + 
returnType.getType());
       }
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java
index b15831c..f585bbc 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java
@@ -30,23 +30,19 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.TargetType;
 import org.apache.olingo.commons.api.edm.geo.SRID;
 import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
-import 
org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 
 public class EdmTermImpl extends AbstractEdmNamed implements EdmTerm {
 
   private final CsdlTerm term;
   private final FullQualifiedName fqn;
-  private final EdmTypeInfo typeInfo;
   private EdmType termType;
   private EdmTerm baseTerm;
   private List<TargetType> appliesTo;
 
   public EdmTermImpl(final Edm edm, final String namespace, final CsdlTerm 
term) {
     super(edm, term.getName(), term);
-
     this.term = term;
     fqn = new FullQualifiedName(namespace, term.getName());
-    typeInfo = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(term.getType()).build();
   }
 
   @Override
@@ -57,22 +53,14 @@ public class EdmTermImpl extends AbstractEdmNamed 
implements EdmTerm {
   @Override
   public EdmType getType() {
     if (termType == null) {
-      termType = typeInfo.isPrimitiveType()
-          ? 
EdmPrimitiveTypeFactory.getInstance(typeInfo.getPrimitiveTypeKind())
-          : typeInfo.isTypeDefinition()
-              ? typeInfo.getTypeDefinition()
-              : typeInfo.isEnumType()
-                  ? typeInfo.getEnumType()
-                  : typeInfo.isComplexType()
-                      ? typeInfo.getComplexType()
-                      : typeInfo.isEntityType()
-                          ? typeInfo.getEntityType()
-                          : null;
+      if (term.getType() == null) {
+        throw new EdmException("Terms must hava a full qualified type.");
+      }
+      termType = new 
EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(term.getType()).build().getType();
       if (termType == null) {
-        throw new EdmException("Cannot find type with name: " + 
typeInfo.getFullQualifiedName());
+        throw new EdmException("Cannot find type with name: " + 
term.getType());
       }
     }
-
     return termType;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java
index 8a25f38..c174bf2 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java
@@ -20,10 +20,14 @@ package org.apache.olingo.server.core.edm.provider;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmException;
 import org.apache.olingo.commons.api.edm.EdmParameter;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
@@ -43,6 +47,29 @@ import org.junit.Test;
 public class EdmParameterImplTest {
 
   @Test
+  public void initialParameter() {
+    EdmParameterImpl parameter = new EdmParameterImpl(mock(Edm.class), new 
CsdlParameter());
+
+    assertTrue(parameter.isNullable());
+    assertFalse(parameter.isCollection());
+    assertNull(parameter.getName());
+    assertNull(parameter.getMapping());
+    assertNull(parameter.getMaxLength());
+    assertNull(parameter.getPrecision());
+    assertNull(parameter.getScale());
+    assertNull(parameter.getSrid());
+    assertNotNull(parameter.getAnnotations());
+    assertTrue(parameter.getAnnotations().isEmpty());
+
+    try {
+      parameter.getType();
+      fail("EdmException expected");
+    } catch (EdmException e) {
+      assertEquals("Parameter null must hava a full qualified type.", 
e.getMessage());
+    }
+  }
+
+  @Test
   public void getTypeReturnsPrimitiveType() {
     EdmProviderImpl edm = new EdmProviderImpl(mock(CsdlEdmProvider.class));
     CsdlParameter parameterProvider = new CsdlParameter();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java
index 346baf2..ef45af5 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java
@@ -20,12 +20,14 @@ package org.apache.olingo.server.core.edm.provider;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
@@ -45,6 +47,36 @@ import org.junit.Test;
 public class EdmPropertyImplTest {
 
   @Test
+  public void initialProperty() {
+    EdmProperty property = new EdmPropertyImpl(mock(Edm.class), new 
CsdlProperty());
+
+    assertTrue(property.isNullable());
+    assertFalse(property.isCollection());
+    assertNull(property.getName());
+    assertNull(property.getMapping());
+    assertNull(property.getMaxLength());
+    assertNull(property.getPrecision());
+    assertNull(property.getScale());
+    assertNull(property.getSrid());
+    assertNotNull(property.getAnnotations());
+    assertTrue(property.getAnnotations().isEmpty());
+
+    try {
+      property.getType();
+      fail("EdmException expected");
+    } catch (EdmException e) {
+      assertEquals("Property null must hava a full qualified type.", 
e.getMessage());
+    }
+   
+    try {
+      property.isPrimitive();
+      fail("EdmException expected");
+    } catch (EdmException e) {
+      assertEquals("Property null must hava a full qualified type.", 
e.getMessage());
+    }
+  }
+  
+  @Test
   public void getTypeReturnsPrimitiveType() {
     EdmProviderImpl edm = new EdmProviderImpl(mock(CsdlEdmProvider.class));
     CsdlProperty propertyProvider = new CsdlProperty();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java
index 7b36854..bc7b62e 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java
@@ -22,9 +22,11 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmComplexType;
 import org.apache.olingo.commons.api.edm.EdmEntityType;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
@@ -43,6 +45,24 @@ import org.junit.Test;
 public class EdmReturnTypeImplTest {
 
   @Test
+  public void initialReturnType() {
+    EdmReturnType returnType = new EdmReturnTypeImpl(mock(Edm.class), new 
CsdlReturnType());
+
+    assertTrue(returnType.isNullable());
+    assertNull(returnType.getMaxLength());
+    assertNull(returnType.getPrecision());
+    assertNull(returnType.getScale());
+    assertNull(returnType.getSrid());
+
+    try {
+      returnType.getType();
+      fail("EdmException expected");
+    } catch (EdmException e) {
+      assertEquals("Return types must hava a full qualified type.", 
e.getMessage());
+    }
+  }
+  
+  @Test
   public void primitiveReturnType() {
     CsdlReturnType providerType = new CsdlReturnType().setType(new 
FullQualifiedName("Edm", "String"));
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
index 22a371e..e6502af 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.olingo.commons.api.edm.Edm;
@@ -173,7 +174,7 @@ public class EdmSchemaImplTest {
     for (EdmFunction function : functions) {
       FullQualifiedName functionName = new FullQualifiedName(NAMESPACE, 
function.getName());
       assertTrue(function == edm.getUnboundFunction(functionName, null));
-      
+
       functionName = new FullQualifiedName(ALIAS, function.getName());
       assertTrue(function == edm.getUnboundFunction(functionName, null));
     }
@@ -193,7 +194,6 @@ public class EdmSchemaImplTest {
     }
   }
 
-  
   @Test
   public void getContainer() {
     EdmEntityContainer container = schema.getEntityContainer();
@@ -301,7 +301,7 @@ public class EdmSchemaImplTest {
 
     @Override
     public List<CsdlAliasInfo> getAliasInfos() throws ODataException {
-      throw new RuntimeException("Provider must not be called in the schema 
case");
+      return Collections.emptyList();
     }
 
     @Override
@@ -373,17 +373,17 @@ public class EdmSchemaImplTest {
       functions.add(new CsdlFunction().setName("function1"));
       functions.add(new CsdlFunction().setName("function2"));
       providerSchema.setFunctions(functions);
-      
+
       List<CsdlAnnotations> annotationGroups = new 
ArrayList<CsdlAnnotations>();
       annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + 
".entityType1"));
       annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + 
".entityType2"));
       providerSchema.setAnnotationsGroup(annotationGroups);
-      
+
       List<CsdlTerm> terms = new ArrayList<CsdlTerm>();
       terms.add(new CsdlTerm().setName("term1").setType("Edm.String"));
       terms.add(new CsdlTerm().setName("term2").setType("Edm.String"));
       providerSchema.setTerms(terms);
-      
+
       ArrayList<CsdlSchema> schemas = new ArrayList<CsdlSchema>();
       schemas.add(providerSchema);
       return schemas;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java
index cfd54bd..80d1fb5 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java
@@ -54,6 +54,28 @@ public class EdmTermImplTest {
   private EdmTerm initialTerm;
   private EdmTerm derivedTerm;
 
+  @Test
+  public void initialTerm() {
+    EdmTerm term = new EdmTermImpl(mock(Edm.class), "namespace", new 
CsdlTerm());
+
+    assertTrue(term.isNullable());
+    assertNull(term.getName());
+    assertNull(term.getMaxLength());
+    assertNull(term.getPrecision());
+    assertNull(term.getScale());
+    assertNull(term.getSrid());
+    assertNotNull(term.getAnnotations());
+    assertTrue(term.getAnnotations().isEmpty());
+
+    assertNotNull(term.getFullQualifiedName());
+    try {
+      term.getType();
+      fail("EdmException expected");
+    } catch (EdmException e) {
+      assertEquals("Terms must hava a full qualified type.", e.getMessage());
+    }
+  }
+
   @Before
   public void setupTypes() throws Exception {
     CsdlEdmProvider provider = mock(CsdlEdmProvider.class);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/17e4a3ae/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
----------------------------------------------------------------------
diff --git 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
index f267657..f5fb038 100644
--- 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
+++ 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
@@ -190,19 +190,19 @@ public class ContainerProvider {
                 Arrays
                     .asList(
                         new CsdlAnnotation()
-                            .setTerm("Core.Description")
+                            .setTerm("Org.OData.Core.V1.Description")
                             .setExpression(
                                 new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String)
                                     .setValue("Contains entities with 
collection of each primitive type")),
                         new CsdlAnnotation()
-                            .setTerm("Core.LongDescription")
+                            .setTerm("Org.OData.Core.V1.LongDescription")
                             .setQualifier("EnabledForEntitySet")
                             .setExpression(
                                 new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String)
                                     .setValue("System Query Options: $filter, 
$count, $orderby, "
                                         + "$skip, $top, $expand, $select, 
$format; Operations: Create, Read")),
                         new CsdlAnnotation()
-                            .setTerm("Core.LongDescription")
+                            .setTerm("Org.OData.Core.V1.LongDescription")
                             .setQualifier("EnabledForEntity")
                             .setExpression(
                                 new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String)

Reply via email to