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 2019/05/14 19:09:26 UTC

[olingo-odata4] branch master updated: OLINGO-1357 use s map to cache EdmPrimitiveTypeKind values for lookup

This is an automated email from the ASF dual-hosted git repository.

mibo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git


The following commit(s) were added to refs/heads/master by this push:
     new 7ff8ffd  OLINGO-1357 use s map to cache EdmPrimitiveTypeKind values for lookup
     new 2a509a3  Merge pull request #51 from DirkMahler/master
7ff8ffd is described below

commit 7ff8ffdf37781f67d5500479f8492b9d957da889
Author: Dirk Mahler <di...@buschmais.com>
AuthorDate: Mon May 13 14:13:40 2019 +0200

    OLINGO-1357 use s map to cache EdmPrimitiveTypeKind values for lookup
---
 .../commons/api/edm/EdmPrimitiveTypeKind.java      | 24 ++++++++++++++++++++++
 .../olingo/commons/core/edm/EdmTypeInfo.java       |  7 ++-----
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
index ecac055..7bd3e14 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
@@ -18,6 +18,10 @@
  */
 package org.apache.olingo.commons.api.edm;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Enumeration of all primitive type kinds.
  */
@@ -57,6 +61,26 @@ public enum EdmPrimitiveTypeKind {
   GeometryMultiPolygon,
   GeometryCollection;
 
+  private static Map<String, EdmPrimitiveTypeKind> VALUES_BY_NAME;
+
+  static {
+    Map<String, EdmPrimitiveTypeKind> valuesByName = new HashMap<java.lang.String, EdmPrimitiveTypeKind>();
+    for (EdmPrimitiveTypeKind value : values()) {
+      valuesByName.put(value.name(), value);
+    }
+    VALUES_BY_NAME = Collections.unmodifiableMap(valuesByName);
+  }
+
+  /**
+   * Get a type kind by name.
+   *
+   * @param name The name.
+   * @return The type kind or <tt>null</tt> if it does not exist.
+   */
+  public static EdmPrimitiveTypeKind getByName(String name) {
+    return VALUES_BY_NAME.get(name);
+  }
+
   /**
    * Checks if is a geospatial type.
    *
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeInfo.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeInfo.java
index b196b84..46c6361 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeInfo.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTypeInfo.java
@@ -109,11 +109,8 @@ public class EdmTypeInfo {
 
     fullQualifiedName = new FullQualifiedName(namespace, typeName);
 
-    try {
-      primitiveType = EdmPrimitiveTypeKind.valueOf(typeName);
-    } catch (final IllegalArgumentException e) {
-      primitiveType = null;
-    }
+    primitiveType = EdmPrimitiveTypeKind.getByName(typeName);
+
     if (primitiveType == null && edm != null) {
       typeDefinition = edm.getTypeDefinition(fullQualifiedName);
       if (typeDefinition == null) {