You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2013/10/24 14:34:05 UTC
svn commit: r1535353 - in /felix/trunk/metatype/src:
main/java/org/apache/felix/metatype/AD.java
test/java/org/apache/felix/metatype/ADTest.java
Author: cziegeler
Date: Thu Oct 24 12:34:04 2013
New Revision: 1535353
URL: http://svn.apache.org/r1535353
Log:
FELIX-4289 : Spaces within values are removed for default values
Modified:
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java
felix/trunk/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java?rev=1535353&r1=1535352&r2=1535353&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java Thu Oct 24 12:34:04 2013
@@ -354,10 +354,20 @@ public class AD extends OptionalAttribut
int length = listString.length();
boolean escaped = false;
-
+ int spaceCount = 0;
+ boolean start = true;
for (int i = 0; i < length; i++)
{
char ch = listString.charAt(i);
+ final boolean isWhitespace = Character.isWhitespace(ch);
+ if ( start )
+ {
+ if ( isWhitespace )
+ {
+ continue;
+ }
+ start = false;
+ }
if (ch == '\\')
{
if (!escaped)
@@ -373,23 +383,33 @@ public class AD extends OptionalAttribut
// unescaped comma, this is a string delimiter...
strings.add(sb.toString());
sb.setLength(0);
+ start = true;
+ spaceCount = 0;
continue;
}
- }
- else if (ch == ' ')
+ } else if ( ch == ' ')
{
- // we should ignore spaces normally, unless they are escaped...
- if (!escaped)
+ // space is only ignored at beginning and end but not if escaped
+ if (!escaped )
{
+ spaceCount++;
continue;
}
}
- else if (Character.isWhitespace(ch))
+ else if (isWhitespace )
{
// Other whitespaces are ignored...
continue;
}
+ if ( spaceCount > 0)
+ {
+ for(int m = 0; m<spaceCount; m++)
+ {
+ sb.append(" ");
+ }
+ spaceCount = 0;
+ }
sb.append(ch);
escaped = false;
}
Modified: felix/trunk/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/test/java/org/apache/felix/metatype/ADTest.java?rev=1535353&r1=1535352&r2=1535353&view=diff
==============================================================================
--- felix/trunk/metatype/src/test/java/org/apache/felix/metatype/ADTest.java (original)
+++ felix/trunk/metatype/src/test/java/org/apache/felix/metatype/ADTest.java Thu Oct 24 12:34:04 2013
@@ -120,6 +120,18 @@ public class ADTest extends TestCase
assertEquals(value1, list[1]);
}
+ public void testSpaces()
+ {
+ String value = "Hello World";
+ String listString = BLANK + value + BLANK + "," + BLANK + value + BLANK + "," +value;
+ String[] list = AD.splitList(listString);
+ assertNotNull(list);
+ assertEquals(3, list.length);
+ assertEquals(value, list[0]);
+ assertEquals(value, list[1]);
+ assertEquals(value, list[2]);
+ }
+
public void testStandardSample()
{
String value0 = "a,b";