Make FilterImpl.toString() add escape characters where needed (FELIX-471).

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@615079 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java b/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
index 86122b3..46ff157 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
@@ -1044,7 +1044,7 @@
 
         public void toStringInfix(StringBuffer b)
         {
-            b.append(val.toString());
+            appendEscaped(b, val.toString());
         }
     }
 
@@ -1195,12 +1195,12 @@
             b.append("=");
             for (int i = 0; i < pieces.length; i++)
             {
-                String piece = (String) pieces[i];
+                String piece = pieces[i];
                 if (i > 0)
                 {
                     b.append("*");
                 }
-                b.append(piece);
+                appendEscaped(b, piece);
             }
             b.append(")");
         }
@@ -1374,6 +1374,19 @@
         return false;
     }
 
+    private static void appendEscaped(StringBuffer buf, String value) 
+    {
+        for (int i = 0; i < value.length(); i++) 
+        {
+            char c = value.charAt(i);
+            if (c == '(' || c == ')' || c == '*' || c == '\\') 
+            {
+                buf.append('\\');
+            }
+            buf.append(c);
+        }
+    }
+    
     /**
      * This is an ugly utility method to convert an array of primitives
      * to an array of primitive wrapper objects. This method simplifies