You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2013/09/24 14:42:48 UTC

[21/51] [partial] Refactored project structure

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRequest.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRequest.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRequest.java
deleted file mode 100644
index 94680e0..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRequest.java
+++ /dev/null
@@ -1,73 +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.odata2.core.debug;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
-
-/**
- *  
- */
-public class DebugInfoRequest implements DebugInfo {
-
-  private final String method;
-  private final URI uri;
-  private final Map<String, List<String>> headers;
-
-  public DebugInfoRequest(final String method, final URI uri, final Map<String, List<String>> headers) {
-    this.method = method;
-    this.uri = uri;
-    this.headers = headers;
-  }
-
-  @Override
-  public String getName() {
-    return "Request";
-  }
-
-  @Override
-  public void appendJson(final JsonStreamWriter jsonStreamWriter) throws IOException {
-    jsonStreamWriter.beginObject()
-        .namedStringValueRaw("method", method).separator()
-        .namedStringValue("uri", uri.toString());
-
-    if (!headers.isEmpty()) {
-      jsonStreamWriter.separator()
-          .name("headers")
-          .beginObject();
-      boolean first = true;
-      for (final String name : headers.keySet()) {
-        for (final String value : headers.get(name)) {
-          if (!first) {
-            jsonStreamWriter.separator();
-          }
-          first = false;
-          jsonStreamWriter.namedStringValue(name, value);
-        }
-      }
-      jsonStreamWriter.endObject();
-    }
-
-    jsonStreamWriter.endObject();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoResponse.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoResponse.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoResponse.java
deleted file mode 100644
index 154ba1b..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoResponse.java
+++ /dev/null
@@ -1,77 +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.odata2.core.debug;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
-
-/**
- *  
- */
-public class DebugInfoResponse implements DebugInfo {
-
-  private final HttpStatusCodes status;
-  private final Map<String, String> headers;
-
-  public DebugInfoResponse(final HttpStatusCodes status, final Map<String, String> headers) {
-    this.status = status;
-    this.headers = headers;
-  }
-
-  @Override
-  public String getName() {
-    return "Response";
-  }
-
-  @Override
-  public void appendJson(final JsonStreamWriter jsonStreamWriter) throws IOException {
-    jsonStreamWriter.beginObject();
-
-    if (status != null) {
-      jsonStreamWriter.name("status")
-          .beginObject()
-          .name("code").unquotedValue(Integer.toString(status.getStatusCode())).separator()
-          .namedStringValueRaw("info", status.getInfo())
-          .endObject();
-    }
-
-    if (!headers.isEmpty()) {
-      if (status != null) {
-        jsonStreamWriter.separator();
-      }
-
-      jsonStreamWriter.name("headers")
-          .beginObject();
-      boolean first = true;
-      for (final String name : headers.keySet()) {
-        if (!first) {
-          jsonStreamWriter.separator();
-        }
-        first = false;
-        jsonStreamWriter.namedStringValue(name, headers.get(name));
-      }
-      jsonStreamWriter.endObject();
-    }
-
-    jsonStreamWriter.endObject();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRuntime.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRuntime.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRuntime.java
deleted file mode 100644
index fadde0c..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoRuntime.java
+++ /dev/null
@@ -1,155 +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.odata2.core.debug;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.processor.ODataContext.RuntimeMeasurement;
-import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
-
-/**
- *  
- */
-public class DebugInfoRuntime implements DebugInfo {
-
-  private class RuntimeNode {
-    protected String className;
-    protected String methodName;
-    protected long timeStarted;
-    protected long timeStopped;
-    protected List<RuntimeNode> children = new ArrayList<RuntimeNode>();
-    public long memoryStarted;
-    public long memoryStopped;
-
-    protected RuntimeNode() {
-      timeStarted = 0;
-      timeStopped = Long.MAX_VALUE;
-      memoryStarted = 0;
-      memoryStopped = 0;
-    }
-
-    private RuntimeNode(final RuntimeMeasurement runtimeMeasurement) {
-      className = runtimeMeasurement.getClassName();
-      methodName = runtimeMeasurement.getMethodName();
-      timeStarted = runtimeMeasurement.getTimeStarted();
-      timeStopped = runtimeMeasurement.getTimeStopped();
-      memoryStarted = runtimeMeasurement.getMemoryStarted();
-      memoryStopped = runtimeMeasurement.getMemoryStopped();
-    }
-
-    protected boolean add(final RuntimeMeasurement runtimeMeasurement) {
-      if (timeStarted <= runtimeMeasurement.getTimeStarted()
-          && timeStopped != 0 && timeStopped >= runtimeMeasurement.getTimeStopped()) {
-        for (RuntimeNode candidate : children) {
-          if (candidate.add(runtimeMeasurement)) {
-            return true;
-          }
-        }
-        children.add(new RuntimeNode(runtimeMeasurement));
-        return true;
-      } else {
-        return false;
-      }
-    }
-
-    /**
-     * Combines runtime measurements with identical class names and method
-     * names into one measurement, assuming that they originate from a loop
-     * or a similar construct where a summary measurement has been intended.
-     */
-    protected void combineRuntimeMeasurements() {
-      RuntimeNode preceding = null;
-      for (Iterator<RuntimeNode> iterator = children.iterator(); iterator.hasNext();) {
-        final RuntimeNode child = iterator.next();
-        if (preceding != null
-            && preceding.timeStopped != 0 && child.timeStopped != 0
-            && preceding.timeStopped <= child.timeStarted
-            && preceding.children.isEmpty() && child.children.isEmpty()
-            && preceding.methodName.equals(child.methodName)
-            && preceding.className.equals(child.className)) {
-          preceding.timeStarted = child.timeStarted - (preceding.timeStopped - preceding.timeStarted);
-          preceding.timeStopped = child.timeStopped;
-
-          preceding.memoryStarted = child.memoryStarted - (preceding.memoryStopped - preceding.memoryStarted);
-          preceding.memoryStopped = child.memoryStopped;
-
-          iterator.remove();
-        } else {
-          preceding = child;
-          child.combineRuntimeMeasurements();
-        }
-      }
-    }
-  }
-
-  private final RuntimeNode rootNode;
-
-  public DebugInfoRuntime(final List<RuntimeMeasurement> runtimeMeasurements) {
-    rootNode = new RuntimeNode();
-    for (final RuntimeMeasurement runtimeMeasurement : runtimeMeasurements) {
-      rootNode.add(runtimeMeasurement);
-    }
-    rootNode.combineRuntimeMeasurements();
-  }
-
-  @Override
-  public String getName() {
-    return "Runtime";
-  }
-
-  @Override
-  public void appendJson(final JsonStreamWriter jsonStreamWriter) throws IOException {
-    appendJsonChildren(jsonStreamWriter, rootNode);
-  }
-
-  private static void appendJsonNode(final JsonStreamWriter jsonStreamWriter, final RuntimeNode node)
-      throws IOException {
-    jsonStreamWriter.beginObject()
-        .namedStringValueRaw("class", node.className).separator()
-        .namedStringValueRaw("method", node.methodName).separator()
-        .name("duration")
-        .unquotedValue(node.timeStopped == 0 ? null :
-            Long.toString((node.timeStopped - node.timeStarted) / 1000))
-        .separator()
-        .name("memory")
-        .unquotedValue(node.memoryStopped == 0 ? null :
-            Long.toString((node.memoryStopped - node.memoryStarted) / 1000))
-        .separator()
-        .name("children");
-    appendJsonChildren(jsonStreamWriter, node);
-    jsonStreamWriter.endObject();
-  }
-
-  private static void appendJsonChildren(final JsonStreamWriter jsonStreamWriter, final RuntimeNode node)
-      throws IOException {
-    jsonStreamWriter.beginArray();
-    boolean first = true;
-    for (final RuntimeNode childNode : node.children) {
-      if (!first) {
-        jsonStreamWriter.separator();
-      }
-      first = false;
-      appendJsonNode(jsonStreamWriter, childNode);
-    }
-    jsonStreamWriter.endArray();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoUri.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoUri.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoUri.java
deleted file mode 100644
index 21ca068..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoUri.java
+++ /dev/null
@@ -1,127 +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.odata2.core.debug;
-
-import java.io.IOException;
-
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.exception.ODataApplicationException;
-import org.apache.olingo.odata2.api.uri.UriInfo;
-import org.apache.olingo.odata2.api.uri.expression.ExceptionVisitExpression;
-import org.apache.olingo.odata2.api.uri.expression.ExpressionParserException;
-import org.apache.olingo.odata2.api.uri.expression.FilterExpression;
-import org.apache.olingo.odata2.api.uri.expression.OrderByExpression;
-import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
-import org.apache.olingo.odata2.core.uri.ExpandSelectTreeCreator;
-import org.apache.olingo.odata2.core.uri.ExpandSelectTreeNodeImpl;
-import org.apache.olingo.odata2.core.uri.expression.JsonVisitor;
-
-/**
- *  
- */
-public class DebugInfoUri implements DebugInfo {
-
-  private final UriInfo uriInfo;
-  private final ExpressionParserException exception;
-
-  public DebugInfoUri(final UriInfo uriInfo, final Exception exception) {
-    this.uriInfo = uriInfo;
-
-    Throwable candidate = exception;
-    while (candidate != null && !(candidate instanceof ExpressionParserException)) {
-      candidate = candidate.getCause();
-    }
-    this.exception = (ExpressionParserException) candidate;
-  }
-
-  @Override
-  public String getName() {
-    return "URI";
-  }
-
-  @Override
-  public void appendJson(final JsonStreamWriter jsonStreamWriter) throws IOException {
-    jsonStreamWriter.beginObject();
-
-    if (exception != null) {
-      jsonStreamWriter.name("error")
-          .beginObject();
-      if (exception.getFilterTree() != null) {
-        jsonStreamWriter.namedStringValue("filter", exception.getFilterTree().getUriLiteral());
-      }
-      jsonStreamWriter.endObject();
-    }
-
-    if (uriInfo != null) {
-      if (exception != null
-          && (uriInfo.getFilter() != null || uriInfo.getOrderBy() != null
-              || !uriInfo.getExpand().isEmpty() || !uriInfo.getSelect().isEmpty())) {
-        jsonStreamWriter.separator();
-      }
-
-      final FilterExpression filter = uriInfo.getFilter();
-      if (filter != null) {
-        String filterString;
-        try {
-          filterString = (String) filter.accept(new JsonVisitor());
-        } catch (final ExceptionVisitExpression e) {
-          filterString = null;
-        } catch (final ODataApplicationException e) {
-          filterString = null;
-        }
-        jsonStreamWriter.name("filter").unquotedValue(filterString);
-        if (uriInfo.getOrderBy() != null
-            || !uriInfo.getExpand().isEmpty() || !uriInfo.getSelect().isEmpty()) {
-          jsonStreamWriter.separator();
-        }
-      }
-
-      final OrderByExpression orderBy = uriInfo.getOrderBy();
-      if (orderBy != null) {
-        String orderByString;
-        try {
-          orderByString = (String) orderBy.accept(new JsonVisitor());
-        } catch (final ExceptionVisitExpression e) {
-          orderByString = null;
-        } catch (final ODataApplicationException e) {
-          orderByString = null;
-        }
-        jsonStreamWriter.name("orderby").unquotedValue(orderByString);
-        if (!uriInfo.getExpand().isEmpty() || !uriInfo.getSelect().isEmpty()) {
-          jsonStreamWriter.separator();
-        }
-      }
-
-      if (!uriInfo.getExpand().isEmpty() || !uriInfo.getSelect().isEmpty()) {
-        String expandSelectString;
-        try {
-          ExpandSelectTreeCreator expandSelectCreator =
-              new ExpandSelectTreeCreator(uriInfo.getSelect(), uriInfo.getExpand());
-          final ExpandSelectTreeNodeImpl expandSelectTree = expandSelectCreator.create();
-          expandSelectString = expandSelectTree.toJsonString();
-        } catch (final EdmException e) {
-          expandSelectString = null;
-        }
-        jsonStreamWriter.name("expand/select").unquotedValue(expandSelectString);
-      }
-    }
-
-    jsonStreamWriter.endObject();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/ODataDebugResponseWrapper.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/ODataDebugResponseWrapper.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/ODataDebugResponseWrapper.java
deleted file mode 100644
index e32973e..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/debug/ODataDebugResponseWrapper.java
+++ /dev/null
@@ -1,140 +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.odata2.core.debug;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.commons.HttpContentType;
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.api.exception.ODataException;
-import org.apache.olingo.odata2.api.processor.ODataContext;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.uri.UriInfo;
-import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
-import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
-import org.apache.olingo.odata2.core.exception.MessageService;
-import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
-
-/**
- * Wraps an OData response into an OData response containing additional
- * information useful for support purposes.
- * 
- */
-public class ODataDebugResponseWrapper {
-
-  public static final String ODATA_DEBUG_QUERY_PARAMETER = "odata-debug";
-  public static final String ODATA_DEBUG_JSON = "json";
-
-  private final ODataContext context;
-  private final ODataResponse response;
-  private final UriInfo uriInfo;
-  private final Exception exception;
-  private final boolean isJson;
-
-  public ODataDebugResponseWrapper(final ODataContext context, final ODataResponse response, final UriInfo uriInfo,
-      final Exception exception, final String debugValue) {
-    this.context = context;
-    this.response = response;
-    this.uriInfo = uriInfo;
-    this.exception = exception;
-    isJson = ODATA_DEBUG_JSON.equals(debugValue);
-  }
-
-  public ODataResponse wrapResponse() {
-    try {
-      return ODataResponse.status(HttpStatusCodes.OK)
-          .entity(isJson ? wrapInJson(createParts()) : null)
-          .contentHeader(isJson ? HttpContentType.APPLICATION_JSON : null)
-          .build();
-    } catch (final ODataException e) {
-      throw new ODataRuntimeException("Should not happen", e);
-    } catch (final IOException e) {
-      throw new ODataRuntimeException("Should not happen", e);
-    }
-  }
-
-  private List<DebugInfo> createParts() throws ODataException {
-    List<DebugInfo> parts = new ArrayList<DebugInfo>();
-
-    // body
-    if (response.getContentHeader() != null && response.getEntity() != null) {
-      parts.add(new DebugInfoBody(response));
-    }
-
-    // request
-    parts.add(new DebugInfoRequest(context.getHttpMethod(),
-        context.getPathInfo().getRequestUri(),
-        context.getRequestHeaders()));
-
-    // response
-    Map<String, String> responseHeaders = new HashMap<String, String>();
-    for (final String name : response.getHeaderNames()) {
-      responseHeaders.put(name, response.getHeader(name));
-    }
-    parts.add(new DebugInfoResponse(response.getStatus(), responseHeaders));
-
-    // URI
-    if (uriInfo != null
-        && (uriInfo.getFilter() != null || uriInfo.getOrderBy() != null
-            || !uriInfo.getExpand().isEmpty() || !uriInfo.getSelect().isEmpty())) {
-      parts.add(new DebugInfoUri(uriInfo, exception));
-    }
-
-    // runtime measurements
-    if (context.getRuntimeMeasurements() != null) {
-      parts.add(new DebugInfoRuntime(context.getRuntimeMeasurements()));
-    }
-
-    // exceptions
-    if (exception != null) {
-      final Locale locale = MessageService.getSupportedLocale(context.getAcceptableLanguages(), Locale.ENGLISH);
-      parts.add(new DebugInfoException(exception, locale));
-    }
-
-    return parts;
-  }
-
-  private InputStream wrapInJson(final List<DebugInfo> parts) throws IOException {
-    CircleStreamBuffer csb = new CircleStreamBuffer();
-    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(csb.getOutputStream(), "UTF-8"));
-    JsonStreamWriter jsonStreamWriter = new JsonStreamWriter(writer);
-    jsonStreamWriter.beginObject();
-    boolean first = true;
-    for (final DebugInfo part : parts) {
-      if (!first) {
-        jsonStreamWriter.separator();
-      }
-      first = false;
-      jsonStreamWriter.name(part.getName().toLowerCase(Locale.ROOT));
-      part.appendJson(jsonStreamWriter);
-    }
-    jsonStreamWriter.endObject();
-    writer.flush();
-    csb.closeWrite();
-    return csb.getInputStream();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/AbstractSimpleType.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/AbstractSimpleType.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/AbstractSimpleType.java
deleted file mode 100644
index e78e8b6..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/AbstractSimpleType.java
+++ /dev/null
@@ -1,132 +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.odata2.core.edm;
-
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-import org.apache.olingo.odata2.api.edm.EdmTypeKind;
-
-/**
- * Abstract implementation of the EDM simple-type interface.
- * 
- */
-public abstract class AbstractSimpleType implements EdmSimpleType {
-
-  @Override
-  public boolean equals(final Object obj) {
-    return this == obj || (obj != null && getClass() == obj.getClass());
-  }
-
-  @Override
-  public int hashCode() {
-    return getClass().hashCode();
-  }
-
-  @Override
-  public String getNamespace() throws EdmException {
-    return EDM_NAMESPACE;
-  }
-
-  @Override
-  public EdmTypeKind getKind() {
-    return EdmTypeKind.SIMPLE;
-  }
-
-  @Override
-  public String getName() throws EdmException {
-    final String name = getClass().getSimpleName();
-    return name.startsWith(EDM_NAMESPACE) ? name.substring(3) : name;
-  }
-
-  @Override
-  public boolean isCompatible(final EdmSimpleType simpleType) {
-    return equals(simpleType);
-  }
-
-  @Override
-  public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    try {
-      valueOfString(value, literalKind, facets, getDefaultType());
-      return true;
-    } catch (final EdmSimpleTypeException e) {
-      return false;
-    }
-  }
-
-  @Override
-  public final <T> T valueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    if (value == null) {
-      if (facets == null || facets.isNullable() == null || facets.isNullable()) {
-        return null;
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_NULL_NOT_ALLOWED);
-      }
-    }
-
-    if (literalKind == null) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_KIND_MISSING);
-    }
-
-    return internalValueOfString(value, literalKind, facets, returnType);
-  }
-
-  protected abstract <T> T internalValueOfString(String value, EdmLiteralKind literalKind, EdmFacets facets,
-      Class<T> returnType) throws EdmSimpleTypeException;
-
-  @Override
-  public final String valueToString(final Object value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    if (value == null) {
-      if (facets == null || facets.isNullable() == null || facets.isNullable()) {
-        return null;
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_NULL_NOT_ALLOWED);
-      }
-    }
-
-    if (literalKind == null) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_KIND_MISSING);
-    }
-
-    final String result = internalValueToString(value, literalKind, facets);
-    return literalKind == EdmLiteralKind.URI ? toUriLiteral(result) : result;
-  }
-
-  protected abstract <T> String internalValueToString(T value, EdmLiteralKind literalKind, EdmFacets facets)
-      throws EdmSimpleTypeException;
-
-  @Override
-  public String toUriLiteral(final String literal) throws EdmSimpleTypeException {
-    return literal;
-  }
-
-  @Override
-  public String toString() {
-    try {
-      return getNamespace() + Edm.DELIMITER + getName();
-    } catch (final EdmException e) {
-      return super.toString();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/Bit.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/Bit.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/Bit.java
deleted file mode 100644
index 6974ed9..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/Bit.java
+++ /dev/null
@@ -1,59 +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.odata2.core.edm;
-
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the internal simple type Bit.
- * 
- */
-public class Bit extends AbstractSimpleType {
-
-  private static final Bit instance = new Bit();
-
-  public static Bit getInstance() {
-    return instance;
-  }
-
-  @Override
-  public String getNamespace() throws EdmException {
-    return SYSTEM_NAMESPACE;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Byte.class;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    return EdmSByte.getInstance().internalValueOfString(value, literalKind, facets, returnType);
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    return EdmSByte.getInstance().internalValueToString(value, literalKind, facets);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBinary.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBinary.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBinary.java
deleted file mode 100644
index 9922cb0..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBinary.java
+++ /dev/null
@@ -1,152 +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.odata2.core.edm;
-
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.codec.binary.Hex;
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Binary.
- * 
- */
-public class EdmBinary extends AbstractSimpleType {
-
-  private static final EdmBinary instance = new EdmBinary();
-
-  public static EdmBinary getInstance() {
-    return instance;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return byte[].class;
-  }
-
-  @Override
-  public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    if (value == null) {
-      return facets == null || facets.isNullable() == null || facets.isNullable();
-    }
-
-    if (literalKind == null) {
-      return false;
-    }
-
-    return validateLiteral(value, literalKind) && validateMaxLength(value, literalKind, facets);
-  }
-
-  private static boolean validateLiteral(final String value, final EdmLiteralKind literalKind) {
-    return literalKind == EdmLiteralKind.URI ?
-        value.matches("(?:X|binary)'(?:\\p{XDigit}{2})*'") : Base64.isBase64(value);
-  }
-
-  private static boolean
-      validateMaxLength(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    return facets == null || facets.getMaxLength() == null ? true :
-        literalKind == EdmLiteralKind.URI ?
-            // In URI representation, each byte is represented as two hexadecimal digits;
-            // additionally, we have to account for the prefix and the surrounding "'"s.
-            facets.getMaxLength() >= (value.length() - (value.startsWith("X") ? 3 : 8)) / 2
-            :
-            // In default representation, every three bytes are represented as four base-64 characters.
-            // Additionally, there could be up to two padding "=" characters if the number of bytes is
-            // not a multiple of three, and there could be carriage return/line feed combinations.
-            facets.getMaxLength() >= value.length() * 3 / 4 - (value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0)
-                - crlfLength(value);
-  }
-
-  private static int crlfLength(final String value) {
-    int result = 0;
-    int index = 0;
-    while (index >= 0) {
-      index = value.indexOf("\r\n", index);
-      if (index > 0) {
-        result++;
-        index++;
-      }
-    }
-    return result * 2;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    if (!validateLiteral(value, literalKind)) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-    if (!validateMaxLength(value, literalKind, facets)) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_FACETS_NOT_MATCHED.addContent(value, facets));
-    }
-
-    byte[] result;
-    if (literalKind == EdmLiteralKind.URI) {
-      try {
-        result = Hex.decodeHex(value.substring(value.startsWith("X") ? 2 : 7, value.length() - 1).toCharArray());
-      } catch (final DecoderException e) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value), e);
-      }
-    } else {
-      result = Base64.decodeBase64(value);
-    }
-
-    if (returnType.isAssignableFrom(byte[].class)) {
-      return returnType.cast(result);
-    } else if (returnType.isAssignableFrom(Byte[].class)) {
-      Byte[] byteArray = new Byte[result.length];
-      for (int i = 0; i < result.length; i++) {
-        byteArray[i] = result[i];
-      }
-      return returnType.cast(byteArray);
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    byte[] byteArrayValue;
-    if (value instanceof byte[]) {
-      byteArrayValue = (byte[]) value;
-    } else if (value instanceof Byte[]) {
-      final int length = ((Byte[]) value).length;
-      byteArrayValue = new byte[length];
-      for (int i = 0; i < length; i++) {
-        byteArrayValue[i] = ((Byte[]) value)[i].byteValue();
-      }
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-
-    if (facets != null && facets.getMaxLength() != null && byteArrayValue.length > facets.getMaxLength()) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_FACETS_NOT_MATCHED.addContent(value, facets));
-    }
-
-    return Base64.encodeBase64String(byteArrayValue);
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) throws EdmSimpleTypeException {
-    return "binary'" + String.valueOf(Hex.encodeHex(Base64.decodeBase64(literal), false)) + "'";
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBoolean.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBoolean.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBoolean.java
deleted file mode 100644
index 3802a00..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmBoolean.java
+++ /dev/null
@@ -1,83 +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.odata2.core.edm;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Boolean.
- * 
- */
-public class EdmBoolean extends AbstractSimpleType {
-
-  private static final EdmBoolean instance = new EdmBoolean();
-
-  public static EdmBoolean getInstance() {
-    return instance;
-  }
-
-  @Override
-  public boolean isCompatible(final EdmSimpleType simpleType) {
-    return simpleType instanceof Bit || simpleType instanceof EdmBoolean;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Boolean.class;
-  }
-
-  @Override
-  public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    return value == null ?
-        facets == null || facets.isNullable() == null || facets.isNullable() :
-        validateLiteral(value);
-  }
-
-  private static boolean validateLiteral(final String value) {
-    return "true".equals(value) || "1".equals(value)
-        || "false".equals(value) || "0".equals(value);
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    if (validateLiteral(value)) {
-      if (returnType.isAssignableFrom(Boolean.class)) {
-        return returnType.cast(Boolean.valueOf("true".equals(value) || "1".equals(value)));
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-      }
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    if (value instanceof Boolean) {
-      return Boolean.toString((Boolean) value);
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmByte.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmByte.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmByte.java
deleted file mode 100644
index ab936aa..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmByte.java
+++ /dev/null
@@ -1,94 +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.odata2.core.edm;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Byte.
- * 
- */
-public class EdmByte extends AbstractSimpleType {
-
-  private static final EdmByte instance = new EdmByte();
-
-  public static EdmByte getInstance() {
-    return instance;
-  }
-
-  @Override
-  public boolean isCompatible(final EdmSimpleType simpleType) {
-    return simpleType instanceof Bit
-        || simpleType instanceof Uint7
-        || simpleType instanceof EdmByte;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Short.class;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    Short valueShort;
-    try {
-      valueShort = Short.parseShort(value);
-    } catch (final NumberFormatException e) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value), e);
-    }
-    if (valueShort < 0 || valueShort > 255) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-
-    if (returnType.isAssignableFrom(Short.class)) {
-      return returnType.cast(valueShort);
-    } else if (returnType.isAssignableFrom(Byte.class)) {
-      if (valueShort <= Byte.MAX_VALUE) {
-        return returnType.cast(valueShort.byteValue());
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType));
-      }
-    } else if (returnType.isAssignableFrom(Integer.class)) {
-      return returnType.cast(valueShort.intValue());
-    } else if (returnType.isAssignableFrom(Long.class)) {
-      return returnType.cast(valueShort.longValue());
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    if (value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long) {
-      if (((Number) value).longValue() >= 0 && ((Number) value).longValue() <= 255) {
-        return value.toString();
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value));
-      }
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
deleted file mode 100644
index e33d217..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
+++ /dev/null
@@ -1,239 +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.odata2.core.edm;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type DateTime.
- * 
- */
-public class EdmDateTime extends AbstractSimpleType {
-
-  private static final Pattern PATTERN = Pattern.compile(
-      "(\\p{Digit}{1,4})-(\\p{Digit}{1,2})-(\\p{Digit}{1,2})"
-          + "T(\\p{Digit}{1,2}):(\\p{Digit}{1,2})(?::(\\p{Digit}{1,2})(\\.(\\p{Digit}{0,3}?)0*)?)?");
-  private static final Pattern JSON_PATTERN = Pattern.compile("/Date\\((-?\\p{Digit}+)\\)/");
-  private static final EdmDateTime instance = new EdmDateTime();
-
-  public static EdmDateTime getInstance() {
-    return instance;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Calendar.class;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    // In JSON, we allow also the XML literal form, so there is on purpose
-    // no exception if the JSON pattern does not match.
-    if (literalKind == EdmLiteralKind.JSON) {
-      final Matcher matcher = JSON_PATTERN.matcher(value);
-      if (matcher.matches()) {
-        long millis;
-        try {
-          millis = Long.parseLong(matcher.group(1));
-        } catch (final NumberFormatException e) {
-          throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value), e);
-        }
-        if (returnType.isAssignableFrom(Long.class)) {
-          return returnType.cast(millis);
-        } else if (returnType.isAssignableFrom(Date.class)) {
-          return returnType.cast(new Date(millis));
-        } else if (returnType.isAssignableFrom(Calendar.class)) {
-          Calendar dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-          dateTimeValue.clear();
-          dateTimeValue.setTimeInMillis(millis);
-          return returnType.cast(dateTimeValue);
-        } else {
-          throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-        }
-      }
-    }
-
-    Calendar dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-    dateTimeValue.clear();
-
-    if (literalKind == EdmLiteralKind.URI) {
-      if (value.length() > 10 && value.startsWith("datetime'") && value.endsWith("'")) {
-        parseLiteral(value.substring(9, value.length() - 1), facets, dateTimeValue);
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-    } else {
-      parseLiteral(value, facets, dateTimeValue);
-    }
-
-    if (returnType.isAssignableFrom(Calendar.class)) {
-      return returnType.cast(dateTimeValue);
-    } else if (returnType.isAssignableFrom(Long.class)) {
-      return returnType.cast(dateTimeValue.getTimeInMillis());
-    } else if (returnType.isAssignableFrom(Date.class)) {
-      return returnType.cast(dateTimeValue.getTime());
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-    }
-  }
-
-  /**
-   * Parses a formatted date/time value and sets the values of a {@link Calendar} object accordingly.
-   * @param value the formatted date/time value as String
-   * @param facets additional constraints for parsing (optional)
-   * @param dateTimeValue the Calendar object to be set to the parsed value
-   * @throws EdmSimpleTypeException
-   */
-  protected static void parseLiteral(final String value, final EdmFacets facets, final Calendar dateTimeValue)
-      throws EdmSimpleTypeException {
-    final Matcher matcher = PATTERN.matcher(value);
-    if (!matcher.matches()) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-
-    dateTimeValue.set(
-        Short.parseShort(matcher.group(1)),
-        Byte.parseByte(matcher.group(2)) - 1, // month is zero-based
-        Byte.parseByte(matcher.group(3)),
-        Byte.parseByte(matcher.group(4)),
-        Byte.parseByte(matcher.group(5)),
-        matcher.group(6) == null ? 0 : Byte.parseByte(matcher.group(6)));
-
-    if (matcher.group(7) != null) {
-      if (matcher.group(7).length() == 1 || matcher.group(7).length() > 8) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-      final String decimals = matcher.group(8);
-      if (facets != null && facets.getPrecision() != null && facets.getPrecision() < decimals.length()) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_FACETS_NOT_MATCHED.addContent(value, facets));
-      }
-      final String milliSeconds = decimals + "000".substring(decimals.length());
-      dateTimeValue.set(Calendar.MILLISECOND, Short.parseShort(milliSeconds));
-    }
-
-    // The Calendar class does not check any values until a get method is called,
-    // so we do just that to validate the fields set above, not because we want
-    // to return something else. For strict checks, the lenient mode is switched
-    // off temporarily.
-    dateTimeValue.setLenient(false);
-    try {
-      dateTimeValue.get(Calendar.MILLISECOND);
-    } catch (final IllegalArgumentException e) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value), e);
-    }
-    dateTimeValue.setLenient(true);
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    long timeInMillis;
-    if (value instanceof Date) {
-      timeInMillis = ((Date) value).getTime();
-    } else if (value instanceof Calendar) {
-      timeInMillis = ((Calendar) value).getTimeInMillis();
-    } else if (value instanceof Long) {
-      timeInMillis = ((Long) value).longValue();
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-
-    if (literalKind == EdmLiteralKind.JSON) {
-      return "/Date(" + timeInMillis + ")/";
-    }
-
-    Calendar dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-    dateTimeValue.setTimeInMillis(timeInMillis);
-
-    StringBuilder result = new StringBuilder(23); // 23 characters are enough for millisecond precision.
-    final int year = dateTimeValue.get(Calendar.YEAR);
-    appendTwoDigits(result, year / 100);
-    appendTwoDigits(result, year % 100);
-    result.append('-');
-    appendTwoDigits(result, dateTimeValue.get(Calendar.MONTH) + 1); // month is zero-based
-    result.append('-');
-    appendTwoDigits(result, dateTimeValue.get(Calendar.DAY_OF_MONTH));
-    result.append('T');
-    appendTwoDigits(result, dateTimeValue.get(Calendar.HOUR_OF_DAY));
-    result.append(':');
-    appendTwoDigits(result, dateTimeValue.get(Calendar.MINUTE));
-    result.append(':');
-    appendTwoDigits(result, dateTimeValue.get(Calendar.SECOND));
-
-    try {
-      appendMilliseconds(result, dateTimeValue.get(Calendar.MILLISECOND), facets);
-    } catch (final IllegalArgumentException e) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_FACETS_NOT_MATCHED.addContent(value, facets), e);
-    }
-
-    return result.toString();
-  }
-
-  /**
-   * Appends the given number to the given string builder,
-   * assuming that the number has at most two digits, performance-optimized.
-   * @param result a {@link StringBuilder}
-   * @param number an integer that must satisfy <code>0 <= number <= 99</code>
-   */
-  private static void appendTwoDigits(final StringBuilder result, final int number) {
-    result.append((char) ('0' + number / 10));
-    result.append((char) ('0' + number % 10));
-  }
-
-  protected static void appendMilliseconds(final StringBuilder result, final long milliseconds, final EdmFacets facets)
-      throws IllegalArgumentException {
-    final int digits = milliseconds % 1000 == 0 ? 0 : milliseconds % 100 == 0 ? 1 : milliseconds % 10 == 0 ? 2 : 3;
-    if (digits > 0) {
-      result.append('.');
-      for (int d = 100; d > 0; d /= 10) {
-        final byte digit = (byte) (milliseconds % (d * 10) / d);
-        if (digit > 0 || milliseconds % d > 0) {
-          result.append((char) ('0' + digit));
-        }
-      }
-    }
-
-    if (facets != null && facets.getPrecision() != null) {
-      final int precision = facets.getPrecision();
-      if (digits > precision) {
-        throw new IllegalArgumentException();
-      }
-      if (digits == 0 && precision > 0) {
-        result.append('.');
-      }
-      for (int i = digits; i < precision; i++) {
-        result.append('0');
-      }
-    }
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) throws EdmSimpleTypeException {
-    return "datetime'" + literal + "'";
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
deleted file mode 100644
index 6c01ac0..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
+++ /dev/null
@@ -1,174 +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.odata2.core.edm;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type DateTimeOffset.
- * 
- * Details about parsing of time strings to {@link EdmDateTimeOffset} objects can be found in
- * {@link org.apache.olingo.odata2.api.edm.EdmSimpleType} documentation.
- * 
- * 
- */
-public class EdmDateTimeOffset extends AbstractSimpleType {
-
-  private static final Pattern PATTERN = Pattern.compile(
-      "\\p{Digit}{1,4}-\\p{Digit}{1,2}-\\p{Digit}{1,2}"
-          + "T\\p{Digit}{1,2}:\\p{Digit}{1,2}(?::\\p{Digit}{1,2}(?:\\.\\p{Digit}{1,7})?)?"
-          + "(Z|([-+]\\p{Digit}{1,2}:\\p{Digit}{2}))?");
-  private static final Pattern JSON_PATTERN = Pattern.compile(
-      "/Date\\((-?\\p{Digit}+)(?:(\\+|-)(\\p{Digit}{1,4}))?\\)/");
-  private static final EdmDateTimeOffset instance = new EdmDateTimeOffset();
-
-  public static EdmDateTimeOffset getInstance() {
-    return instance;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Calendar.class;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    if (literalKind == EdmLiteralKind.URI) {
-      if (value.length() > 16 && value.startsWith("datetimeoffset'") && value.endsWith("'")) {
-        return internalValueOfString(value.substring(15, value.length() - 1), EdmLiteralKind.DEFAULT, facets,
-            returnType);
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-    }
-
-    Calendar dateTimeValue = null;
-
-    if (literalKind == EdmLiteralKind.JSON) {
-      final Matcher matcher = JSON_PATTERN.matcher(value);
-      if (matcher.matches()) {
-        long millis;
-        try {
-          millis = Long.parseLong(matcher.group(1));
-        } catch (final NumberFormatException e) {
-          throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value), e);
-        }
-        String timeZone = "GMT";
-        if (matcher.group(2) != null) {
-          final int offsetInMinutes = Integer.parseInt(matcher.group(3));
-          if (offsetInMinutes >= 24 * 60) {
-            throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-          }
-          if (offsetInMinutes != 0) {
-            timeZone += matcher.group(2) + String.valueOf(offsetInMinutes / 60)
-                + ":" + String.format("%02d", offsetInMinutes % 60);
-            // Convert the local-time milliseconds to UTC.
-            millis -= (matcher.group(2).equals("+") ? 1 : -1) * offsetInMinutes * 60 * 1000;
-          }
-        }
-        dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone(timeZone));
-        dateTimeValue.clear();
-        dateTimeValue.setTimeInMillis(millis);
-      }
-    }
-
-    if (dateTimeValue == null) {
-      final Matcher matcher = PATTERN.matcher(value);
-      if (!matcher.matches()) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-
-      final String timeZoneOffset =
-          matcher.group(1) != null && matcher.group(2) != null && !matcher.group(2).matches("[-+]0+:0+") ? matcher
-              .group(2) : null;
-      dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone("GMT" + timeZoneOffset));
-      if (dateTimeValue.get(Calendar.ZONE_OFFSET) == 0 && timeZoneOffset != null) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-      dateTimeValue.clear();
-      EdmDateTime.parseLiteral(value.substring(0, matcher.group(1) == null ? value.length() : matcher.start(1)),
-          facets, dateTimeValue);
-    }
-
-    if (returnType.isAssignableFrom(Calendar.class)) {
-      return returnType.cast(dateTimeValue);
-    } else if (returnType.isAssignableFrom(Long.class)) {
-      return returnType.cast(dateTimeValue.getTimeInMillis());
-    } else if (returnType.isAssignableFrom(Date.class)) {
-      return returnType.cast(dateTimeValue.getTime());
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    Long milliSeconds; // number of milliseconds since 1970-01-01T00:00:00Z
-    int offset; // offset in milliseconds from GMT to the requested time zone
-    if (value instanceof Date) {
-      milliSeconds = ((Date) value).getTime();
-      // Although java.util.Date, as stated in its documentation,
-      // "is intended to reflect coordinated universal time (UTC)",
-      // its toString() method uses the default time zone. And so do we.
-      Calendar dateTimeValue = Calendar.getInstance();
-      dateTimeValue.setTime((Date) value);
-      offset = dateTimeValue.get(Calendar.ZONE_OFFSET) + dateTimeValue.get(Calendar.DST_OFFSET);
-    } else if (value instanceof Calendar) {
-      final Calendar dateTimeValue = (Calendar) ((Calendar) value).clone();
-      milliSeconds = dateTimeValue.getTimeInMillis();
-      offset = dateTimeValue.get(Calendar.ZONE_OFFSET) + dateTimeValue.get(Calendar.DST_OFFSET);
-    } else if (value instanceof Long) {
-      milliSeconds = (Long) value;
-      offset = 0;
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-
-    milliSeconds += offset; // Convert from UTC to local time.
-    final int offsetInMinutes = offset / 60 / 1000;
-
-    if (literalKind == EdmLiteralKind.JSON) {
-      return "/Date(" + milliSeconds + (offset == 0 ? "" : String.format("%+05d", offsetInMinutes)) + ")/";
-
-    } else {
-      final String localTimeString =
-          EdmDateTime.getInstance().valueToString(milliSeconds, EdmLiteralKind.DEFAULT, facets);
-      final int offsetHours = offsetInMinutes / 60;
-      final int offsetMinutes = Math.abs(offsetInMinutes % 60);
-      final String offsetString = offset == 0 ? "Z" : String.format("%+03d:%02d", offsetHours, offsetMinutes);
-
-      return localTimeString + offsetString;
-    }
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) throws EdmSimpleTypeException {
-    return "datetimeoffset'" + literal + "'";
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDecimal.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDecimal.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDecimal.java
deleted file mode 100644
index 91178a0..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDecimal.java
+++ /dev/null
@@ -1,206 +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.odata2.core.edm;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Decimal.
- * 
- */
-public class EdmDecimal extends AbstractSimpleType {
-
-  // value-range limitation according to the CSDL document
-  private static final int MAX_DIGITS = 29;
-
-  private static final Pattern PATTERN = Pattern
-      .compile("(?:\\+|-)?(?:0*(\\p{Digit}{1,29}?))(?:\\.(\\p{Digit}{1,29}?)0*)?(M|m)?");
-  private static final EdmDecimal instance = new EdmDecimal();
-
-  public static EdmDecimal getInstance() {
-    return instance;
-  }
-
-  @Override
-  public boolean isCompatible(final EdmSimpleType simpleType) {
-    return simpleType instanceof Bit
-        || simpleType instanceof Uint7
-        || simpleType instanceof EdmByte
-        || simpleType instanceof EdmSByte
-        || simpleType instanceof EdmInt16
-        || simpleType instanceof EdmInt32
-        || simpleType instanceof EdmInt64
-        || simpleType instanceof EdmSingle
-        || simpleType instanceof EdmDouble
-        || simpleType instanceof EdmDecimal;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return BigDecimal.class;
-  }
-
-  @Override
-  public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    if (value == null) {
-      return facets == null || facets.isNullable() == null || facets.isNullable();
-    }
-
-    if (literalKind == null) {
-      return false;
-    }
-
-    return validateLiteral(value, literalKind) && validatePrecisionAndScale(value, facets);
-  }
-
-  private static boolean validateLiteral(final String value, final EdmLiteralKind literalKind) {
-    final Matcher matcher = PATTERN.matcher(value);
-    return matcher.matches()
-        && (literalKind == EdmLiteralKind.URI) != (matcher.group(3) == null);
-  }
-
-  private static final boolean validatePrecisionAndScale(final String value, final EdmFacets facets) {
-    if (facets == null || facets.getPrecision() == null && facets.getScale() == null) {
-      return true;
-    }
-
-    final Matcher matcher = PATTERN.matcher(value);
-    matcher.matches();
-    final int significantIntegerDigits = matcher.group(1).equals("0") ? 0 : matcher.group(1).length();
-    final int decimals = matcher.group(2) == null ? 0 : matcher.group(2).length();
-    return (facets.getPrecision() == null || facets.getPrecision() >= significantIntegerDigits + decimals)
-        && (facets.getScale() == null || facets.getScale() >= decimals);
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    if (!validateLiteral(value, literalKind)) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-    if (!validatePrecisionAndScale(value, facets)) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_FACETS_NOT_MATCHED.addContent(value, facets));
-    }
-
-    final BigDecimal valueBigDecimal = new BigDecimal(
-        literalKind == EdmLiteralKind.URI ? value.substring(0, value.length() - 1) : value);
-
-    if (returnType.isAssignableFrom(BigDecimal.class)) {
-      return returnType.cast(valueBigDecimal);
-    } else if (returnType.isAssignableFrom(Double.class)) {
-      if (BigDecimal.valueOf(valueBigDecimal.doubleValue()).compareTo(valueBigDecimal) == 0) {
-        return returnType.cast(valueBigDecimal.doubleValue());
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType));
-      }
-    } else if (returnType.isAssignableFrom(Float.class)) {
-      if (BigDecimal.valueOf(valueBigDecimal.floatValue()).compareTo(valueBigDecimal) == 0) {
-        return returnType.cast(valueBigDecimal.floatValue());
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType));
-      }
-    } else {
-      try {
-        if (returnType.isAssignableFrom(BigInteger.class)) {
-          return returnType.cast(valueBigDecimal.toBigIntegerExact());
-        } else if (returnType.isAssignableFrom(Long.class)) {
-          return returnType.cast(valueBigDecimal.longValueExact());
-        } else if (returnType.isAssignableFrom(Integer.class)) {
-          return returnType.cast(valueBigDecimal.intValueExact());
-        } else if (returnType.isAssignableFrom(Short.class)) {
-          return returnType.cast(valueBigDecimal.shortValueExact());
-        } else if (returnType.isAssignableFrom(Byte.class)) {
-          return returnType.cast(valueBigDecimal.byteValueExact());
-        } else {
-          throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-        }
-      } catch (final ArithmeticException e) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType), e);
-      }
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    String result;
-    if (value instanceof Long || value instanceof Integer || value instanceof Short || value instanceof Byte
-        || value instanceof BigInteger) {
-      result = value.toString();
-      final int digits = result.startsWith("-") ? result.length() - 1 : result.length();
-      if (digits > MAX_DIGITS) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value));
-      }
-      if (facets != null && facets.getPrecision() != null && facets.getPrecision() < digits) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_FACETS_NOT_MATCHED.addContent(value, facets));
-      }
-
-    } else if (value instanceof Double || value instanceof Float || value instanceof BigDecimal) {
-      BigDecimal bigDecimalValue;
-      try {
-        if (value instanceof Double) {
-          bigDecimalValue = BigDecimal.valueOf((Double) value);
-        } else if (value instanceof Float) {
-          bigDecimalValue = BigDecimal.valueOf((Float) value);
-        } else {
-          bigDecimalValue = (BigDecimal) value;
-        }
-      } catch (final NumberFormatException e) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value), e);
-      }
-
-      if (bigDecimalValue.precision() - bigDecimalValue.scale() > MAX_DIGITS
-          || bigDecimalValue.scale() > MAX_DIGITS) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value));
-      }
-
-      final int digits = bigDecimalValue.scale() >= 0 ?
-          Math.max(bigDecimalValue.precision(), bigDecimalValue.scale()) :
-          bigDecimalValue.precision() - bigDecimalValue.scale();
-      if (facets == null
-          || (facets.getPrecision() == null || facets.getPrecision() >= digits)
-          && (facets.getScale() == null || facets.getScale() >= bigDecimalValue.scale())) {
-        result = bigDecimalValue.toPlainString();
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_FACETS_NOT_MATCHED.addContent(value, facets));
-      }
-
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-
-    return result;
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) throws EdmSimpleTypeException {
-    return literal + "M";
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDouble.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDouble.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDouble.java
deleted file mode 100644
index cbf60b6..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDouble.java
+++ /dev/null
@@ -1,171 +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.odata2.core.edm;
-
-import java.math.BigDecimal;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Double.
- * 
- */
-public class EdmDouble extends AbstractSimpleType {
-
-  // value-range limitations according to the CSDL document
-  private static final int MAX_PRECISION = 15;
-  private static final int MAX_SCALE = 308;
-
-  private static final Pattern PATTERN = Pattern.compile(
-      "(?:\\+|-)?\\p{Digit}{1,15}(?:\\.\\p{Digit}{1,15})?(?:(?:E|e)(?:\\+|-)?\\p{Digit}{1,3})?(D|d)?");
-  private static final EdmDouble instance = new EdmDouble();
-
-  public static EdmDouble getInstance() {
-    return instance;
-  }
-
-  @Override
-  public boolean isCompatible(final EdmSimpleType simpleType) {
-    return simpleType instanceof Bit
-        || simpleType instanceof Uint7
-        || simpleType instanceof EdmByte
-        || simpleType instanceof EdmSByte
-        || simpleType instanceof EdmInt16
-        || simpleType instanceof EdmInt32
-        || simpleType instanceof EdmInt64
-        || simpleType instanceof EdmSingle
-        || simpleType instanceof EdmDouble;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return Double.class;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    String valueString = value;
-    Double result = null;
-    // Handle special values first.
-    if (value.equals("-INF")) {
-      result = Double.NEGATIVE_INFINITY;
-    } else if (value.equals("INF")) {
-      result = Double.POSITIVE_INFINITY;
-    } else if (value.equals("NaN")) {
-      result = Double.NaN;
-    } else {
-      // Now only "normal" numbers remain.
-      final Matcher matcher = PATTERN.matcher(value);
-      if (!matcher.matches()
-          || (literalKind == EdmLiteralKind.URI) == (matcher.group(1) == null)) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-
-      if (literalKind == EdmLiteralKind.URI) {
-        valueString = value.substring(0, value.length() - 1);
-      }
-
-      // The number format is checked above, so we don't have to catch NumberFormatException.
-      result = Double.valueOf(valueString);
-      // "Real" infinite values have been treated already above, so we can throw an exception
-      // if the conversion to a float results in an infinite value.
-      if (result.isInfinite()) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-      }
-    }
-
-    if (returnType.isAssignableFrom(Double.class)) {
-      return returnType.cast(result);
-    } else if (returnType.isAssignableFrom(Float.class)) {
-      if (result.floatValue() == result) {
-        return returnType.cast(result.floatValue());
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType));
-      }
-    } else if (result.isInfinite() || result.isNaN()) {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-          returnType));
-    } else {
-      try {
-        final BigDecimal valueBigDecimal = new BigDecimal(valueString);
-        if (returnType.isAssignableFrom(BigDecimal.class)) {
-          return returnType.cast(valueBigDecimal);
-        } else if (returnType.isAssignableFrom(Long.class)) {
-          return returnType.cast(valueBigDecimal.longValueExact());
-        } else if (returnType.isAssignableFrom(Integer.class)) {
-          return returnType.cast(valueBigDecimal.intValueExact());
-        } else if (returnType.isAssignableFrom(Short.class)) {
-          return returnType.cast(valueBigDecimal.shortValueExact());
-        } else if (returnType.isAssignableFrom(Byte.class)) {
-          return returnType.cast(valueBigDecimal.byteValueExact());
-        } else {
-          throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-        }
-
-      } catch (final ArithmeticException e) {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value,
-            returnType), e);
-      }
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    if (value instanceof Long) {
-      if (Math.abs((Long) value) < Math.pow(10, MAX_PRECISION)) {
-        return value.toString();
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value));
-      }
-    } else if (value instanceof Integer || value instanceof Short || value instanceof Byte) {
-      return value.toString();
-    } else if (value instanceof Double) {
-      final String result = value.toString();
-      return ((Double) value).isInfinite() ? result.toUpperCase(Locale.ROOT)
-          .substring(0, value.toString().length() - 5) : result;
-    } else if (value instanceof Float) {
-      final String result = value.toString();
-      return ((Float) value).isInfinite() ? result.toUpperCase(Locale.ROOT).substring(0, value.toString().length() - 5)
-          : result;
-    } else if (value instanceof BigDecimal) {
-      if (((BigDecimal) value).precision() <= MAX_PRECISION && Math.abs(((BigDecimal) value).scale()) <= MAX_SCALE) {
-        return ((BigDecimal) value).toString();
-      } else {
-        throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_ILLEGAL_CONTENT.addContent(value));
-      }
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) {
-    return literal.equals("-INF") || literal.equals("INF") || literal.equals("NaN") ?
-        literal : literal + "D";
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
deleted file mode 100644
index dadd3b6..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmGuid.java
+++ /dev/null
@@ -1,88 +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.odata2.core.edm;
-
-import java.util.UUID;
-
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
-
-/**
- * Implementation of the EDM simple type Guid.
- * 
- */
-public class EdmGuid extends AbstractSimpleType {
-
-  private static final String PATTERN = "\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12}";
-  private static final EdmGuid instance = new EdmGuid();
-
-  public static EdmGuid getInstance() {
-    return instance;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return UUID.class;
-  }
-
-  @Override
-  public boolean validate(final String value, final EdmLiteralKind literalKind, final EdmFacets facets) {
-    return value == null ?
-        facets == null || facets.isNullable() == null || facets.isNullable() :
-        validateLiteral(value, literalKind);
-  }
-
-  private boolean validateLiteral(final String value, final EdmLiteralKind literalKind) {
-    return value.matches(literalKind == EdmLiteralKind.URI ? toUriLiteral(PATTERN) : PATTERN);
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value, final EdmLiteralKind literalKind, final EdmFacets facets,
-      final Class<T> returnType) throws EdmSimpleTypeException {
-    UUID result;
-    if (validateLiteral(value, literalKind)) {
-      result = UUID.fromString(
-          literalKind == EdmLiteralKind.URI ? value.substring(5, value.length() - 1) : value);
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value));
-    }
-
-    if (returnType.isAssignableFrom(UUID.class)) {
-      return returnType.cast(result);
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
-    }
-  }
-
-  @Override
-  protected <T> String internalValueToString(final T value, final EdmLiteralKind literalKind, final EdmFacets facets)
-      throws EdmSimpleTypeException {
-    if (value instanceof UUID) {
-      return ((UUID) value).toString();
-    } else {
-      throw new EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass()));
-    }
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) {
-    return "guid'" + literal + "'";
-  }
-}