Support parsing Strings with numeric types, closes #54

This commit is contained in:
kimchy 2010-03-10 00:40:11 +02:00
parent baaac70da5
commit ae5bcb6d2e
5 changed files with 25 additions and 5 deletions

View File

@ -158,9 +158,13 @@ public class JsonBoostFieldMapper extends JsonNumberFieldMapper<Float> implement
return Float.NaN;
}
value = nullValue;
} else {
if (jsonContext.jp().getCurrentToken() == JsonToken.VALUE_STRING) {
value = Float.parseFloat(jsonContext.jp().getText());
} else {
value = jsonContext.jp().getFloatValue();
}
}
return value;
}

View File

@ -115,9 +115,13 @@ public class JsonDoubleFieldMapper extends JsonNumberFieldMapper<Double> {
return null;
}
value = nullValue;
} else {
if (jsonContext.jp().getCurrentToken() == JsonToken.VALUE_STRING) {
value = Double.parseDouble(jsonContext.jp().getText());
} else {
value = jsonContext.jp().getDoubleValue();
}
}
Field field = null;
if (stored()) {
field = new Field(names.indexName(), Numbers.doubleToBytes(value), store);

View File

@ -115,9 +115,13 @@ public class JsonFloatFieldMapper extends JsonNumberFieldMapper<Float> {
return null;
}
value = nullValue;
} else {
if (jsonContext.jp().getCurrentToken() == JsonToken.VALUE_STRING) {
value = Float.parseFloat(jsonContext.jp().getText());
} else {
value = jsonContext.jp().getFloatValue();
}
}
Field field = null;
if (stored()) {
field = new Field(names.indexName(), Numbers.floatToBytes(value), store);

View File

@ -114,9 +114,13 @@ public class JsonIntegerFieldMapper extends JsonNumberFieldMapper<Integer> {
return null;
}
value = nullValue;
} else {
if (jsonContext.jp().getCurrentToken() == JsonToken.VALUE_STRING) {
value = Integer.parseInt(jsonContext.jp().getText());
} else {
value = jsonContext.jp().getIntValue();
}
}
Field field = null;
if (stored()) {
field = new Field(names.indexName(), Numbers.intToBytes(value), store);

View File

@ -114,9 +114,13 @@ public class JsonLongFieldMapper extends JsonNumberFieldMapper<Long> {
return null;
}
value = nullValue;
} else {
if (jsonContext.jp().getCurrentToken() == JsonToken.VALUE_STRING) {
value = Long.parseLong(jsonContext.jp().getText());
} else {
value = jsonContext.jp().getLongValue();
}
}
Field field = null;
if (stored()) {
field = new Field(names.indexName(), Numbers.longToBytes(value), store);