Fix possible thread safety problem in completer

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/22ece466
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/22ece466
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/22ece466

Branch: refs/heads/master
Commit: 22ece466b8cb1497076659a078729b1e144cb0e0
Parents: 0c97f00
Author: Guillaume Nodet <gno...@gmail.com>
Authored: Thu Jan 8 10:00:05 2015 +0100
Committer: Guillaume Nodet <gno...@gmail.com>
Committed: Thu Jan 8 10:01:46 2015 +0100

----------------------------------------------------------------------
 .../command/completers/ConfigurationPropertyCompleter.java   | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/22ece466/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
----------------------------------------------------------------------
diff --git 
a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
 
b/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
index 2b43fec..78d88a2 100644
--- 
a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
+++ 
b/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
@@ -47,8 +47,6 @@ import org.osgi.service.cm.ConfigurationAdmin;
 @Service
 public class ConfigurationPropertyCompleter implements Completer {
 
-    private final StringsCompleter delegate = new StringsCompleter();
-
     private static final String OPTION = "-p";
     private static final String ALIAS = "--pid";
 
@@ -57,15 +55,15 @@ public class ConfigurationPropertyCompleter implements 
Completer {
 
     @SuppressWarnings("rawtypes")
     public int complete(final Session session, final CommandLine commandLine, 
final List<String> candidates) {
+        StringsCompleter strings = new StringsCompleter();
         if (session != null) {
             String pid = getPid(session, commandLine);
             Set<String> propertyNames = getPropertyNames(pid);
-            delegate.getStrings().clear();
             if (propertyNames != null && !propertyNames.isEmpty()) {
-                delegate.getStrings().addAll(propertyNames);
+                strings.getStrings().addAll(propertyNames);
             }
         }
-        return delegate.complete(session, commandLine, candidates);
+        return strings.complete(session, commandLine, candidates);
     }
 
     /**

Reply via email to