public abstract class org.springframework.util.NumberUtils extends java.lang.Object
{
private static final java.math.BigInteger LONG_MIN;
private static final java.math.BigInteger LONG_MAX;
public static final java.util.Set STANDARD_NUMBER_TYPES;
public void <init>()
{
org.springframework.util.NumberUtils v;
v := @this: org.springframework.util.NumberUtils;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.lang.Number convertNumberToTargetClass(java.lang.Number, java.lang.Class) throws java.lang.IllegalArgumentException
{
java.lang.Float v;
java.lang.Integer v;
java.math.BigDecimal v;
byte v, v, v, v, v, v, v;
java.lang.Long v;
java.lang.Short v;
java.math.BigInteger v, v;
java.lang.Byte v;
boolean v, v;
float v;
java.lang.Double v;
long v, v, v, v, v;
short v;
int v;
java.lang.String v, v, v, v;
java.lang.Number v;
double v;
java.lang.IllegalArgumentException v;
java.lang.Class v, v;
v := @parameter: java.lang.Number;
v := @parameter: java.lang.Class;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Number must not be null");
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Target class must not be null");
v = virtualinvoke v.<java.lang.Class: boolean isInstance(java.lang.Object)>(v);
if v == 0 goto label;
return v;
label:
if class "Ljava/lang/Byte;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: long checkedLongValue(java.lang.Number,java.lang.Class)>(v, v);
v = v cmp -128L;
if v < 0 goto label;
v = v cmp 127L;
if v <= 0 goto label;
label:
staticinvoke <org.springframework.util.NumberUtils: void raiseOverflowException(java.lang.Number,java.lang.Class)>(v, v);
label:
v = virtualinvoke v.<java.lang.Number: byte byteValue()>();
v = staticinvoke <java.lang.Byte: java.lang.Byte valueOf(byte)>(v);
return v;
label:
if class "Ljava/lang/Short;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: long checkedLongValue(java.lang.Number,java.lang.Class)>(v, v);
v = v cmp -32768L;
if v < 0 goto label;
v = v cmp 32767L;
if v <= 0 goto label;
label:
staticinvoke <org.springframework.util.NumberUtils: void raiseOverflowException(java.lang.Number,java.lang.Class)>(v, v);
label:
v = virtualinvoke v.<java.lang.Number: short shortValue()>();
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
return v;
label:
if class "Ljava/lang/Integer;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: long checkedLongValue(java.lang.Number,java.lang.Class)>(v, v);
v = v cmp -2147483648L;
if v < 0 goto label;
v = v cmp 2147483647L;
if v <= 0 goto label;
label:
staticinvoke <org.springframework.util.NumberUtils: void raiseOverflowException(java.lang.Number,java.lang.Class)>(v, v);
label:
v = virtualinvoke v.<java.lang.Number: int intValue()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
return v;
label:
if class "Ljava/lang/Long;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: long checkedLongValue(java.lang.Number,java.lang.Class)>(v, v);
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
return v;
label:
if class "Ljava/math/BigInteger;" != v goto label;
v = v instanceof java.math.BigDecimal;
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigDecimal: java.math.BigInteger toBigInteger()>();
return v;
label:
v = virtualinvoke v.<java.lang.Number: long longValue()>();
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
return v;
label:
if class "Ljava/lang/Float;" != v goto label;
v = virtualinvoke v.<java.lang.Number: float floatValue()>();
v = staticinvoke <java.lang.Float: java.lang.Float valueOf(float)>(v);
return v;
label:
if class "Ljava/lang/Double;" != v goto label;
v = virtualinvoke v.<java.lang.Number: double doubleValue()>();
v = staticinvoke <java.lang.Double: java.lang.Double valueOf(double)>(v);
return v;
label:
if class "Ljava/math/BigDecimal;" != v goto label;
v = new java.math.BigDecimal;
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
specialinvoke v.<java.math.BigDecimal: void <init>(java.lang.String)>(v);
return v;
label:
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Number,java.lang.String,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Could not convert number [\u] of type [\u] to unsupported target class [\u]");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
}
private static long checkedLongValue(java.lang.Number, java.lang.Class)
{
long v;
int v, v;
java.lang.Class v;
java.math.BigInteger v, v;
java.lang.Number v;
boolean v, v;
v := @parameter: java.lang.Number;
v := @parameter: java.lang.Class;
v = v instanceof java.math.BigInteger;
if v != 0 goto label;
v = v instanceof java.math.BigDecimal;
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigDecimal: java.math.BigInteger toBigInteger()>();
label:
if v == null goto label;
v = <org.springframework.util.NumberUtils: java.math.BigInteger LONG_MIN>;
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v < 0 goto label;
v = <org.springframework.util.NumberUtils: java.math.BigInteger LONG_MAX>;
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v <= 0 goto label;
label:
staticinvoke <org.springframework.util.NumberUtils: void raiseOverflowException(java.lang.Number,java.lang.Class)>(v, v);
label:
v = virtualinvoke v.<java.lang.Number: long longValue()>();
return v;
}
private static void raiseOverflowException(java.lang.Number, java.lang.Class)
{
java.lang.Class v, v;
java.lang.String v, v, v;
java.lang.IllegalArgumentException v;
java.lang.Number v;
v := @parameter: java.lang.Number;
v := @parameter: java.lang.Class;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Number,java.lang.String,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Could not convert number [\u] of type [\u] to target class [\u]: overflow");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
}
public static java.lang.Number parseNumber(java.lang.String, java.lang.Class)
{
java.lang.Float v;
java.lang.Double v;
java.lang.Integer v;
java.math.BigDecimal v;
java.lang.Long v;
java.lang.Short v;
java.math.BigInteger v;
java.lang.String v, v, v, v;
java.lang.Byte v;
boolean v, v, v, v, v;
java.lang.IllegalArgumentException v;
java.lang.Class v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Text must not be null");
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Target class must not be null");
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String trimAllWhitespace(java.lang.String)>(v);
if class "Ljava/lang/Byte;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: boolean isHexNumber(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.lang.Byte: java.lang.Byte decode(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <java.lang.Byte: java.lang.Byte valueOf(java.lang.String)>(v);
label:
return v;
label:
if class "Ljava/lang/Short;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: boolean isHexNumber(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.lang.Short: java.lang.Short decode(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(java.lang.String)>(v);
label:
return v;
label:
if class "Ljava/lang/Integer;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: boolean isHexNumber(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.lang.Integer: java.lang.Integer decode(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(java.lang.String)>(v);
label:
return v;
label:
if class "Ljava/lang/Long;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: boolean isHexNumber(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.lang.Long: java.lang.Long decode(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(java.lang.String)>(v);
label:
return v;
label:
if class "Ljava/math/BigInteger;" != v goto label;
v = staticinvoke <org.springframework.util.NumberUtils: boolean isHexNumber(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.springframework.util.NumberUtils: java.math.BigInteger decodeBigInteger(java.lang.String)>(v);
goto label;
label:
v = new java.math.BigInteger;
specialinvoke v.<java.math.BigInteger: void <init>(java.lang.String)>(v);
label:
return v;
label:
if class "Ljava/lang/Float;" != v goto label;
v = staticinvoke <java.lang.Float: java.lang.Float valueOf(java.lang.String)>(v);
return v;
label:
if class "Ljava/lang/Double;" != v goto label;
v = staticinvoke <java.lang.Double: java.lang.Double valueOf(java.lang.String)>(v);
return v;
label:
if class "Ljava/math/BigDecimal;" == v goto label;
if class "Ljava/lang/Number;" != v goto label;
label:
v = new java.math.BigDecimal;
specialinvoke v.<java.math.BigDecimal: void <init>(java.lang.String)>(v);
return v;
label:
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Cannot convert String [\u] to target class [\u]");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
}
public static java.lang.Number parseNumber(java.lang.String, java.lang.Class, java.text.NumberFormat)
{
java.lang.Throwable v;
java.lang.IllegalArgumentException v;
java.text.NumberFormat v;
java.lang.Class v;
java.lang.String v, v, v, v;
java.lang.Number v, v, v;
java.text.ParseException v;
boolean v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v := @parameter: java.text.NumberFormat;
if v == null goto label;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Text must not be null");
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Target class must not be null");
v = 0;
v = v instanceof java.text.DecimalFormat;
if v == 0 goto label;
if class "Ljava/math/BigDecimal;" != v goto label;
v = virtualinvoke v.<java.text.DecimalFormat: boolean isParseBigDecimal()>();
if v != 0 goto label;
virtualinvoke v.<java.text.DecimalFormat: void setParseBigDecimal(boolean)>(1);
v = 1;
label:
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String trimAllWhitespace(java.lang.String)>(v);
v = virtualinvoke v.<java.text.NumberFormat: java.lang.Number parse(java.lang.String)>(v);
v = staticinvoke <org.springframework.util.NumberUtils: java.lang.Number convertNumberToTargetClass(java.lang.Number,java.lang.Class)>(v, v);
label:
if v == 0 goto label;
virtualinvoke v.<java.text.DecimalFormat: void setParseBigDecimal(boolean)>(0);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.text.ParseException: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Could not parse number: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v := @caughtexception;
if v == 0 goto label;
virtualinvoke v.<java.text.DecimalFormat: void setParseBigDecimal(boolean)>(0);
label:
throw v;
label:
v = staticinvoke <org.springframework.util.NumberUtils: java.lang.Number parseNumber(java.lang.String,java.lang.Class)>(v, v);
return v;
catch java.text.ParseException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static boolean isHexNumber(java.lang.String)
{
byte v;
java.lang.String v;
boolean v, v, v, v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("-");
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("0x", v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("0X", v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("#", v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static java.math.BigInteger decodeBigInteger(java.lang.String)
{
byte v;
int v, v, v;
java.math.BigInteger v, v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
v := @parameter: java.lang.String;
v = 10;
v = 0;
v = 0;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("-");
if v == 0 goto label;
v = 1;
v = 1;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("0x", v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("0X", v);
if v == 0 goto label;
label:
v = v + 2;
v = 16;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("#", v);
if v == 0 goto label;
v = v + 1;
v = 16;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>("0", v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = 1 + v;
if v <= v goto label;
v = v + 1;
v = 8;
label:
v = new java.math.BigInteger;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
specialinvoke v.<java.math.BigInteger: void <init>(java.lang.String,int)>(v, v);
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger negate()>();
goto label;
label:
v = v;
label:
return v;
}
static void <clinit>()
{
java.util.HashSet v;
java.util.Set v;
java.math.BigInteger v, v;
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(-9223372036854775808L);
<org.springframework.util.NumberUtils: java.math.BigInteger LONG_MIN> = v;
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(9223372036854775807L);
<org.springframework.util.NumberUtils: java.math.BigInteger LONG_MAX> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>(int)>(8);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Byte;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Short;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Integer;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Long;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/math/BigInteger;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Float;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/lang/Double;");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(class "Ljava/math/BigDecimal;");
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
<org.springframework.util.NumberUtils: java.util.Set STANDARD_NUMBER_TYPES> = v;
return;
}
}