JUNEAU-128 Code improvements around DynamicSwaps
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
index ebefce0..64fe094 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
@@ -690,12 +690,11 @@
}
public static class F3 {
- private String f;
+ private Long f;
public F3(Long in) {
- this.f = "F3-" + in.toString();
+ this.f = in;
}
- @Override
- public String toString() {
+ public Long toLong() {
return f;
}
}
@@ -792,7 +791,7 @@
Object o = p.parse(s, "1", Object.class);
assertObjectEquals("1", o);
assertClass(Long.class, o);
- assertObjectEquals("'F3-1'", p.parse(s, "1", F3.class));
+ assertObjectEquals("1", p.parse(s, "1", F3.class));
}
@Test
@@ -811,8 +810,8 @@
assertObjectEquals("['1','2']", p.parse(s, "1,2", List.class, String.class));
assertObjectEquals("[1,2]", p.parse(s, "1,2", Object[].class));
assertObjectEquals("[1,2]", p.parse(s, "1,2", List.class, Object.class));
- assertObjectEquals("['F3-1','F3-2']", p.parse(s, "1,2", F3[].class));
- assertObjectEquals("['F3-1','F3-2']", p.parse(s, "1,2", List.class, F3.class));
+ assertObjectEquals("[1,2]", p.parse(s, "1,2", F3[].class));
+ assertObjectEquals("[1,2]", p.parse(s, "1,2", List.class, F3.class));
assertObjectEquals("'F4-[1,2]'", p.parse(s, "1,2", F4.class));
}
@@ -840,9 +839,9 @@
assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", Object[][].class));
assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", List.class, Object[].class));
assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", List.class, List.class, Object.class));
- assertObjectEquals("[['F3-1','F3-2'],['F3-3']]", p.parse(s, "1,2|3", F3[][].class));
- assertObjectEquals("[['F3-1','F3-2'],['F3-3']]", p.parse(s, "1,2|3", List.class, F3[].class));
- assertObjectEquals("[['F3-1','F3-2'],['F3-3']]", p.parse(s, "1,2|3", List.class, List.class, F3.class));
+ assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", F3[][].class));
+ assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", List.class, F3[].class));
+ assertObjectEquals("[[1,2],[3]]", p.parse(s, "1,2|3", List.class, List.class, F3.class));
assertObjectEquals("['F4-[1,2]','F4-[3]']", p.parse(s, "1,2|3", F4[].class));
assertObjectEquals("['F4-[1,2]','F4-[3]']", p.parse(s, "1,2|3", List.class, F4.class));
}
@@ -853,12 +852,11 @@
//-----------------------------------------------------------------------------------------------------------------
public static class G1 {
- private String f;
- public G1(Float in) {
- this.f = "G1-" + in.toString();
+ private float f;
+ public G1(float in) {
+ this.f = in;
}
- @Override
- public String toString() {
+ public float toFloat() {
return f;
}
}
@@ -875,12 +873,11 @@
}
public static class G3 {
- private String f;
- public G3(Double in) {
- this.f = "G3-" + in.toString();
+ private Double f;
+ public G3(double in) {
+ this.f = in;
}
- @Override
- public String toString() {
+ public double toDouble() {
return f;
}
}
@@ -907,7 +904,7 @@
Object o = p.parse(s, "1", Object.class);
assertObjectEquals("1.0",o);
assertClass(Float.class, o);
- assertObjectEquals("'G1-1.0'", p.parse(s, "1", G1.class));
+ assertObjectEquals("1.0", p.parse(s, "1", G1.class));
}
@Test
@@ -923,8 +920,8 @@
assertObjectEquals("['1','2']", p.parse(s, "1,2", List.class, String.class));
assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", Object[].class));
assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", List.class, Object.class));
- assertObjectEquals("['G1-1.0','G1-2.0']", p.parse(s, "1,2", G1[].class));
- assertObjectEquals("['G1-1.0','G1-2.0']", p.parse(s, "1,2", List.class, G1.class));
+ assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", G1[].class));
+ assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", List.class, G1.class));
assertObjectEquals("'G2-[1.0,2.0]'", p.parse(s, "1,2", G2.class));
}
@@ -947,9 +944,9 @@
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", Object[][].class));
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, Object[].class));
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, List.class, Object.class));
- assertObjectEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", p.parse(s, "1,2|3", G1[][].class));
- assertObjectEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", p.parse(s, "1,2|3", List.class, G1[].class));
- assertObjectEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", p.parse(s, "1,2|3", List.class, List.class, G1.class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", G1[][].class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, G1[].class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, List.class, G1.class));
assertObjectEquals("['G2-[1.0,2.0]','G2-[3.0]']", p.parse(s, "1,2|3", G2[].class));
assertObjectEquals("['G2-[1.0,2.0]','G2-[3.0]']", p.parse(s, "1,2|3", List.class, G2.class));
}
@@ -965,7 +962,7 @@
Object o = p.parse(s, "1", Object.class);
assertObjectEquals("1.0", o);
assertClass(Double.class, o);
- assertObjectEquals("'G3-1.0'", p.parse(s, "1", G3.class));
+ assertObjectEquals("1.0", p.parse(s, "1", G3.class));
}
@Test
@@ -981,8 +978,8 @@
assertObjectEquals("['1','2']", p.parse(s, "1,2", List.class, String.class));
assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", Object[].class));
assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", List.class, Object.class));
- assertObjectEquals("['G3-1.0','G3-2.0']", p.parse(s, "1,2", G3[].class));
- assertObjectEquals("['G3-1.0','G3-2.0']", p.parse(s, "1,2", List.class, G3.class));
+ assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", G3[].class));
+ assertObjectEquals("[1.0,2.0]", p.parse(s, "1,2", List.class, G3.class));
assertObjectEquals("'G4-[1.0,2.0]'", p.parse(s, "1,2", G4.class));
}
@@ -1005,9 +1002,9 @@
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", Object[][].class));
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, Object[].class));
assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, List.class, Object.class));
- assertObjectEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", p.parse(s, "1,2|3", G3[][].class));
- assertObjectEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", p.parse(s, "1,2|3", List.class, G3[].class));
- assertObjectEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", p.parse(s, "1,2|3", List.class, List.class, G3.class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", G3[][].class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, G3[].class));
+ assertObjectEquals("[[1.0,2.0],[3.0]]", p.parse(s, "1,2|3", List.class, List.class, G3.class));
assertObjectEquals("['G4-[1.0,2.0]','G4-[3.0]']", p.parse(s, "1,2|3", G4[].class));
assertObjectEquals("['G4-[1.0,2.0]','G4-[3.0]']", p.parse(s, "1,2|3", List.class, G4.class));
}
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index 5c181c1..ead6465 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -322,8 +322,6 @@
o = sType.newInstanceFromString(outer, decodeString(n.asResource().getURI()));
} else if (sType.canCreateNewInstanceFromString(outer)) {
o = sType.newInstanceFromString(outer, decodeString(getValue(n, outer)));
- } else if (sType.canCreateNewInstanceFromNumber(outer)) {
- o = sType.newInstanceFromNumber(this, outer, parseNumber(getValue(n, outer).toString(), sType.getNewInstanceFromNumberClass()));
} else if (n.isResource()) {
Resource r = n.asResource();
Map m = new ObjectMap(this);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 8b00b67..d8221f7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -299,6 +299,10 @@
ClassInfo nc = swap.getNormalClass(), fc = swap.getSwapClass();
if (nc.isParentOf(tc) && fc.isParentOf(value.getClass()))
return (T)swap.unswap(this, value, to);
+ if (value instanceof Number && fc.isNumeric()) {
+ value = convertToMemberType(null, value, fc.inner());
+ return (T)swap.unswap(this, value, to);
+ }
}
ClassMeta<?> from = getClassMetaForObject(value);
@@ -673,9 +677,6 @@
if (to.isBean())
return newBeanMap(to.getInnerClass()).load(value.toString()).getBean();
- if (to.canCreateNewInstanceFromNumber(outer) && value instanceof Number)
- return to.newInstanceFromNumber(this, outer, (Number)value);
-
if (to.canCreateNewInstanceFromString(outer))
return to.newInstanceFromString(outer, value.toString());
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index de10c27..746067f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -71,10 +71,7 @@
private final Method fromStringMethod; // The static valueOf(String) or fromString(String) or forString(String) method (if it has one).
private final ConstructorInfo
noArgConstructor, // The no-arg constructor for this class (if it has one).
- stringConstructor, // The X(String) constructor (if it has one).
- numberConstructor; // The X(Number) constructor (if it has one).
- private final Class<?>
- numberConstructorType;
+ stringConstructor; // The X(String) constructor (if it has one).
private final Method
exampleMethod; // The example() or @Example-annotated method (if it has one).
private final Field
@@ -164,8 +161,6 @@
this.namePropertyMethod = builder.namePropertyMethod;
this.noArgConstructor = builder.noArgConstructor;
this.stringConstructor = builder.stringConstructor;
- this.numberConstructor = builder.numberConstructor;
- this.numberConstructorType = builder.numberConstructorType;
this.primitiveDefault = builder.primitiveDefault;
this.publicMethods = builder.publicMethods;
this.beanFilter = beanFilter;
@@ -226,8 +221,6 @@
this.fromStringMethod = mainType.fromStringMethod;
this.noArgConstructor = mainType.noArgConstructor;
this.stringConstructor = mainType.stringConstructor;
- this.numberConstructor = mainType.numberConstructor;
- this.numberConstructorType = mainType.numberConstructorType;
this.namePropertyMethod = mainType.namePropertyMethod;
this.parentPropertyMethod = mainType.parentPropertyMethod;
this.isDelegate = mainType.isDelegate;
@@ -274,8 +267,6 @@
this.fromStringMethod = null;
this.noArgConstructor = null;
this.stringConstructor = null;
- this.numberConstructor = null;
- this.numberConstructorType = null;
this.namePropertyMethod = null;
this.parentPropertyMethod = null;
this.isDelegate = false;
@@ -321,10 +312,7 @@
namePropertyMethod = null;
ConstructorInfo
noArgConstructor = null,
- stringConstructor = null,
- numberConstructor = null;
- Class<?>
- numberConstructorType = null;
+ stringConstructor = null;
Object primitiveDefault = null;
Map<String,Method>
publicMethods = new LinkedHashMap<>();
@@ -519,10 +507,6 @@
ClassInfo arg = pt.get(isMemberClass ? 1 : 0);
if (arg.is(String.class))
stringConstructor = cs;
- else if (cc != NUMBER && (arg.isChildOf(Number.class) || (arg.isPrimitive() && (arg.isAny(int.class, short.class, long.class, float.class, double.class))))) {
- numberConstructor = cs;
- numberConstructorType = arg.getWrapperIfPrimitive();
- }
}
}
}
@@ -1598,33 +1582,6 @@
}
/**
- * Returns <jk>true</jk> if this class can call the {@link #newInstanceFromString(Object, String)} method.
- *
- * @param outer
- * The outer class object for non-static member classes.
- * Can be <jk>null</jk> for non-member or static classes.
- * @return <jk>true</jk> if this class has a no-arg constructor or invocation handler.
- */
- public boolean canCreateNewInstanceFromNumber(Object outer) {
- if (numberConstructor != null) {
- if (isMemberClass)
- return outer != null && numberConstructor.hasParamTypes(outer.getClass());
- return true;
- }
- return false;
- }
-
- /**
- * Returns the class type of the parameter of the numeric constructor.
- *
- * @return The class type of the numeric constructor, or <jk>null</jk> if no such constructor exists.
- */
- @SuppressWarnings("unchecked")
- public Class<? extends Number> getNewInstanceFromNumberClass() {
- return (Class<? extends Number>) numberConstructorType;
- }
-
- /**
* Returns the method or field annotated with {@link NameProperty @NameProperty}.
*
* @return
@@ -1738,34 +1695,6 @@
}
/**
- * Create a new instance of the main class of this declared type from a <c>Number</c> input.
- *
- * <p>
- * In order to use this method, the class must have one of the following methods:
- * <ul>
- * <li><code><jk>public</jk> T(Number in);</code>
- * </ul>
- *
- * @param session The current bean session.
- * @param outer
- * The outer class object for non-static member classes.
- * Can be <jk>null</jk> for non-member or static classes.
- * @param arg The input argument value.
- * @return A new instance of the object, or <jk>null</jk> if there is no numeric constructor on the object.
- * @throws ExecutableException Exception occurred on invoked constructor/method/field.
- */
- public T newInstanceFromNumber(BeanSession session, Object outer, Number arg) throws ExecutableException {
- ConstructorInfo c = numberConstructor;
- if (c != null) {
- Object arg2 = session.convertToType(arg, numberConstructor.getRawParamType(0));
- if (isMemberClass)
- return c.<T>invoke(outer, arg2);
- return c.<T>invoke(arg2);
- }
- throw new InstantiationError("No string constructor or valueOf(Number) method found for class '"+getInnerClass().getName()+"'");
- }
-
- /**
* Create a new instance of the main class of this declared type.
*
* @return A new instance of the object, or <jk>null</jk> if there is no no-arg constructor on the object.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index 79e19e9..b9d7b6a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -147,8 +147,6 @@
o = parseNumber(text, (Class<? extends Number>)eType.getInnerClass());
else if (sType.canCreateNewInstanceFromString(outer))
o = sType.newInstanceFromString(outer, text);
- else if (sType.canCreateNewInstanceFromNumber(outer))
- o = sType.newInstanceFromNumber(this, outer, parseNumber(text, sType.getNewInstanceFromNumberClass()));
else
isValid = false;
@@ -161,8 +159,6 @@
o = parseCharacter(text);
else if (sType.canCreateNewInstanceFromString(outer))
o = sType.newInstanceFromString(outer, text);
- else if (sType.canCreateNewInstanceFromNumber(outer))
- o = sType.newInstanceFromNumber(this, outer, parseNumber(text, sType.getNewInstanceFromNumberClass()));
else
isValid = false;
skipTag(r, tag == STRING ? xSTRING : xA);
@@ -173,8 +169,6 @@
o = parseNumber(text, Number.class);
else if (sType.isNumber())
o = parseNumber(text, (Class<? extends Number>)sType.getInnerClass());
- else if (sType.canCreateNewInstanceFromNumber(outer))
- o = sType.newInstanceFromNumber(this, outer, parseNumber(text, sType.getNewInstanceFromNumberClass()));
else
isValid = false;
skipTag(r, xNUMBER);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
index 586fdc4..571baae 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
@@ -192,8 +192,6 @@
o = parseIntoBeanMap2(r, m).getBean();
} else if (sType.canCreateNewInstanceFromString(outer) && (c == '\'' || c == '"')) {
o = sType.newInstanceFromString(outer, parseString(r));
- } else if (sType.canCreateNewInstanceFromNumber(outer) && isFirstNumberChar((char)c)) {
- o = sType.newInstanceFromNumber(this, outer, parseNumber(r, sType.getNewInstanceFromNumberClass()));
} else if (sType.isArray() || sType.isArgs()) {
if (c == '{') {
ObjectMap m = new ObjectMap(this);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
index 5421e5b..a33d250 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
@@ -142,8 +142,6 @@
}
} else if (sType.canCreateNewInstanceFromString(outer) && dt == STRING) {
o = sType.newInstanceFromString(outer, o == null ? "" : o.toString());
- } else if (sType.canCreateNewInstanceFromNumber(outer) && dt.isOneOf(INT, LONG, FLOAT, DOUBLE)) {
- o = sType.newInstanceFromNumber(this, outer, (Number)o);
} else if (sType.isCollection()) {
if (dt == MAP) {
ObjectMap m = new ObjectMap(this);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index ff5e946..57abab8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -774,10 +774,7 @@
if (sType.isChar())
o = parseCharacter(s);
else if (sType.isNumber())
- if (type.canCreateNewInstanceFromNumber(outer))
- o = type.newInstanceFromNumber(this, outer, parseNumber(s, type.getNewInstanceFromNumberClass()));
- else
- o = parseNumber(s, (Class<? extends Number>)sType.getInnerClass());
+ o = parseNumber(s, (Class<? extends Number>)sType.getInnerClass());
else if (sType.isBoolean())
o = Boolean.parseBoolean(s);
else if (! (sType.isCharSequence() || sType.isObject())) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
index 6ab9fee..7ac1db5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
@@ -1516,6 +1516,24 @@
return c != null && ! c.isInterface();
}
+ /**
+ * Returns <jk>true</jk> if this class is a numeric type.
+ *
+ * <p>
+ * The class either extends from {@link Number} or is a primitive numeric type (any primitive other than <jk>char</jk>).
+ *
+ * @return <jk>true</jk> if this class is a numeric type.
+ */
+ public boolean isNumeric() {
+ if (c == null)
+ return false;
+ if (Number.class.isAssignableFrom(c))
+ return true;
+ if (c.isPrimitive())
+ return c == short.class || c == int.class || c == long.class || c == double.class || c == float.class || c == byte.class;
+ return false;
+ }
+
//-----------------------------------------------------------------------------------------------------------------
// Primitive wrappers
//-----------------------------------------------------------------------------------------------------------------
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index ef41530..7cc5e81 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -275,8 +275,6 @@
String s = parseString(r, isUrlParamValue);
if (s != null)
o = sType.newInstanceFromString(outer, s);
- } else if (sType.canCreateNewInstanceFromNumber(outer)) {
- o = sType.newInstanceFromNumber(this, outer, parseNumber(r, sType.getNewInstanceFromNumberClass()));
} else if (sType.isArray() || sType.isArgs()) {
if (c == '(') {
ObjectMap m = new ObjectMap(this);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
index 52a7f00..7fca283 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
@@ -371,8 +371,6 @@
o = toArray(sType, l);
} else if (sType.canCreateNewInstanceFromString(outer)) {
o = sType.newInstanceFromString(outer, getElementText(r));
- } else if (sType.canCreateNewInstanceFromNumber(outer)) {
- o = sType.newInstanceFromNumber(this, outer, parseNumber(getElementText(r), sType.getNewInstanceFromNumberClass()));
} else {
throw new ParseException(this,
"Class ''{0}'' could not be instantiated. Reason: ''{1}'', property: ''{2}''",