@Override public EdmType getType() { if (propertyType == null) { final FullQualifiedName typeName = getTypeFQN(); if (isPrimitive()) { try { propertyType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.valueOf(typeName.getName())); } catch (IllegalArgumentException e) { throw new EdmException("Cannot find type with name: " + typeName, e); } } else { propertyType = edm.getComplexType(typeName); if (propertyType == null) { propertyType = edm.getEnumType(typeName); if (propertyType == null) { propertyType = edm.getTypeDefinition(typeName); if (propertyType == null) { throw new EdmException("Cannot find type with name: " + typeName); } } } } } return propertyType; }