@@ -66,64 +66,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
6666 foundClass = " List[${ e.foundClass} ]"
6767 }
6868 } else if (par. type == " string" ) {
69- // cast to string if need be
69+ // cast to string if need be. only cast if the value is a GString
7070 if (value instanceof GString ) {
71- value = value. toString()
71+ value = value as String
7272 }
7373 expectedClass = value instanceof String ? null : " String"
7474 } else if (par. type == " integer" ) {
7575 // cast to integer if need be
76- if (value instanceof String ) {
76+ if (value ! instanceof Integer ) {
7777 try {
78- value = value. toInteger()
78+ value = value as Integer
7979 } catch (NumberFormatException e) {
80- // do nothing
80+ expectedClass = " Integer "
8181 }
8282 }
83- if (value instanceof java.math.BigInteger ) {
84- value = value. intValue()
85- }
86- expectedClass = value instanceof Integer ? null : " Integer"
8783 } else if (par. type == " long" ) {
8884 // cast to long if need be
89- if (value instanceof String ) {
85+ if (value ! instanceof Long ) {
9086 try {
91- value = value. toLong()
87+ value = value as Long
9288 } catch (NumberFormatException e) {
93- // do nothing
89+ expectedClass = " Long "
9490 }
9591 }
96- if (value instanceof Integer ) {
97- value = value. toLong()
98- }
99- expectedClass = value instanceof Long ? null : " Long"
10092 } else if (par. type == " double" ) {
10193 // cast to double if need be
102- if (value instanceof String ) {
94+ if (value ! instanceof Double ) {
10395 try {
104- value = value. toDouble()
96+ value = value as Double
10597 } catch (NumberFormatException e) {
106- // do nothing
98+ expectedClass = " Double "
10799 }
108100 }
109- if (value instanceof java.math.BigDecimal || value instanceof java.math.BigInteger ) {
110- value = value. doubleValue()
111- }
112- if (value instanceof Float || value instanceof Integer || value instanceof Long ) {
113- value = value. toDouble()
101+ } else if (par. type == " float" ) {
102+ // cast to float if need be
103+ if (value ! instanceof Float ) {
104+ try {
105+ value = value as Float
106+ } catch (NumberFormatException e) {
107+ expectedClass = " Float"
108+ }
114109 }
115- expectedClass = value instanceof Double ? null : " Double"
116110 } else if (par. type == " boolean" | par. type == " boolean_true" | par. type == " boolean_false" ) {
117111 // cast to boolean if need be
118- if (value instanceof String ) {
119- def valueLower = value. toLowerCase()
120- if (valueLower == " true" ) {
121- value = true
122- } else if (valueLower == " false" ) {
123- value = false
112+ if (value ! instanceof Boolean ) {
113+ try {
114+ value = value as Boolean
115+ } catch (Exception e) {
116+ expectedClass = " Boolean"
124117 }
125118 }
126- expectedClass = value instanceof Boolean ? null : " Boolean"
127119 } else if (par. type == " file" && (par. direction == " input" || stage == " output" )) {
128120 // cast to path if need be
129121 if (value instanceof String ) {
@@ -135,10 +127,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
135127 expectedClass = value instanceof Path ? null : " Path"
136128 } else if (par. type == " file" && stage == " input" && par. direction == " output" ) {
137129 // cast to string if need be
138- if (value instanceof GString ) {
139- value = value. toString()
130+ if (value ! instanceof String ) {
131+ try {
132+ value = value as String
133+ } catch (Exception e) {
134+ expectedClass = " String"
135+ }
140136 }
141- expectedClass = value instanceof String ? null : " String"
142137 } else {
143138 // didn't find a match for par.type
144139 expectedClass = par. type
0 commit comments