You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/03/26 18:21:01 UTC

[3/6] git commit: [OLINGO-194] geospatial literals

[OLINGO-194] geospatial literals


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

Branch: refs/heads/olingo200
Commit: 7651350846cca10d3a03655d95da4acdb8ee8af5
Parents: c1b8976
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 26 16:44:36 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 26 16:44:36 2014 +0100

----------------------------------------------------------------------
 .../olingo/client/api/CommonODataClient.java    |   3 -
 .../olingo/client/core/AbstractODataClient.java |   8 +-
 .../cud/ODataValueUpdateRequestImpl.java        |   2 +-
 .../request/retrieve/ODataValueRequestImpl.java |   2 +-
 .../core/domain/ODataGeospatialValueImpl.java   | 130 -----
 .../core/domain/ODataPrimitiveValueImpl.java    | 177 ------
 .../olingo/client/core/edm/EdmEnumTypeImpl.java |   4 +-
 .../client/core/edm/EdmTypeDefinitionImpl.java  |   2 +-
 .../client/core/op/AbstractODataBinder.java     |  31 +-
 .../apache/olingo/client/core/uri/URIUtils.java |  42 +-
 .../client/core/AbstractPrimitiveTest.java      |  62 +--
 .../client/core/it/v3/OpenTypeTestITCase.java   |  14 +-
 .../olingo/client/core/v3/EntityTest.java       |  17 +-
 .../olingo/client/core/v3/MetadataTest.java     |   4 +-
 .../client/core/v3/PrimitiveValueTest.java      |  77 ++-
 .../olingo/client/core/v4/MetadataTest.java     |   4 +-
 .../olingo/commons/api/data/GeoUtils.java       |   9 +-
 .../commons/api/domain/AbstractODataValue.java  |  20 -
 .../api/domain/ODataGeospatialValue.java        |  57 --
 .../commons/api/domain/ODataObjectFactory.java  |   9 -
 .../commons/api/domain/ODataProperty.java       |  18 -
 .../olingo/commons/api/domain/ODataValue.java   |  14 -
 .../commons/api/edm/EdmGeospatialType.java      |  34 --
 .../commons/api/edm/geo/ComposedGeospatial.java |  22 +-
 .../olingo/commons/api/edm/geo/Geospatial.java  |  36 +-
 .../api/edm/geo/GeospatialCollection.java       |  15 +-
 .../olingo/commons/api/edm/geo/LineString.java  |   4 +-
 .../commons/api/edm/geo/MultiLineString.java    |   8 +-
 .../olingo/commons/api/edm/geo/MultiPoint.java  |   4 +-
 .../commons/api/edm/geo/MultiPolygon.java       |   8 +-
 .../olingo/commons/api/edm/geo/Point.java       |   8 +-
 .../olingo/commons/api/edm/geo/Polygon.java     |  18 +-
 .../core/data/AtomGeoValueDeserializer.java     |  46 +-
 .../core/data/AtomGeoValueSerializer.java       |   4 +-
 .../core/data/JSONGeoValueDeserializer.java     |  73 ++-
 .../core/data/JSONGeoValueSerializer.java       |   8 +-
 .../core/domain/ODataPrimitiveValueImpl.java    | 171 ++++++
 .../commons/core/edm/AbstractEdmParameter.java  |   2 +-
 .../AbstractEdmGeospatialType.java              |  76 ---
 .../primitivetype/AbstractGeospatialType.java   | 539 +++++++++++++++++++
 .../core/edm/primitivetype/EdmGeography.java    |  19 +-
 .../primitivetype/EdmGeographyCollection.java   |  33 +-
 .../primitivetype/EdmGeographyLineString.java   |  32 +-
 .../EdmGeographyMultiLineString.java            |  33 +-
 .../primitivetype/EdmGeographyMultiPoint.java   |  33 +-
 .../primitivetype/EdmGeographyMultiPolygon.java |  32 +-
 .../edm/primitivetype/EdmGeographyPoint.java    |  29 +-
 .../edm/primitivetype/EdmGeographyPolygon.java  |  32 +-
 .../core/edm/primitivetype/EdmGeometry.java     |  19 +-
 .../primitivetype/EdmGeometryCollection.java    |  32 +-
 .../primitivetype/EdmGeometryLineString.java    |  32 +-
 .../EdmGeometryMultiLineString.java             |  33 +-
 .../primitivetype/EdmGeometryMultiPoint.java    |  33 +-
 .../primitivetype/EdmGeometryMultiPolygon.java  |  33 +-
 .../edm/primitivetype/EdmGeometryPoint.java     |  28 +-
 .../edm/primitivetype/EdmGeometryPolygon.java   |  32 +-
 .../primitivetype/EdmPrimitiveTypeFactory.java  |  31 +-
 .../commons/core/edm/primitivetype/EdmTime.java |   5 +
 .../commons/core/op/ODataObjectFactoryImpl.java |   6 -
 .../primitivetype/CommonPrimitiveTypeTest.java  | 170 +++---
 .../core/edm/primitivetype/EdmBinaryTest.java   |   2 +-
 .../core/edm/primitivetype/EdmBooleanTest.java  |   2 +-
 .../core/edm/primitivetype/EdmByteTest.java     |   2 +-
 .../core/edm/primitivetype/EdmDateTest.java     |   2 +-
 .../primitivetype/EdmDateTimeOffsetTest.java    |   2 +-
 .../core/edm/primitivetype/EdmDecimalTest.java  |  16 +-
 .../core/edm/primitivetype/EdmDoubleTest.java   |  14 +-
 .../core/edm/primitivetype/EdmDurationTest.java |   2 +-
 .../core/edm/primitivetype/EdmGeoTest.java      | 174 ++++++
 .../core/edm/primitivetype/EdmGuidTest.java     |   2 +-
 .../core/edm/primitivetype/EdmInt16Test.java    |   6 +-
 .../core/edm/primitivetype/EdmInt32Test.java    |   8 +-
 .../core/edm/primitivetype/EdmInt64Test.java    |  10 +-
 .../core/edm/primitivetype/EdmNullTest.java     |  20 +-
 .../core/edm/primitivetype/EdmSByteTest.java    |   2 +-
 .../core/edm/primitivetype/EdmSingleTest.java   |  12 +-
 .../core/edm/primitivetype/EdmStringTest.java   |   2 +-
 .../edm/primitivetype/EdmTimeOfDayTest.java     |   2 +-
 .../core/edm/primitivetype/UInt7Test.java       |   2 +-
 .../core/edm/provider/EdmEnumTypeImpl.java      |   4 +-
 .../edm/provider/EdmTypeDefinitionImpl.java     |   2 +-
 .../core/uri/parser/UriParseTreeVisitor.java    |   6 +-
 .../server/core/edm/provider/EdmEnumTest.java   |   2 +-
 .../edm/provider/EdmFunctionImportImplTest.java |   2 +-
 .../edm/provider/EdmReturnTypeImplTest.java     |   4 +-
 .../edm/provider/EdmTypeDefinitionImplTest.java |   2 +-
 .../server/core/uri/UriResourceImplTest.java    |   4 +-
 87 files changed, 1692 insertions(+), 1095 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
index e863d0d..e811744 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
@@ -26,7 +26,6 @@ import org.apache.olingo.client.api.communication.request.retrieve.CommonRetriev
 import org.apache.olingo.client.api.communication.request.streamed.CommonStreamedRequestFactory;
 import org.apache.olingo.client.api.op.ClientODataDeserializer;
 import org.apache.olingo.commons.api.domain.ODataObjectFactory;
-import org.apache.olingo.commons.api.domain.ODataGeospatialValue;
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.client.api.op.CommonODataBinder;
 import org.apache.olingo.client.api.op.CommonODataReader;
@@ -50,8 +49,6 @@ public interface CommonODataClient {
 
   ODataPrimitiveValue.Builder getPrimitiveValueBuilder();
 
-  ODataGeospatialValue.Builder getGeospatialValueBuilder();
-
   ODataSerializer getSerializer();
 
   ClientODataDeserializer getDeserializer();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/AbstractODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/AbstractODataClient.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/AbstractODataClient.java
index 4197094..80c8d16 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/AbstractODataClient.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/AbstractODataClient.java
@@ -21,8 +21,7 @@ package org.apache.olingo.client.core;
 import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.commons.api.domain.ODataObjectFactory;
 import org.apache.olingo.client.api.op.ODataWriter;
-import org.apache.olingo.client.core.domain.ODataGeospatialValueImpl;
-import org.apache.olingo.client.core.domain.ODataPrimitiveValueImpl;
+import org.apache.olingo.commons.core.domain.ODataPrimitiveValueImpl;
 import org.apache.olingo.commons.core.op.ODataObjectFactoryImpl;
 import org.apache.olingo.client.core.op.ODataWriterImpl;
 
@@ -40,11 +39,6 @@ public abstract class AbstractODataClient implements CommonODataClient {
   }
 
   @Override
-  public ODataGeospatialValueImpl.BuilderImpl getGeospatialValueBuilder() {
-    return new ODataGeospatialValueImpl.BuilderImpl();
-  }
-
-  @Override
   public ODataWriter getWriter() {
     return writer;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataValueUpdateRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataValueUpdateRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataValueUpdateRequestImpl.java
index d424d62..5876f49 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataValueUpdateRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataValueUpdateRequestImpl.java
@@ -35,7 +35,7 @@ import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.client.core.communication.request.AbstractODataBasicRequest;
 import org.apache.olingo.client.core.communication.response.AbstractODataResponse;
-import org.apache.olingo.client.core.domain.ODataPrimitiveValueImpl;
+import org.apache.olingo.commons.core.domain.ODataPrimitiveValueImpl;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 
 /**

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataValueRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataValueRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataValueRequestImpl.java
index 345bc58..2d7feed 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataValueRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataValueRequestImpl.java
@@ -28,7 +28,7 @@ import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.format.ODataValueFormat;
 import org.apache.olingo.client.api.http.HttpClientException;
-import org.apache.olingo.client.core.domain.ODataPrimitiveValueImpl;
+import org.apache.olingo.commons.core.domain.ODataPrimitiveValueImpl;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 
 /**

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataGeospatialValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataGeospatialValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataGeospatialValueImpl.java
deleted file mode 100644
index daa63a3..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataGeospatialValueImpl.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.domain;
-
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.olingo.commons.api.domain.AbstractODataValue;
-import org.apache.olingo.commons.api.domain.ODataGeospatialValue;
-import org.apache.olingo.commons.api.edm.EdmGeospatialType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-
-public class ODataGeospatialValueImpl extends AbstractODataValue implements ODataGeospatialValue {
-
-  private static final long serialVersionUID = 8277433906326348952L;
-
-  public static class BuilderImpl implements Builder {
-
-    private final ODataGeospatialValueImpl instance;
-
-    public BuilderImpl() {
-      this.instance = new ODataGeospatialValueImpl();
-    }
-
-    @Override
-    public BuilderImpl setType(final EdmPrimitiveTypeKind type) {
-      if (type != null && !type.isGeospatial()) {
-        throw new IllegalArgumentException("Don't use this for non-geospatial types");
-      }
-      if (type == EdmPrimitiveTypeKind.Geography || type == EdmPrimitiveTypeKind.Geometry) {
-        throw new IllegalArgumentException(
-                type + "is not an instantiable type. "
-                + "An entity can declare a property to be of type Geometry. "
-                + "An instance of an entity MUST NOT have a value of type Geometry. "
-                + "Each value MUST be of some subtype.");
-      }
-
-      if (type != null) {
-        this.instance.typeKind = type;
-        this.instance.type = EdmPrimitiveTypeFactory.getGeoInstance(type);
-      }
-
-      return this;
-    }
-
-    @Override
-    public BuilderImpl setValue(final Geospatial value) {
-      this.instance.value = value;
-      if (value != null) {
-        setType(value.getEdmPrimitiveTypeKind());
-      }
-      return this;
-    }
-
-    @Override
-    public ODataGeospatialValueImpl build() {
-      if (this.instance.type == null) {
-        throw new IllegalArgumentException("Must provide geospatial type");
-      }
-      if (this.instance.value == null) {
-        throw new IllegalArgumentException("Must provide geospatial value");
-      }
-
-      return this.instance;
-    }
-  }
-
-  /**
-   * Type kind.
-   */
-  private EdmPrimitiveTypeKind typeKind;
-
-  /**
-   * Type.
-   */
-  private EdmGeospatialType type;
-
-  /**
-   * Value.
-   */
-  private Geospatial value;
-
-  @Override
-  public EdmPrimitiveTypeKind getTypeKind() {
-    return typeKind;
-  }
-
-  @Override
-  public EdmGeospatialType getType() {
-    return type;
-  }
-
-  @Override
-  public Geospatial toValue() {
-    return value;
-  }
-
-  @Override
-  public <T extends Geospatial> T toCastValue(final Class<T> reference) {
-    return reference.cast(this.value);
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataPrimitiveValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataPrimitiveValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataPrimitiveValueImpl.java
deleted file mode 100644
index a15dd76..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ODataPrimitiveValueImpl.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.domain;
-
-import java.sql.Timestamp;
-import java.util.Calendar;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.olingo.commons.api.Constants;
-import org.apache.olingo.commons.api.domain.AbstractODataValue;
-import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-
-public class ODataPrimitiveValueImpl extends AbstractODataValue implements ODataPrimitiveValue {
-
-  private static final long serialVersionUID = 8889282662298376036L;
-
-  public static class BuilderImpl implements Builder {
-
-    private final ODataServiceVersion version;
-
-    private final ODataPrimitiveValueImpl instance;
-
-    public BuilderImpl(final ODataServiceVersion version) {
-      this.version = version;
-      this.instance = new ODataPrimitiveValueImpl();
-    }
-
-    @Override
-    public BuilderImpl setType(final EdmPrimitiveTypeKind type) {
-      if (type != null && !type.getSupportedVersions().contains(version)) {
-        throw new IllegalArgumentException(String.format(
-                "Type %s not supported by OData version %s", type.toString(), version));
-      }
-      if (type == EdmPrimitiveTypeKind.Stream) {
-        throw new IllegalArgumentException(String.format(
-                "Cannot build a primitive value for %s", EdmPrimitiveTypeKind.Stream.toString()));
-      }
-      if (type != null && type.isGeospatial()) {
-        throw new IllegalArgumentException("Don't use this for geospatial types");
-      }
-
-      this.instance.typeKind = type == null ? EdmPrimitiveTypeKind.String : type;
-      this.instance.type = EdmPrimitiveTypeFactory.getNonGeoInstance(this.instance.typeKind);
-
-      return this;
-    }
-
-    @Override
-    public BuilderImpl setText(final String text) {
-      this.instance.text = text;
-      return this;
-    }
-
-    @Override
-    public BuilderImpl setValue(final Object value) {
-      this.instance.value = value;
-      return this;
-    }
-
-    @Override
-    public ODataPrimitiveValueImpl build() {
-      if (this.instance.text == null && this.instance.value == null) {
-        throw new IllegalArgumentException("Must provide either text or value");
-      }
-      if (this.instance.text != null && this.instance.value != null) {
-        throw new IllegalArgumentException("Cannot provide both text and value");
-      }
-
-      if (this.instance.type == null) {
-        setType(EdmPrimitiveTypeKind.String);
-      }
-
-      if (this.instance.text != null) {
-        final Class<?> returnType = this.instance.type.getDefaultType().isAssignableFrom(Calendar.class)
-                ? Timestamp.class : this.instance.type.getDefaultType();
-        try {
-          // TODO: when Edm is available, set facets when calling this method
-          this.instance.value = this.instance.type.valueOfString(
-                  this.instance.text, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null,
-                  returnType);
-        } catch (EdmPrimitiveTypeException e) {
-          throw new IllegalArgumentException(e);
-        }
-      }
-      if (this.instance.value != null) {
-        try {
-          // TODO: when Edm is available, set facets when calling this method
-          this.instance.text = this.instance.type.valueToString(
-                  this.instance.value, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null);
-        } catch (EdmPrimitiveTypeException e) {
-          throw new IllegalArgumentException(e);
-        }
-      }
-
-      return this.instance;
-    }
-  }
-
-  /**
-   * Type kind.
-   */
-  private EdmPrimitiveTypeKind typeKind;
-
-  /**
-   * Type.
-   */
-  private EdmPrimitiveType type;
-
-  /**
-   * Text value.
-   */
-  private String text;
-
-  /**
-   * Actual value.
-   */
-  private Object value;
-
-  @Override
-  public EdmPrimitiveTypeKind getTypeKind() {
-    return typeKind;
-  }
-
-  @Override
-  public EdmPrimitiveType getType() {
-    return type;
-  }
-
-  @Override
-  public Object toValue() {
-    return this.value;
-  }
-
-  @Override
-  public <T> T toCastValue(final Class<T> reference) throws EdmPrimitiveTypeException {
-    // TODO: when Edm is available, set facets when calling this method
-    return type.valueOfString(this.text, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null,
-            reference);
-  }
-
-  @Override
-  public String toString() {
-    return this.text;
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEnumTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEnumTypeImpl.java
index 05cfa27..bba016b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEnumTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEnumTypeImpl.java
@@ -62,9 +62,9 @@ public class EdmEnumTypeImpl extends AbstractEdmEnumType implements EdmEnumType
     super(edm, fqn, xmlEnumType.isFlags());
 
     if (xmlEnumType.getUnderlyingType() == null) {
-      this.underlyingType = EdmPrimitiveTypeFactory.getNonGeoInstance(EdmPrimitiveTypeKind.Int32);
+      this.underlyingType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32);
     } else {
-      this.underlyingType = EdmPrimitiveTypeFactory.getNonGeoInstance(
+      this.underlyingType = EdmPrimitiveTypeFactory.getInstance(
               EdmPrimitiveTypeKind.valueOfFQN(version, xmlEnumType.getUnderlyingType()));
       if (!ArrayUtils.contains(VALID_UNDERLYING_TYPES, this.underlyingType.getKind())) {
         throw new EdmException("Not allowed as underlying type: " + this.underlyingType.getKind());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
index 199d61e..3c146ec 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
@@ -41,7 +41,7 @@ public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition implements
     super(edm, typeDefinitionName);
     this.typeDefinition = typeDefinition;
     try {
-      this.edmPrimitiveTypeInstance = EdmPrimitiveTypeFactory.getNonGeoInstance(
+      this.edmPrimitiveTypeInstance = EdmPrimitiveTypeFactory.getInstance(
               EdmPrimitiveTypeKind.valueOfFQN(version, typeDefinition.getUnderlyingType()));
     } catch (IllegalArgumentException e) {
       throw new EdmException("Invalid underlying type: " + typeDefinition.getUnderlyingType(), e);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
index 44e7ad4..746b016 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
@@ -18,19 +18,20 @@
  */
 package org.apache.olingo.client.core.op;
 
-import org.apache.olingo.commons.core.op.ResourceFactory;
 import java.io.StringWriter;
 import java.net.URI;
 import java.util.Iterator;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.client.api.CommonODataClient;
+import org.apache.olingo.client.api.data.ServiceDocument;
+import org.apache.olingo.client.api.data.ServiceDocumentItem;
+import org.apache.olingo.client.api.op.CommonODataBinder;
+import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.data.Entry;
 import org.apache.olingo.commons.api.data.Feed;
 import org.apache.olingo.commons.api.data.Link;
 import org.apache.olingo.commons.api.data.Property;
-import org.apache.olingo.client.api.data.ServiceDocument;
-import org.apache.olingo.client.api.data.ServiceDocumentItem;
 import org.apache.olingo.commons.api.data.Value;
 import org.apache.olingo.commons.api.domain.ODataCollectionValue;
 import org.apache.olingo.commons.api.domain.ODataComplexValue;
@@ -43,8 +44,9 @@ import org.apache.olingo.commons.api.domain.ODataOperation;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.domain.ODataServiceDocument;
 import org.apache.olingo.commons.api.domain.ODataValue;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
-import org.apache.olingo.client.api.op.CommonODataBinder;
 import org.apache.olingo.commons.core.data.CollectionValueImpl;
 import org.apache.olingo.commons.core.data.ComplexValueImpl;
 import org.apache.olingo.commons.core.data.GeospatialValueImpl;
@@ -52,8 +54,7 @@ import org.apache.olingo.commons.core.data.JSONPropertyImpl;
 import org.apache.olingo.commons.core.data.LinkImpl;
 import org.apache.olingo.commons.core.data.NullValueImpl;
 import org.apache.olingo.commons.core.data.PrimitiveValueImpl;
-import org.apache.olingo.client.core.uri.URIUtils;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.core.op.ResourceFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -232,9 +233,9 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
     if (value == null) {
       valueResource = new NullValueImpl();
     } else if (value.isPrimitive()) {
-      valueResource = new PrimitiveValueImpl(value.asPrimitive().toString());
-    } else if (value.isGeospatial()) {
-      valueResource = new GeospatialValueImpl(value.asGeospatial().toValue());
+      valueResource = value.asPrimitive().getTypeKind().isGeospatial()
+              ? new GeospatialValueImpl((Geospatial) value.asPrimitive().toValue())
+              : new PrimitiveValueImpl(value.asPrimitive().toString());
     } else if (value.isComplex()) {
       final ODataComplexValue _value = value.asComplex();
       valueResource = new ComplexValueImpl();
@@ -269,7 +270,7 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
     }
 
     final URI base = defaultBaseURI == null ? resource.getBaseURI() : defaultBaseURI;
-    
+
     final URI next = resource.getNext();
 
     final ODataEntitySet entitySet = next == null
@@ -283,7 +284,7 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
     for (Entry entryResource : resource.getEntries()) {
       entitySet.addEntity(getODataEntity(entryResource));
     }
-    
+
     return entitySet;
   }
 
@@ -311,11 +312,11 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
     if (StringUtils.isNotBlank(resource.getETag())) {
       entity.setETag(resource.getETag());
     }
-    
+
     if (resource.getEditLink() != null) {
       entity.setEditLink(URIUtils.getURI(base, resource.getEditLink().getHref()));
     }
-    
+
     for (Link link : resource.getAssociationLinks()) {
       entity.addLink(client.getObjectFactory().newAssociationLink(link.getTitle(), base, link.getHref()));
     }
@@ -377,12 +378,12 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
                       ? null
                       : EdmPrimitiveTypeKind.valueOfFQN(client.getServiceVersion(), resource.getType())).build();
     } else if (resource.getValue().isGeospatial()) {
-      value = client.getGeospatialValueBuilder().
+      value = client.getPrimitiveValueBuilder().
               setValue(resource.getValue().asGeospatial().get()).
               setType(resource.getType() == null
                       || EdmPrimitiveTypeKind.Geography.getFullQualifiedName().toString().equals(resource.getType())
                       || EdmPrimitiveTypeKind.Geometry.getFullQualifiedName().toString().equals(resource.getType())
-                      ? null
+                      ? resource.getValue().asGeospatial().get().getEdmPrimitiveTypeKind()
                       : EdmPrimitiveTypeKind.valueOfFQN(client.getServiceVersion(), resource.getType())).build();
     } else if (resource.getValue().isComplex()) {
       value = new ODataComplexValue(resource.getType());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index 831d0b1..1e0dd5b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -41,6 +41,8 @@ import org.apache.olingo.commons.api.edm.EdmFunctionImport;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.core.edm.primitivetype.EdmBinary;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDate;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTime;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTimeOffset;
@@ -48,6 +50,7 @@ import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDouble;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDuration;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
+import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmTime;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmTimeOfDay;
@@ -172,14 +175,6 @@ public final class URIUtils {
 
         default:
       }
-    } else {
-      switch (typeKind) {
-        case Binary:
-          result = "binary'";
-          break;
-
-        default:
-      }
     }
 
     return result;
@@ -192,7 +187,6 @@ public final class URIUtils {
         case Guid:
         case DateTime:
         case DateTimeOffset:
-        case Binary:
           result = "'";
           break;
 
@@ -214,14 +208,6 @@ public final class URIUtils {
 
         default:
       }
-    } else {
-      switch (typeKind) {
-        case Binary:
-          result = "'";
-          break;
-
-        default:
-      }
     }
 
     return result;
@@ -280,12 +266,12 @@ public final class URIUtils {
           throws UnsupportedEncodingException, EdmPrimitiveTypeException {
 
     return version == ODataServiceVersion.V30
-            ? "time'" + URLEncoder.encode(EdmTime.getInstance().
-                    valueToString(duration, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null),
-                    Constants.UTF8) + "'"
-            : "duration'" + URLEncoder.encode(EdmDuration.getInstance().
-                    valueToString(duration, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null),
-                    Constants.UTF8) + "'";
+            ? EdmTime.getInstance().toUriLiteral(URLEncoder.encode(EdmTime.getInstance().
+                            valueToString(duration, null, null,
+                                    Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null), Constants.UTF8))
+            : EdmDuration.getInstance().toUriLiteral(URLEncoder.encode(EdmDuration.getInstance().
+                            valueToString(duration, null, null,
+                                    Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null), Constants.UTF8));
   }
 
   /**
@@ -305,9 +291,7 @@ public final class URIUtils {
               + obj.toString()
               + suffix(version, EdmPrimitiveTypeKind.Guid)
               : (obj instanceof byte[])
-              ? prefix(version, EdmPrimitiveTypeKind.Binary)
-              + Hex.encodeHexString((byte[]) obj)
-              + suffix(version, EdmPrimitiveTypeKind.Binary)
+              ? EdmBinary.getInstance().toUriLiteral(Hex.encodeHexString((byte[]) obj))
               : (obj instanceof Timestamp)
               ? timestamp(version, (Timestamp) obj)
               : (obj instanceof Calendar)
@@ -330,6 +314,10 @@ public final class URIUtils {
               ? EdmInt64.getInstance().valueToString(obj, null, null,
                       Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
               + suffix(version, EdmPrimitiveTypeKind.Int64)
+              : (obj instanceof Geospatial)
+              ? URLEncoder.encode(EdmPrimitiveTypeFactory.getInstance(((Geospatial) obj).getEdmPrimitiveTypeKind()).
+                      valueToString(obj, null, null, Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null),
+                      Constants.UTF8)
               : (obj instanceof String)
               ? "'" + URLEncoder.encode((String) obj, Constants.UTF8) + "'"
               : obj.toString();
@@ -340,7 +328,7 @@ public final class URIUtils {
 
     return value;
   }
-  
+
   public static InputStreamEntity buildInputStreamEntity(final CommonODataClient client, final InputStream input) {
     InputStreamEntity entity;
     if (client.getConfiguration().isUseChuncked()) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
index 21d8c5d..04eb893 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
@@ -29,7 +29,6 @@ import java.util.List;
 import java.util.UUID;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.olingo.commons.api.Constants;
-import org.apache.olingo.commons.api.domain.ODataGeospatialValue;
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.format.ODataFormat;
@@ -93,35 +92,6 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
     return value;
   }
 
-  protected ODataGeospatialValue writeGeospatialValue(final ODataGeospatialValue value) {
-    final ODataGeospatialValue newValue = getClient().getGeospatialValueBuilder().
-            setType(value.getTypeKind()).
-            setValue(value.toValue()).
-            build();
-    final InputStream written = getClient().getWriter().writeProperty(
-            getClient().getObjectFactory().newPrimitiveProperty(Constants.ELEM_PROPERTY, newValue),
-            getFormat());
-    return readGeospatialValue(written);
-  }
-
-  protected ODataGeospatialValue readGeospatialValue(final InputStream input) {
-    final ODataProperty property = getClient().getReader().readProperty(input, getFormat());
-    assertNotNull(property);
-    assertTrue(property.hasGeospatialValue());
-    assertNotNull(property.getGeospatialValue());
-
-    return property.getGeospatialValue();
-  }
-
-  protected ODataGeospatialValue readGeospatialValue(final String entity, final String propertyName) {
-    final ODataGeospatialValue value =
-            readGeospatialValue(getClass().getResourceAsStream(getFilename(entity, propertyName)));
-
-    assertEquals(value.toValue(), writeGeospatialValue(value).toValue());
-
-    return value;
-  }
-
   protected void int32(final String entity, final String propertyName, final int check)
           throws EdmPrimitiveTypeException {
 
@@ -200,9 +170,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String propertyName,
           final Point expectedValues,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final Point point = opv.toCastValue(Point.class);
@@ -231,9 +201,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String propertyName,
           final List<Point> check,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final LineString lineString = opv.toCastValue(LineString.class);
@@ -248,9 +218,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String propertyName,
           final List<Point> check,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final MultiPoint multiPoint = opv.toCastValue(MultiPoint.class);
@@ -275,9 +245,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String propertyName,
           final List<List<Point>> check,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final MultiLineString multiLine = opv.toCastValue(MultiLineString.class);
@@ -330,9 +300,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final List<Point> checkInterior,
           final List<Point> checkExterior,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final Polygon polygon = opv.toCastValue(Polygon.class);
@@ -350,9 +320,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final List<List<Point>> checkInterior,
           final List<List<Point>> checkExterior,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final MultiPolygon multiPolygon = opv.toCastValue(MultiPolygon.class);
@@ -373,9 +343,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String entity,
           final String propertyName,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final GeospatialCollection collection = opv.toCastValue(GeospatialCollection.class);
@@ -402,9 +372,9 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
           final String entity,
           final String propertyName,
           final EdmPrimitiveTypeKind expectedType,
-          final Dimension expectedDimension) {
+          final Dimension expectedDimension) throws EdmPrimitiveTypeException {
 
-    final ODataGeospatialValue opv = readGeospatialValue(entity, propertyName);
+    final ODataPrimitiveValue opv = readPrimitiveValue(entity, propertyName);
     assertEquals(expectedType, opv.getTypeKind());
 
     final GeospatialCollection collection = opv.toCastValue(GeospatialCollection.class);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
index 091d0af..bb507e4 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
@@ -118,25 +118,25 @@ public class OpenTypeTestITCase extends AbstractTestITCase {
     point.setX(1.2);
     point.setY(2.1);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aPoint",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPoint).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPoint).
             setValue(point).build()));
     final List<Point> points = new ArrayList<Point>();
     points.add(point);
     points.add(point);
     final MultiPoint multipoint = new MultiPoint(Geospatial.Dimension.GEOMETRY, null, points);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiPoint",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiPoint).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiPoint).
             setValue(multipoint).build()));
     final LineString lineString = new LineString(Geospatial.Dimension.GEOMETRY, null, points);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aLineString",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryLineString).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryLineString).
             setValue(lineString).build()));
     final List<LineString> lineStrings = new ArrayList<LineString>();
     lineStrings.add(lineString);
     lineStrings.add(lineString);
     final MultiLineString multiLineString = new MultiLineString(Geospatial.Dimension.GEOGRAPHY, null, lineStrings);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiLineString",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiLineString).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiLineString).
             setValue(multiLineString).build()));
     final Point otherPoint = new Point(Geospatial.Dimension.GEOGRAPHY, null);
     otherPoint.setX(3.4);
@@ -146,14 +146,14 @@ public class OpenTypeTestITCase extends AbstractTestITCase {
     points.add(point);
     final Polygon polygon = new Polygon(Geospatial.Dimension.GEOGRAPHY, null, points, points);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aPolygon",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPolygon).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPolygon).
             setValue(polygon).build()));
     final List<Polygon> polygons = new ArrayList<Polygon>();
     polygons.add(polygon);
     polygons.add(polygon);
     final MultiPolygon multiPolygon = new MultiPolygon(Geospatial.Dimension.GEOGRAPHY, null, polygons);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiPolygon",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyMultiPolygon).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyMultiPolygon).
             setValue(multiPolygon).build()));
     final List<Geospatial> geospatials = new ArrayList<Geospatial>();
     geospatials.add(otherPoint);
@@ -162,7 +162,7 @@ public class OpenTypeTestITCase extends AbstractTestITCase {
     geospatials.add(multiPolygon);
     final GeospatialCollection geoColl = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, null, geospatials);
     row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aCollection",
-            client.getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyCollection).
+            client.getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyCollection).
             setValue(geoColl).build()));
 
     final ODataComplexValue contactDetails =

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java
index b615988..151478a 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java
@@ -29,6 +29,7 @@ import org.apache.olingo.commons.api.domain.ODataLink;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.apache.olingo.client.core.AbstractTest;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.core.op.ResourceFactory;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.geo.Geospatial;
@@ -88,8 +89,8 @@ public class EntityTest extends AbstractTest {
     for (ODataProperty property : entity.getProperties()) {
       if ("GeogMultiLine".equals(property.getName())) {
         found = true;
-        assertTrue(property.hasGeospatialValue());
-        assertEquals(EdmPrimitiveTypeKind.GeographyMultiLineString, property.getGeospatialValue().getTypeKind());
+        assertTrue(property.hasPrimitiveValue());
+        assertEquals(EdmPrimitiveTypeKind.GeographyMultiLineString, property.getPrimitiveValue().getTypeKind());
       }
     }
     assertTrue(found);
@@ -160,30 +161,30 @@ public class EntityTest extends AbstractTest {
     mediaEntity(ODataPubFormat.JSON_FULL_METADATA);
   }
 
-  private void issue128(final ODataPubFormat format) {
+  private void issue128(final ODataPubFormat format) throws EdmPrimitiveTypeException {
     final InputStream input = getClass().getResourceAsStream("AllGeoTypesSet_-5." + getSuffix(format));
     final ODataEntity entity = getClient().getBinder().getODataEntity(
             getClient().getDeserializer().toEntry(input, format));
     assertNotNull(entity);
 
     final ODataProperty geogCollection = entity.getProperty("GeogCollection");
-    assertEquals(EdmPrimitiveTypeKind.GeographyCollection, geogCollection.getGeospatialValue().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeographyCollection, geogCollection.getPrimitiveValue().getTypeKind());
 
     int count = 0;
-    for (Geospatial g : geogCollection.getGeospatialValue().toCastValue(GeospatialCollection.class)) {
-      assertNotNull(g);
+    for (Geospatial geo : geogCollection.getPrimitiveValue().toCastValue(GeospatialCollection.class)) {
+      assertNotNull(geo);
       count++;
     }
     assertEquals(2, count);
   }
 
   @Test
-  public void issue128FromAtom() {
+  public void issue128FromAtom() throws EdmPrimitiveTypeException {
     issue128(ODataPubFormat.ATOM);
   }
 
   @Test
-  public void issue128FromJSON() {
+  public void issue128FromJSON() throws EdmPrimitiveTypeException {
     issue128(ODataPubFormat.JSON_FULL_METADATA);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
index 5dca101..a4d1ba8 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
@@ -134,7 +134,7 @@ public class MetadataTest extends AbstractTest {
             new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "ProductReview"));
     assertNotNull(entity);
     assertFalse(entity.getPropertyNames().isEmpty());
-    assertEquals(EdmPrimitiveTypeFactory.getNonGeoInstance(EdmPrimitiveTypeKind.Int32),
+    assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32),
             entity.getProperty("ProductId").getType());
 
     assertFalse(entity.getKeyPropertyRefs().isEmpty());
@@ -178,7 +178,7 @@ public class MetadataTest extends AbstractTest {
 
     final EdmFunctionImport getArgumentPlusOne = container.getFunctionImport("GetArgumentPlusOne");
     assertNotNull(getArgumentPlusOne);
-    assertEquals(EdmPrimitiveTypeFactory.getNonGeoInstance(EdmPrimitiveTypeKind.Int32),
+    assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32),
             getArgumentPlusOne.getFunction(null).getReturnType().getType());
 
     final EdmActionImport resetDataSource = container.getActionImport("ResetDataSource");

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
index e3cbd7e..04f392a 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
@@ -20,7 +20,6 @@ package org.apache.olingo.client.core.v3;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
@@ -182,32 +181,24 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void managePoint() {
+  public void managePoint() throws EdmPrimitiveTypeException {
     final Point primitive = new Point(Geospatial.Dimension.GEOGRAPHY, null);
     primitive.setX(52.8606);
     primitive.setY(173.334);
 
-    try {
-      getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPoint).
-              setValue(primitive).build();
-      fail();
-    } catch (IllegalArgumentException iae) {
-      // nothing top do
-    }
-
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPoint).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPoint).
             setValue(primitive).
             build();
-    assertEquals(EdmPrimitiveTypeKind.GeographyPoint, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeographyPoint, value.asPrimitive().getTypeKind());
     assertEquals(Double.valueOf(primitive.getX()),
-            Double.valueOf(value.asGeospatial().toCastValue(Point.class).getX()));
+            Double.valueOf(value.asPrimitive().toCastValue(Point.class).getX()));
     assertEquals(Double.valueOf(primitive.getY()),
-            Double.valueOf(value.asGeospatial().toCastValue(Point.class).getY()));
+            Double.valueOf(value.asPrimitive().toCastValue(Point.class).getY()));
   }
 
   @Test
-  public void manageLineString() {
+  public void manageLineString() throws EdmPrimitiveTypeException {
     final List<Point> points = new ArrayList<Point>();
     Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
     point.setX(40.5);
@@ -231,11 +222,11 @@ public class PrimitiveValueTest extends AbstractTest {
 
     final LineString primitive = new LineString(Geospatial.Dimension.GEOGRAPHY, null, points);
 
-    final ODataValue value = getClient().getGeospatialValueBuilder().
+    final ODataValue value = getClient().getPrimitiveValueBuilder().
             setType(EdmPrimitiveTypeKind.GeographyLineString).setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeographyLineString, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeographyLineString, value.asPrimitive().getTypeKind());
 
-    final Iterator<Point> iter = value.asGeospatial().toCastValue(LineString.class).iterator();
+    final Iterator<Point> iter = value.asPrimitive().toCastValue(LineString.class).iterator();
 
     // take the third one and check the point value ...
     iter.next();
@@ -247,7 +238,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void manageMultiPoint() {
+  public void manageMultiPoint() throws EdmPrimitiveTypeException {
     final List<Point> points = new ArrayList<Point>();
     Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
     point.setX(0);
@@ -256,11 +247,11 @@ public class PrimitiveValueTest extends AbstractTest {
 
     final MultiPoint primitive = new MultiPoint(Geospatial.Dimension.GEOMETRY, null, points);
 
-    final ODataValue value = getClient().getGeospatialValueBuilder().
+    final ODataValue value = getClient().getPrimitiveValueBuilder().
             setType(EdmPrimitiveTypeKind.GeometryMultiPoint).setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeometryMultiPoint, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeometryMultiPoint, value.asPrimitive().getTypeKind());
 
-    final Iterator<Point> iter = value.asGeospatial().toCastValue(MultiPoint.class).iterator();
+    final Iterator<Point> iter = value.asPrimitive().toCastValue(MultiPoint.class).iterator();
     point = iter.next();
 
     assertEquals(Double.valueOf(points.get(0).getX()), Double.valueOf(point.getX()));
@@ -268,7 +259,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void manageMultiLine() {
+  public void manageMultiLine() throws EdmPrimitiveTypeException {
     final List<LineString> lines = new ArrayList<LineString>();
 
     // line one ...
@@ -317,11 +308,11 @@ public class PrimitiveValueTest extends AbstractTest {
     final MultiLineString primitive = new MultiLineString(Geospatial.Dimension.GEOMETRY, null, lines);
 
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiLineString).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiLineString).
             setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeometryMultiLineString, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeometryMultiLineString, value.asPrimitive().getTypeKind());
 
-    final Iterator<LineString> lineIter = value.asGeospatial().toCastValue(MultiLineString.class).iterator();
+    final Iterator<LineString> lineIter = value.asPrimitive().toCastValue(MultiLineString.class).iterator();
 
     // take the second line and check the third point value ...
     lineIter.next();
@@ -337,7 +328,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void managePolygon() {
+  public void managePolygon() throws EdmPrimitiveTypeException {
 
     final List<Point> interior = new ArrayList<Point>();
     final List<Point> exterior = new ArrayList<Point>();
@@ -370,12 +361,12 @@ public class PrimitiveValueTest extends AbstractTest {
     final Polygon primitive = new Polygon(Geospatial.Dimension.GEOGRAPHY, null, interior, exterior);
 
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPolygon).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyPolygon).
             setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeographyPolygon, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeographyPolygon, value.asPrimitive().getTypeKind());
 
-    assertTrue(value.asGeospatial().toCastValue(Polygon.class).getInterior().isEmpty());
-    final Iterator<Point> iter = value.asGeospatial().toCastValue(Polygon.class).getExterior().iterator();
+    assertTrue(value.asPrimitive().toCastValue(Polygon.class).getInterior().isEmpty());
+    final Iterator<Point> iter = value.asPrimitive().toCastValue(Polygon.class).getExterior().iterator();
 
     // take the third one ...
     iter.next();
@@ -387,7 +378,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void manageMultiPolygon() {
+  public void manageMultiPolygon() throws EdmPrimitiveTypeException {
     final List<Polygon> polygons = new ArrayList<Polygon>();
 
     List<Point> interior = new ArrayList<Point>();
@@ -476,11 +467,11 @@ public class PrimitiveValueTest extends AbstractTest {
     final MultiPolygon primitive = new MultiPolygon(Geospatial.Dimension.GEOMETRY, null, polygons);
 
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiPolygon).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryMultiPolygon).
             setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeometryMultiPolygon, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeometryMultiPolygon, value.asPrimitive().getTypeKind());
 
-    final Iterator<Polygon> iter = value.asGeospatial().toCastValue(MultiPolygon.class).iterator();
+    final Iterator<Polygon> iter = value.asPrimitive().toCastValue(MultiPolygon.class).iterator();
 
     // second one polygon
     iter.next();
@@ -504,7 +495,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void manageGeomCollection() {
+  public void manageGeomCollection() throws EdmPrimitiveTypeException {
     final List<Geospatial> collection = new ArrayList<Geospatial>();
 
     Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
@@ -522,11 +513,11 @@ public class PrimitiveValueTest extends AbstractTest {
     final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOMETRY, null, collection);
 
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeometryCollection).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeometryCollection).
             setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeometryCollection, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeometryCollection, value.asPrimitive().getTypeKind());
 
-    final Iterator<Geospatial> iter = value.asGeospatial().toCastValue(GeospatialCollection.class).iterator();
+    final Iterator<Geospatial> iter = value.asPrimitive().toCastValue(GeospatialCollection.class).iterator();
     iter.next();
     final Point collectedPoint = (Point) iter.next();
 
@@ -536,7 +527,7 @@ public class PrimitiveValueTest extends AbstractTest {
   }
 
   @Test
-  public void manageGeogCollection() {
+  public void manageGeogCollection() throws EdmPrimitiveTypeException {
     final List<Geospatial> collection = new ArrayList<Geospatial>();
 
     Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
@@ -554,11 +545,11 @@ public class PrimitiveValueTest extends AbstractTest {
     final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, null, collection);
 
     final ODataValue value =
-            getClient().getGeospatialValueBuilder().setType(EdmPrimitiveTypeKind.GeographyCollection).
+            getClient().getPrimitiveValueBuilder().setType(EdmPrimitiveTypeKind.GeographyCollection).
             setValue(primitive).build();
-    assertEquals(EdmPrimitiveTypeKind.GeographyCollection, value.asGeospatial().getTypeKind());
+    assertEquals(EdmPrimitiveTypeKind.GeographyCollection, value.asPrimitive().getTypeKind());
 
-    final Iterator<Geospatial> iter = value.asGeospatial().toCastValue(GeospatialCollection.class).iterator();
+    final Iterator<Geospatial> iter = value.asPrimitive().toCastValue(GeospatialCollection.class).iterator();
     iter.next();
     final Point collectedPoint = (Point) iter.next();
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
index fb2ba5c..c8cfc59 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
@@ -83,7 +83,7 @@ public class MetadataTest extends AbstractTest {
     assertNotNull(responseStatus);
     assertTrue(responseStatus.getNavigationPropertyNames().isEmpty());
     assertEquals("Recipient", responseStatus.getBaseType().getName());
-    assertEquals(EdmPrimitiveTypeFactory.getNonGeoInstance(EdmPrimitiveTypeKind.DateTimeOffset),
+    assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.DateTimeOffset),
             responseStatus.getProperty("Time").getType());
 
     // 3. Entity
@@ -107,7 +107,7 @@ public class MetadataTest extends AbstractTest {
     assertNotNull(move);
     assertTrue(move.isBound());
     assertEquals(2, move.getParameterNames().size());
-    assertEquals(EdmPrimitiveTypeFactory.getNonGeoInstance(EdmPrimitiveTypeKind.String),
+    assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String),
             move.getParameter("DestinationId").getType());
 
     // 5. EntityContainer

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
index fa7538d..c1ceef0 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
@@ -24,10 +24,6 @@ import org.apache.olingo.commons.api.edm.geo.Geospatial;
 
 public final class GeoUtils {
 
-  private GeoUtils() {
-    // Empty private constructor for static utility classes       
-  }
-
   public static Geospatial.Dimension getDimension(final EdmPrimitiveTypeKind type) {
     Geospatial.Dimension dimension;
 
@@ -87,4 +83,9 @@ public final class GeoUtils {
 
     return type;
   }
+
+  private GeoUtils() {
+    // Empty private constructor for static utility classes       
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/AbstractODataValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/AbstractODataValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/AbstractODataValue.java
index ab77d7f..3eb664b 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/AbstractODataValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/AbstractODataValue.java
@@ -51,26 +51,6 @@ public abstract class AbstractODataValue implements ODataValue {
   }
 
   /**
-   * Check is is a geospatail value.
-   *
-   * @return 'TRUE' if geospatail; 'FALSE' otherwise.
-   */
-  @Override
-  public boolean isGeospatial() {
-    return (this instanceof ODataGeospatialValue);
-  }
-
-  /**
-   * Casts to geospatail value.
-   *
-   * @return geospatail value.
-   */
-  @Override
-  public ODataGeospatialValue asGeospatial() {
-    return isGeospatial() ? (ODataGeospatialValue) this : null;
-  }
-
-  /**
    * Check is is a complex value.
    *
    * @return 'TRUE' if complex; 'FALSE' otherwise.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataGeospatialValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataGeospatialValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataGeospatialValue.java
deleted file mode 100644
index 7563907..0000000
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataGeospatialValue.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.commons.api.domain;
-
-import org.apache.olingo.commons.api.edm.EdmGeospatialType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-
-public interface ODataGeospatialValue extends ODataValue {
-
-  interface Builder {
-
-    Builder setType(EdmPrimitiveTypeKind type);
-
-    Builder setValue(Geospatial value);
-
-    ODataGeospatialValue build();
-
-  }
-
-  EdmPrimitiveTypeKind getTypeKind();
-
-  EdmGeospatialType getType();
-
-  /**
-   * Returns the current geospatial value.
-   *
-   * @return the current geospatial value.
-   */
-  Geospatial toValue();
-
-  /**
-   * Returns the current value casted to the given type.
-   *
-   * @param <T> cast type
-   * @param reference class reference
-   * @return the current value as typed java instance
-   */
-  <T extends Geospatial> T toCastValue(Class<T> reference);
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataObjectFactory.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataObjectFactory.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataObjectFactory.java
index b38a5e8..d8cbbbc 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataObjectFactory.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataObjectFactory.java
@@ -190,15 +190,6 @@ public interface ODataObjectFactory {
   ODataProperty newPrimitiveProperty(String name, ODataPrimitiveValue value);
 
   /**
-   * Instantiates a new primitive property.
-   *
-   * @param name name.
-   * @param value geospatial value.
-   * @return primitive property.
-   */
-  ODataProperty newPrimitiveProperty(String name, ODataGeospatialValue value);
-
-  /**
    * Instantiates a new complex property.
    *
    * @param name name.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataProperty.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataProperty.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataProperty.java
index 7217282..24364d7 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataProperty.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataProperty.java
@@ -107,24 +107,6 @@ public class ODataProperty implements Serializable, ODataInvokeResult {
   }
 
   /**
-   * Checks if has geospatial value.
-   *
-   * @return 'TRUE' if has geospatial value; 'FALSE' otherwise.
-   */
-  public boolean hasGeospatialValue() {
-    return !hasNullValue() && this.value.isGeospatial();
-  }
-
-  /**
-   * Gets geospatial value.
-   *
-   * @return geospatial value if exists; null otherwise.
-   */
-  public ODataGeospatialValue getGeospatialValue() {
-    return hasGeospatialValue() ? this.value.asGeospatial() : null;
-  }
-
-  /**
    * Checks if has complex value.
    *
    * @return 'TRUE' if has complex value; 'FALSE' otherwise.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataValue.java
index e1c9be9..b427e8f 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataValue.java
@@ -40,20 +40,6 @@ public interface ODataValue extends Serializable {
   ODataPrimitiveValue asPrimitive();
 
   /**
-   * Check is is a geospatail value.
-   *
-   * @return 'TRUE' if geospatail; 'FALSE' otherwise.
-   */
-  boolean isGeospatial();
-
-  /**
-   * Casts to geospatail value.
-   *
-   * @return geospatail value.
-   */
-  ODataGeospatialValue asGeospatial();
-
-  /**
    * Check is is a collection value.
    *
    * @return 'TRUE' if collection; 'FALSE' otherwise.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmGeospatialType.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmGeospatialType.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmGeospatialType.java
deleted file mode 100644
index 898b6b2..0000000
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmGeospatialType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.commons.api.edm;
-
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-
-public interface EdmGeospatialType extends EdmType {
-
-  String EDM_NAMESPACE = EdmPrimitiveType.EDM_NAMESPACE;
-
-  /**
-   * Returns the Java type for this EDM geospatial type.
-   *
-   * @return the geospatial Java type
-   */
-  Class<? extends Geospatial> getJavaType();
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/ComposedGeospatial.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/ComposedGeospatial.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/ComposedGeospatial.java
index 82a13fe..cbc5685 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/ComposedGeospatial.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/ComposedGeospatial.java
@@ -31,18 +31,10 @@ public abstract class ComposedGeospatial<T extends Geospatial> extends Geospatia
 
   protected final List<T> geospatials;
 
-  /**
-   * Constructor.
-   *
-   * @param dimension dimension.
-   * @param type type.
-   * @param crs crs.
-   * @param geospatials geospatials info.
-   */
-  protected ComposedGeospatial(final Dimension dimension, final Type type, final String crs,
+  protected ComposedGeospatial(final Dimension dimension, final Type type, final Integer srid,
           final List<T> geospatials) {
 
-    super(dimension, type, crs);
+    super(dimension, type, srid);
     this.geospatials = new ArrayList<T>();
     if (geospatials != null) {
       this.geospatials.addAll(geospatials);
@@ -65,14 +57,4 @@ public abstract class ComposedGeospatial<T extends Geospatial> extends Geospatia
   public boolean isEmpty() {
     return geospatials.isEmpty();
   }
-
-  /**
-   * {@inheritDoc }
-   */
-  @Override
-  public void setSrid(final Integer srid) {
-    for (Geospatial geospatial : this.geospatials) {
-      geospatial.setSrid(srid);
-    }
-  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Geospatial.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Geospatial.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Geospatial.java
index 62de5ec..19b98dd 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Geospatial.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Geospatial.java
@@ -75,23 +75,22 @@ public abstract class Geospatial implements Serializable {
 
   protected final Type type;
 
-  protected String crs;
-
   /**
    * Null value means it is expected to vary per instance.
    */
-  protected Integer srid;
+  protected final Integer srid;
 
   /**
    * Constructor.
    *
    * @param dimension dimension.
    * @param type type.
+   * @param srid SRID
    */
-  protected Geospatial(final Dimension dimension, final Type type, final String crs) {
+  protected Geospatial(final Dimension dimension, final Type type, final Integer srid) {
     this.dimension = dimension;
     this.type = type;
-    this.crs = crs;
+    this.srid = srid;
   }
 
   /**
@@ -115,15 +114,6 @@ public abstract class Geospatial implements Serializable {
   }
 
   /**
-   * Gets CRS.
-   *
-   * @return CRS
-   */
-  public String getCrs() {
-    return crs;
-  }
-
-  /**
    * Gets s-rid.
    *
    * @return s-rid.
@@ -132,36 +122,18 @@ public abstract class Geospatial implements Serializable {
     return srid;
   }
 
-  /**
-   * Sets s-rid.
-   *
-   * @param srid s-rid.
-   */
-  public void setSrid(final Integer srid) {
-    this.srid = srid;
-  }
-
   public abstract EdmPrimitiveTypeKind getEdmPrimitiveTypeKind();
 
-  /**
-   * {@inheritDoc }
-   */
   @Override
   public boolean equals(final Object obj) {
     return EqualsBuilder.reflectionEquals(this, obj);
   }
 
-  /**
-   * {@inheritDoc }
-   */
   @Override
   public int hashCode() {
     return HashCodeBuilder.reflectionHashCode(this);
   }
 
-  /**
-   * {@inheritDoc }
-   */
   @Override
   public String toString() {
     return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/GeospatialCollection.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/GeospatialCollection.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/GeospatialCollection.java
index b3e3f9f..5b0b857 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/GeospatialCollection.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/GeospatialCollection.java
@@ -28,21 +28,14 @@ public class GeospatialCollection extends ComposedGeospatial<Geospatial> {
 
   private static final long serialVersionUID = -9181547636133878977L;
 
-  /**
-   * Constructor.
-   *
-   * @param dimension dimension.
-   * @param crs crs.
-   * @param geospatials geospatials info.
-   */
-  public GeospatialCollection(final Dimension dimension, final String crs, final List<Geospatial> geospatials) {
-    super(dimension, Type.GEOSPATIALCOLLECTION, crs, geospatials);
+  public GeospatialCollection(final Dimension dimension, final Integer srid, final List<Geospatial> geospatials) {
+    super(dimension, Type.GEOSPATIALCOLLECTION, srid, geospatials);
   }
 
   @Override
   public EdmPrimitiveTypeKind getEdmPrimitiveTypeKind() {
     return dimension == Dimension.GEOGRAPHY
-           ? EdmPrimitiveTypeKind.GeographyCollection
-           : EdmPrimitiveTypeKind.GeometryCollection;
+            ? EdmPrimitiveTypeKind.GeographyCollection
+            : EdmPrimitiveTypeKind.GeometryCollection;
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/LineString.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/LineString.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/LineString.java
index 297a962..bc6afaf 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/LineString.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/LineString.java
@@ -25,8 +25,8 @@ public class LineString extends ComposedGeospatial<Point> {
 
   private static final long serialVersionUID = 3207958185407535907L;
 
-  public LineString(final Dimension dimension, final String crs, final List<Point> points) {
-    super(dimension, Type.LINESTRING, crs, points);
+  public LineString(final Dimension dimension, final Integer srid, final List<Point> points) {
+    super(dimension, Type.LINESTRING, srid, points);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiLineString.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiLineString.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiLineString.java
index 2f98d63..d38f3b0 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiLineString.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiLineString.java
@@ -25,15 +25,15 @@ public class MultiLineString extends ComposedGeospatial<LineString> {
 
   private static final long serialVersionUID = -5042414471218124125L;
 
-  public MultiLineString(final Dimension dimension, final String crs, final List<LineString> lineStrings) {
-    super(dimension, Type.MULTILINESTRING, crs, lineStrings);
+  public MultiLineString(final Dimension dimension, final Integer srid, final List<LineString> lineStrings) {
+    super(dimension, Type.MULTILINESTRING, srid, lineStrings);
   }
 
   @Override
   public EdmPrimitiveTypeKind getEdmPrimitiveTypeKind() {
     return dimension == Dimension.GEOGRAPHY
-           ? EdmPrimitiveTypeKind.GeographyMultiLineString
-           : EdmPrimitiveTypeKind.GeometryMultiLineString;
+            ? EdmPrimitiveTypeKind.GeographyMultiLineString
+            : EdmPrimitiveTypeKind.GeometryMultiLineString;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPoint.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPoint.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPoint.java
index 999f24b..7229d05 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPoint.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPoint.java
@@ -25,8 +25,8 @@ public class MultiPoint extends ComposedGeospatial<Point> {
 
   private static final long serialVersionUID = 4951011255142116129L;
 
-  public MultiPoint(final Dimension dimension, final String crs, final List<Point> points) {
-    super(dimension, Type.MULTIPOINT, crs, points);
+  public MultiPoint(final Dimension dimension, final Integer srid, final List<Point> points) {
+    super(dimension, Type.MULTIPOINT, srid, points);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPolygon.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPolygon.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPolygon.java
index fd0fdae..dbbfb24 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPolygon.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/MultiPolygon.java
@@ -25,14 +25,14 @@ public class MultiPolygon extends ComposedGeospatial<Polygon> {
 
   private static final long serialVersionUID = -160184788048512883L;
 
-  public MultiPolygon(final Dimension dimension, final String crs, final List<Polygon> polygons) {
-    super(dimension, Type.MULTIPOLYGON, crs, polygons);
+  public MultiPolygon(final Dimension dimension, final Integer srid, final List<Polygon> polygons) {
+    super(dimension, Type.MULTIPOLYGON, srid, polygons);
   }
 
   @Override
   public EdmPrimitiveTypeKind getEdmPrimitiveTypeKind() {
     return dimension == Dimension.GEOGRAPHY
-           ? EdmPrimitiveTypeKind.GeographyMultiPolygon
-           : EdmPrimitiveTypeKind.GeometryMultiPolygon;
+            ? EdmPrimitiveTypeKind.GeographyMultiPolygon
+            : EdmPrimitiveTypeKind.GeometryMultiPolygon;
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/76513508/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Point.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Point.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Point.java
index a9e0c39..c8c8a37 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Point.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/geo/Point.java
@@ -40,8 +40,8 @@ public class Point extends Geospatial {
    */
   private double z;
 
-  public Point(final Dimension dimension, final String crs) {
-    super(dimension, Type.POINT, crs);
+  public Point(final Dimension dimension, final Integer srid) {
+    super(dimension, Type.POINT, srid);
   }
 
   public double getX() {
@@ -71,7 +71,7 @@ public class Point extends Geospatial {
   @Override
   public EdmPrimitiveTypeKind getEdmPrimitiveTypeKind() {
     return dimension == Dimension.GEOGRAPHY
-           ? EdmPrimitiveTypeKind.GeographyPoint
-           : EdmPrimitiveTypeKind.GeometryPoint;
+            ? EdmPrimitiveTypeKind.GeographyPoint
+            : EdmPrimitiveTypeKind.GeometryPoint;
   }
 }