REOPENED - BATCH-618: DefaultJobParametersConverter does not parse parameters of type double

handle round doubles correctly
This commit is contained in:
robokaso
2009-02-15 22:15:58 +00:00
parent 9391d6f471
commit e40aab476a
2 changed files with 10 additions and 8 deletions

View File

@@ -108,13 +108,7 @@ public class DefaultJobParametersConverter implements JobParametersConverter {
propertiesBuilder.addLong(StringUtils.replace(key, LONG_TYPE, ""), result);
}
else if (key.endsWith(DOUBLE_TYPE)) {
Double result;
try {
result = (Double) parseNumber(value);
}
catch (ClassCastException ex) {
throw new IllegalArgumentException("Number format is invalid for double value: [" + value + "]");
}
Double result = parseNumber(value).doubleValue();
propertiesBuilder.addDouble(StringUtils.replace(key, DOUBLE_TYPE, ""), result);
}
else if (StringUtils.endsWithIgnoreCase(key, STRING_TYPE)) {
@@ -157,7 +151,7 @@ public class DefaultJobParametersConverter implements JobParametersConverter {
Map<String, JobParameter> parameters = params.getParameters();
Properties result = new Properties();
for (Entry<String, JobParameter> entry : parameters.entrySet()) {
String key = entry.getKey();
JobParameter jobParameter = entry.getValue();
Object value = jobParameter.getValue();

View File

@@ -137,6 +137,14 @@ public class DefaultJobParametersConverterTests extends TestCase {
assertEquals(1.38, props.getDouble("value"), Double.MIN_VALUE);
}
public void testGetParametersWithRoundDouble() throws Exception {
String[] args = new String[] { "value(double)=1.0" };
JobParameters props = factory.getJobParameters(StringUtils.splitArrayElementsIntoProperties(args, "="));
assertNotNull(props);
assertEquals((double) 1.0, props.getDouble("value"), Double.MIN_VALUE);
}
public void testGetProperties() throws Exception {
JobParameters parameters = new JobParametersBuilder().addDate("schedule.date", dateFormat.parse("01/23/2008"))