File tree Expand file tree Collapse file tree 2 files changed +26
-4
lines changed
main/java/org/scijava/convert
test/java/org/scijava/convert Expand file tree Collapse file tree 2 files changed +26
-4
lines changed Original file line number Diff line number Diff line change @@ -93,16 +93,22 @@ private String[] preprocessStrings(final Object src) {
9393 }
9494
9595 private String preprocessString (final Object o ) {
96- String s = o .toString ();
97- s = s .replace ("\\ " , "\\ \\ " );
98- s = s .replace ("\" " , "\\ \" " );
96+ String s ;
97+ if (o == null ) {
98+ return null ;
99+ } else {
100+ s = o .toString ();
101+ s = s .replace ("\\ " , "\\ \\ " );
102+ s = s .replace ("\" " , "\\ \" " );
103+ }
99104 return "\" " + s + "\" " ;
100105 }
101106
102107 private String [] preprocessCharacters (Object src ) {
103108 String [] processed = new String [Array .getLength (src )];
104109 for (int i = 0 ; i < processed .length ; i ++) {
105- processed [i ] = Array .get (src , i ).toString ();
110+ Object value = Array .get (src , i );
111+ processed [i ] = value == null ? null : value .toString ();
106112 }
107113 return preprocessStrings (processed );
108114 }
Original file line number Diff line number Diff line change @@ -156,4 +156,20 @@ public void testCyclicConversion() {
156156 Assert .assertArrayEquals (expected , actual );
157157 }
158158
159+ @ Test
160+ public void testNullConversion () {
161+ String [] s1 = {null };
162+ String [] s2 = {"null" };
163+ String [] expected = new String [] {null };
164+ // Do the first conversion
165+ ArrayToStringConverter c1 = new ArrayToStringConverter ();
166+ context .inject (c1 );
167+ String converted = c1 .convert (expected , String .class );
168+ // Try to convert back
169+ StringToArrayConverter c2 = new StringToArrayConverter ();
170+ context .inject (c2 );
171+ String [] actual = c2 .convert (converted , String [].class );
172+ // NB: we cannot recreate the original {null} state
173+ Assert .assertNull (actual );
174+ }
159175}
You can’t perform that action at this time.
0 commit comments