Read Grid selection as string array
diff --git a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
index c531ad6..6ca5335 100644
--- a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
+++ b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
@@ -19,6 +19,7 @@
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.readEventPropertyValue;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderListener;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderProperty;
+import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 
 import java.io.IOException;
 
@@ -30,6 +31,7 @@
 import org.eclipse.rap.rwt.internal.protocol.ClientObjectFactory;
 import org.eclipse.rap.rwt.internal.protocol.IClientObject;
 import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst;
+import org.eclipse.rap.rwt.internal.protocol.ProtocolUtil;
 import org.eclipse.rap.rwt.internal.util.NumberFormatUtil;
 import org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA;
 import org.eclipse.rap.rwt.lifecycle.ControlLCAUtil;
@@ -95,7 +97,7 @@
     Grid grid = ( Grid )widget;
     IClientObject clientObject = ClientObjectFactory.getClientObject( grid );
     clientObject.create( TYPE );
-    clientObject.set( "parent", WidgetUtil.getId( grid.getParent() ) );
+    clientObject.set( "parent", getId( grid.getParent() ) );
     clientObject.set( "style", WidgetLCAUtil.getStyles( grid, ALLOWED_STYLES ) );
     clientObject.set( "appearance", "tree" );
     IGridAdapter adapter = getGridAdapter( grid );
@@ -196,9 +198,8 @@
   // Helping methods to read client-side state
 
   private static void readSelection( Grid grid ) {
-    String value = WidgetLCAUtil.readPropertyValue( grid, "selection" );
-    if( value != null ) {
-      String[] values = value.split( "," );
+    String[] values = ProtocolUtil.readPropertyValueAsStringArray( getId( grid ), "selection" );
+    if( values != null ) {
       GridItem[] selectedItems = new GridItem[ values.length ];
       boolean validItemFound = false;
       for( int i = 0; i < values.length; i++ ) {
@@ -291,7 +292,7 @@
     GridItem[] selection = grid.getSelection();
     String[] result = new String[ selection.length ];
     for( int i = 0; i < result.length; i++ ) {
-      result[ i ] = WidgetUtil.getId( selection[ i ] );
+      result[ i ] = getId( selection[ i ] );
     }
     return result;
   }
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
index a4935df..fdef84e 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
@@ -851,7 +851,7 @@
     Fixture.fakeNewRequest( display );
     Fixture.fakeSetParameter( getId( grid ),
                               "selection",
-                              getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+                              new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
     Fixture.readDataAndProcessAction( grid );
 
     GridItem[] selectedItems = grid.getSelection();
@@ -867,7 +867,7 @@
     Fixture.fakeNewRequest( display );
     Fixture.fakeSetParameter( getId( grid ),
                               "selection",
-                              getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+                              new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
     Fixture.readDataAndProcessAction( grid );
 
     GridItem[] selectedItems = grid.getSelection();