faster RuntimeType.toLowerCase in PropertiesHelper

Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
index a351ddc..cb1c87b 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
@@ -42,6 +42,8 @@
     private static final Logger LOGGER = Logger.getLogger(PropertiesHelper.class.getName());
     private static final boolean METAINF_SERVICES_LOOKUP_DISABLE_DEFAULT = false;
     private static final boolean JAXRS_SERVICE_LOADING_ENABLE_DEFAULT = true;
+    private static final String RUNTIME_SERVER_LOWER = RuntimeType.SERVER.name().toLowerCase(Locale.ROOT);
+    private static final String RUNTIME_CLIENT_LOWER = RuntimeType.CLIENT.name().toLowerCase(Locale.ROOT);
 
     /**
      * Get system properties.
@@ -221,7 +223,7 @@
             String runtimeAwareKey = getPropertyNameForRuntime(key, runtimeType);
             if (key.equals(runtimeAwareKey)) {
                 // legacy behaviour
-                runtimeAwareKey = key + "." + runtimeType.name().toLowerCase(Locale.ROOT);
+                runtimeAwareKey = key + "." + toLowerCase(runtimeType);
             }
             value = properties.get(runtimeAwareKey);
         }
@@ -255,11 +257,11 @@
         if (runtimeType != null && key.startsWith("jersey.config")) {
             RuntimeType[] types = RuntimeType.values();
             for (RuntimeType type : types) {
-                if (key.startsWith("jersey.config." + type.name().toLowerCase(Locale.ROOT))) {
+                if (key.startsWith("jersey.config." + toLowerCase(type))) {
                     return key;
                 }
             }
-            return key.replace("jersey.config", "jersey.config." + runtimeType.name().toLowerCase(Locale.ROOT));
+            return key.replace("jersey.config", "jersey.config." + toLowerCase(runtimeType));
         }
         return key;
     }
@@ -388,6 +390,20 @@
     }
 
     /**
+     * Faster replacement of {@code RuntimeType#name().toLowerCase(Locale.ROOT)}
+     * @param runtimeType The runtime type to lower case
+     * @return the lower-cased variant of the {@link RuntimeType}.
+     */
+    private static String toLowerCase(RuntimeType runtimeType) {
+        switch (runtimeType) {
+            case CLIENT:
+                return RUNTIME_CLIENT_LOWER;
+            default:
+                return RUNTIME_SERVER_LOWER;
+        }
+    }
+
+    /**
      * Prevent instantiation.
      */
     private PropertiesHelper() {