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

flange pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/master by this push:
     new 2c45df8  Avoid intern() to reuse commons tring in SimpleFilter
2c45df8 is described below

commit 2c45df88f166fa0892a71f30e347a0072e6f07f2
Author: Fabian Lange <lange.fab...@gmail.com>
AuthorDate: Wed Apr 11 11:01:46 2018 +0200

    Avoid intern() to reuse commons tring in SimpleFilter
---
 .../features/internal/resolver/SimpleFilter.java   | 29 +++++++++++++---------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/SimpleFilter.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/SimpleFilter.java
index 02635d4..c33bda9 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/SimpleFilter.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/SimpleFilter.java
@@ -19,12 +19,11 @@ package org.apache.karaf.features.internal.resolver;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Deque;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.felix.utils.version.VersionRange;
 
@@ -43,15 +42,15 @@ public class SimpleFilter {
     /**
      * Strings which are commonly found in filter specification. We use this 
map as an interner.
      */
-    private static final Set<String> COMMON_STRINGS;
+    private static final ConcurrentHashMap<String, String> COMMON_STRINGS;
 
     static {
-        Set<String> s = new HashSet<>(8);
-        s.add("optional");
-        s.add("osgi.ee");
-        s.add("resolution");
-        s.add("uses");
-        s.add("version");
+        ConcurrentHashMap<String, String> s = new ConcurrentHashMap<>(8);
+        s.put("optional", "optional");
+        s.put("osgi.ee", "osgi.ee");
+        s.put("resolution", "resolution");
+        s.put("uses", "uses");
+        s.put("version", "version");
         COMMON_STRINGS = s;
     }
 
@@ -62,7 +61,7 @@ public class SimpleFilter {
     private final int op;
 
     SimpleFilter(String name, Object value, int op) {
-        this.name = internIfCommon(name);
+        this.name = reuseCommonString(name);
         this.value = value;
         this.op = op;
     }
@@ -144,8 +143,14 @@ public class SimpleFilter {
         }
     }
 
-    private static String internIfCommon(String str) {
-        return str != null && COMMON_STRINGS.contains(str) ? str.intern() : 
str;
+    private static String reuseCommonString(String str) {
+        if (str != null) {
+            String commonString = COMMON_STRINGS.get(str);
+            if (commonString != null) {
+                return commonString;
+            }
+        }
+        return str;
     }
 
     private static void toString(StringBuilder sb, List<?> list) {

-- 
To stop receiving notification emails like this one, please contact
fla...@apache.org.

Reply via email to