- Revision
- 896
- Author
- mauro
- Date
- 2008-08-26 03:45:22 -0500 (Tue, 26 Aug 2008)
Log Message
Renamed argument conversion facade.
Modified Paths
Added Paths
Removed Paths
Diff
Copied: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConversion.java (from rev 895, trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConverters.java) (0 => 896)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConversion.java (rev 0) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConversion.java 2008-08-26 08:45:22 UTC (rev 896) @@ -0,0 +1,137 @@ +package org.jbehave.scenario.steps; + +import static java.util.Arrays.asList; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * Responsible for converting argument values to Java objects. + * + * @author Elizabeth Keogh + * @author Mauro Talevi + */ +public class ArgumentConversion { + + private static final String NL = System.getProperty("line.separator"); + private static final String COMMA = ","; + private final StepMonitor monitor; + private final List<? extends ArgumentConverter> converters; + + public ArgumentConversion(StepMonitor monitor) { + this.monitor = monitor; + this.converters = asList(new NumberConverter(), new NumberListConverter(), new StringListConverter()); + } + + public Object convert(String value, Type type) { + // check if any converters accepts type + for (ArgumentConverter 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); + } + + private Object replaceNewlinesWithSystemNewlines(String value) { + return value.replaceAll("(\n)|(\r\n)", NL); + } + + private static interface ArgumentConverter { + + boolean accept(Type type); + + Object convertValue(String value, Type type); + + } + + @SuppressWarnings("serial") + private static class InvalidArgumentException extends RuntimeException { + + public InvalidArgumentException(String message, Throwable cause) { + super(message, cause); + } + + } + + private static class NumberConverter implements ArgumentConverter { + + public boolean accept(Type type) { + if (type instanceof Class) { + return (type == Integer.class || type == int.class || type == Long.class || type == long.class + || type == Double.class || type == double.class || type == Float.class || type == float.class); + } + 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; + } + + } + + private static class NumberListConverter implements ArgumentConverter { + + 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; + } + + public Object convertValue(String value, Type type) { + List<String> values = asList(value.split(COMMA)); + NumberFormat numberFormat = NumberFormat.getInstance(); + List<Number> numbers = new ArrayList<Number>(); + for (String numberValue : values) { + try { + numbers.add(numberFormat.parse(numberValue)); + } catch (ParseException e) { + throw new InvalidArgumentException(numberValue, e); + } + } + return numbers; + } + + } + + private static class StringListConverter implements ArgumentConverter { + + 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 asList(value.split(COMMA)); + } + + } + +}
Property changes: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConversion.java
Name: svn:mergeinfo
+
Deleted: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConverters.java (895 => 896)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConverters.java 2008-08-26 08:37:23 UTC (rev 895) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/steps/ArgumentConverters.java 2008-08-26 08:45:22 UTC (rev 896) @@ -1,137 +0,0 @@ -package org.jbehave.scenario.steps; - -import static java.util.Arrays.asList; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.text.NumberFormat; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * Responsible for converting argument values to Java objects. - * - * @author Elizabeth Keogh - * @author Mauro Talevi - */ -public class ArgumentConverters { - - private static final String NL = System.getProperty("line.separator"); - private static final String COMMA = ","; - private final StepMonitor monitor; - private final List<? extends ArgumentConverter> converters; - - public ArgumentConverters(StepMonitor monitor) { - this.monitor = monitor; - this.converters = asList(new NumberConverter(), new NumberListConverter(), new StringListConverter()); - } - - public Object convert(String value, Type type) { - // check if any converters accepts type - for (ArgumentConverter 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); - } - - private Object replaceNewlinesWithSystemNewlines(String value) { - return value.replaceAll("(\n)|(\r\n)", NL); - } - - private static interface ArgumentConverter { - - boolean accept(Type type); - - Object convertValue(String value, Type type); - - } - - @SuppressWarnings("serial") - private static class InvalidArgumentException extends RuntimeException { - - public InvalidArgumentException(String message, Throwable cause) { - super(message, cause); - } - - } - - private static class NumberConverter implements ArgumentConverter { - - public boolean accept(Type type) { - if (type instanceof Class) { - return (type == Integer.class || type == int.class || type == Long.class || type == long.class - || type == Double.class || type == double.class || type == Float.class || type == float.class); - } - 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; - } - - } - - private static class NumberListConverter implements ArgumentConverter { - - 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; - } - - public Object convertValue(String value, Type type) { - List<String> values = asList(value.split(COMMA)); - NumberFormat numberFormat = NumberFormat.getInstance(); - List<Number> numbers = new ArrayList<Number>(); - for (String numberValue : values) { - try { - numbers.add(numberFormat.parse(numberValue)); - } catch (ParseException e) { - throw new InvalidArgumentException(numberValue, e); - } - } - return numbers; - } - - } - - private static class StringListConverter implements ArgumentConverter { - - 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 asList(value.split(COMMA)); - } - - } - -}
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java (895 => 896)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java 2008-08-26 08:37:23 UTC (rev 895) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java 2008-08-26 08:45:22 UTC (rev 896) @@ -22,7 +22,7 @@ private final StepMonitor monitor; private final String[] startingWords; private final Pattern pattern; - private final ArgumentConverters converters; + private final ArgumentConversion converters; public CandidateStep(String matchThis, Method method, Steps steps, StepPatternBuilder patterBuilder, StepMonitor monitor, String... startingWords) { @@ -31,7 +31,7 @@ this.monitor = monitor; this.startingWords = startingWords; this.pattern = patterBuilder.buildPattern(matchThis); - this.converters = new ArgumentConverters(monitor); + this.converters = new ArgumentConversion(monitor); } public boolean matches(String step) {
To unsubscribe from this list please visit:
