Title: [969] trunk/jbehave-core/src/java/org/jbehave/scenario/steps: JBEHAVE-137: Merged -c 968 from branches/jbehave-2.0.x
Revision
969
Author
mauro
Date
2008-10-07 02:00:25 -0500 (Tue, 07 Oct 2008)

Log Message

JBEHAVE-137: Merged -c 968 from branches/jbehave-2.0.x

Modified Paths

Diff

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/ParameterConvertersBehaviour.java (968 => 969)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/ParameterConvertersBehaviour.java	2008-10-07 06:54:44 UTC (rev 968)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/ParameterConvertersBehaviour.java	2008-10-07 07:00:25 UTC (rev 969)
@@ -5,6 +5,7 @@
 
 import java.beans.IntrospectionException;
 import java.lang.reflect.Type;
+import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.text.ParseException;
 import java.util.List;
@@ -42,14 +43,14 @@
 	@Test
 	public void shouldConvertCommaSeparatedValuesToListsOfNumbersWithCustomFormat()
 			throws ParseException, IntrospectionException {
-		NumberFormat numberFormat = NumberFormat.getNumberInstance();
+		NumberFormat numberFormat = new DecimalFormat("#,####");
 		ParameterConverters converters = new ParameterConverters(
-				new NumberListConverter(numberFormat));
+				new NumberListConverter(numberFormat, " "));
 		Type type = SomeSteps.methodFor("aMethodWithListOfNumbers")
 				.getGenericParameterTypes()[0];
 		List<Number> list = (List<Number>) converters.convert(
-				"3, 0.5, 6.1f, 8.00", type);
-		ensureThat(list.get(0), equalTo(numberFormat.parse("3")));
+				"3,000 0.5 6.1f 8.00", type);
+		ensureThat(list.get(0), equalTo(numberFormat.parse("3,000")));
 		ensureThat(list.get(1), equalTo(numberFormat.parse("0.5")));
 		ensureThat(list.get(2), equalTo(numberFormat.parse("6.1f")));
 		ensureThat(list.get(3), equalTo(numberFormat.parse("8.00")));

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ParameterConverters.java (968 => 969)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ParameterConverters.java	2008-10-07 06:54:44 UTC (rev 968)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ParameterConverters.java	2008-10-07 07:00:25 UTC (rev 969)
@@ -17,152 +17,170 @@
  */
 public class ParameterConverters {
 
-    private static final String NL = System.getProperty("line.separator");
-    private static final String COMMA = ",";
-    private static final List<ParameterConverter> DEFAULT_CONVERTERS = asList(new NumberConverter(), new NumberListConverter(), new StringListConverter());
-    private final StepMonitor monitor;
-    private final List<ParameterConverter> converters = new ArrayList<ParameterConverter>();
+	private static final String NL = System.getProperty("line.separator");
+	private static final String COMMA = ",";
+	private static final List<ParameterConverter> DEFAULT_CONVERTERS = asList(
+			new NumberConverter(), new NumberListConverter(),
+			new StringListConverter());
+	private final StepMonitor monitor;
+	private final List<ParameterConverter> converters = new ArrayList<ParameterConverter>();
 
-    public ParameterConverters() {
-        this(new SilentStepMonitor());
-    }
+	public ParameterConverters() {
+		this(new SilentStepMonitor());
+	}
 
-    public ParameterConverters(ParameterConverter... customConverters) {
-        this(new SilentStepMonitor(), customConverters);
-    }
-    
-    public ParameterConverters(StepMonitor monitor, ParameterConverter... customConverters) {
-        this.monitor = monitor;
-        this.converters.addAll(asList(customConverters));
-        this.converters.addAll(DEFAULT_CONVERTERS);
-    }
+	public ParameterConverters(ParameterConverter... customConverters) {
+		this(new SilentStepMonitor(), customConverters);
+	}
 
-    public Object convert(String value, Type type) {
-        // check if any converters accepts type
-        for (ParameterConverter converter : converters) {
-            if (converter.accept(type)) {
-                Object converted = converter.convertValue(value, type);
-                monitor.convertedValueOfType(value, type, converted, converter.getClass());
-                return converted;
-            }
-        }
-        // default to String
-        return replaceNewlinesWithSystemNewlines(value);
-    }
+	public ParameterConverters(StepMonitor monitor,
+			ParameterConverter... customConverters) {
+		this.monitor = monitor;
+		this.converters.addAll(asList(customConverters));
+		this.converters.addAll(DEFAULT_CONVERTERS);
+	}
 
-    private Object replaceNewlinesWithSystemNewlines(String value) {
-        return value.replaceAll("(\n)|(\r\n)", NL);
-    }
+	public Object convert(String value, Type type) {
+		// check if any converters accepts type
+		for (ParameterConverter converter : converters) {
+			if (converter.accept(type)) {
+				Object converted = converter.convertValue(value, type);
+				monitor.convertedValueOfType(value, type, converted, converter
+						.getClass());
+				return converted;
+			}
+		}
+		// default to String
+		return replaceNewlinesWithSystemNewlines(value);
+	}
 
-    public static interface ParameterConverter {
+	private Object replaceNewlinesWithSystemNewlines(String value) {
+		return value.replaceAll("(\n)|(\r\n)", NL);
+	}
 
-        boolean accept(Type type);
+	public static interface ParameterConverter {
 
-        Object convertValue(String value, Type type);
+		boolean accept(Type type);
 
-    }
+		Object convertValue(String value, Type type);
 
-    @SuppressWarnings("serial")
-    public static class InvalidParameterException extends RuntimeException {
+	}
 
-        public InvalidParameterException(String message, Throwable cause) {
-            super(message, cause);
-        }
+	@SuppressWarnings("serial")
+	public static class InvalidParameterException extends RuntimeException {
 
-    }
+		public InvalidParameterException(String message, Throwable cause) {
+			super(message, cause);
+		}
 
-    public static class NumberConverter implements ParameterConverter {
-    	@SuppressWarnings("unchecked")
-        private static List<Class> acceptedClasses = asList(new Class[] {
-    		Integer.class, int.class, Long.class, long.class,
-    		Double.class, double.class, Float.class, float.class
-    	});
-    	
-        public boolean accept(Type type) {
-            if (type instanceof Class) {
-                return acceptedClasses.contains(type);
-            }
-            return false;
-        }
+	}
 
-        public Object convertValue(String value, Type type) {
-            if (type == Integer.class || type == int.class) {
-                return Integer.valueOf(value);
-            } else if (type == Long.class || type == long.class) {
-                return Long.valueOf(value);
-            } else if (type == Double.class || type == double.class) {
-                return Double.valueOf(value);
-            } else if (type == Float.class || type == float.class) {
-                return Float.valueOf(value);
-            }
-            return value;
-        }
+	public static class NumberConverter implements ParameterConverter {
+		@SuppressWarnings("unchecked")
+		private static List<Class> acceptedClasses = asList(new Class[] {
+				Integer.class, int.class, Long.class, long.class, Double.class,
+				double.class, Float.class, float.class });
 
-    }
+		public boolean accept(Type type) {
+			if (type instanceof Class) {
+				return acceptedClasses.contains(type);
+			}
+			return false;
+		}
 
-    public static class NumberListConverter implements ParameterConverter {
+		public Object convertValue(String value, Type type) {
+			if (type == Integer.class || type == int.class) {
+				return Integer.valueOf(value);
+			} else if (type == Long.class || type == long.class) {
+				return Long.valueOf(value);
+			} else if (type == Double.class || type == double.class) {
+				return Double.valueOf(value);
+			} else if (type == Float.class || type == float.class) {
+				return Float.valueOf(value);
+			}
+			return value;
+		}
 
-    	private NumberFormat numberFormat;    	
-    	
-        public NumberListConverter() {
-			this(NumberFormat.getInstance());
+	}
+
+	public static class NumberListConverter implements ParameterConverter {
+
+		private NumberFormat numberFormat;
+		private String valueSeparator;
+
+		public NumberListConverter() {
+			this(NumberFormat.getInstance(), COMMA);
 		}
 
-		public NumberListConverter(NumberFormat numberFormat) {
+		public NumberListConverter(NumberFormat numberFormat,
+				String valueSeparator) {
 			this.numberFormat = numberFormat;
+			this.valueSeparator = valueSeparator;
 		}
 
 		public boolean accept(Type type) {
-            if (type instanceof ParameterizedType) {
-                ParameterizedType parameterizedType = (ParameterizedType) type;
-                Type rawType = parameterizedType.getRawType();
-                Type argumentType = parameterizedType.getActualTypeArguments()[0];
-                return List.class.isAssignableFrom((Class<?>) rawType)
-                        && Number.class.isAssignableFrom((Class<?>) argumentType);
-            }
-            return false;
-        }
+			if (type instanceof ParameterizedType) {
+				ParameterizedType parameterizedType = (ParameterizedType) type;
+				Type rawType = parameterizedType.getRawType();
+				Type argumentType = parameterizedType.getActualTypeArguments()[0];
+				return List.class.isAssignableFrom((Class<?>) rawType)
+						&& Number.class
+								.isAssignableFrom((Class<?>) argumentType);
+			}
+			return false;
+		}
 
-        public Object convertValue(String value, Type type) {
-            List<String> values = trim(asList(value.split(COMMA)));
-            List<Number> numbers = new ArrayList<Number>();
-            for (String numberValue : values) {
-                try {
-                    numbers.add(numberFormat.parse(numberValue));
-                } catch (ParseException e) {
-                    throw new InvalidParameterException(numberValue, e);
-                }
-            }
-            return numbers;
-        }
+		public Object convertValue(String value, Type type) {
+			List<String> values = trim(asList(value.split(valueSeparator)));
+			List<Number> numbers = new ArrayList<Number>();
+			for (String numberValue : values) {
+				try {
+					numbers.add(numberFormat.parse(numberValue));
+				} catch (ParseException e) {
+					throw new InvalidParameterException(numberValue, e);
+				}
+			}
+			return numbers;
+		}
 
-    }
+	}
 
-    public static class StringListConverter implements ParameterConverter {
+	public static class StringListConverter implements ParameterConverter {
 
-        public boolean accept(Type type) {
-            if (type instanceof ParameterizedType) {
-                ParameterizedType parameterizedType = (ParameterizedType) type;
-                Type rawType = parameterizedType.getRawType();
-                Type argumentType = parameterizedType.getActualTypeArguments()[0];
-                return List.class.isAssignableFrom((Class<?>) rawType)
-                        && String.class.isAssignableFrom((Class<?>) argumentType);
-            }
-            return false;
-        }
+		private String valueSeparator;
 
-        public Object convertValue(String value, Type type) {
-            return trim(asList(value.split(COMMA)));
-        }
+		public StringListConverter() {
+			this(COMMA);
+		}
 
-    }
+		public StringListConverter(String valueSeparator) {
+			this.valueSeparator = valueSeparator;
+		}
 
-    public static List<String> trim(List<String> values) {
-        List<String> trimmed = new ArrayList<String>();
-        for ( String value : values ){
-            trimmed.add(value.trim());
-        }
-        return trimmed;
-    }
+		public boolean accept(Type type) {
+			if (type instanceof ParameterizedType) {
+				ParameterizedType parameterizedType = (ParameterizedType) type;
+				Type rawType = parameterizedType.getRawType();
+				Type argumentType = parameterizedType.getActualTypeArguments()[0];
+				return List.class.isAssignableFrom((Class<?>) rawType)
+						&& String.class
+								.isAssignableFrom((Class<?>) argumentType);
+			}
+			return false;
+		}
 
+		public Object convertValue(String value, Type type) {
+			return trim(asList(value.split(valueSeparator)));
+		}
+
+	}
+
+	public static List<String> trim(List<String> values) {
+		List<String> trimmed = new ArrayList<String>();
+		for (String value : values) {
+			trimmed.add(value.trim());
+		}
+		return trimmed;
+	}
+
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to