Reputation: 21
In DataWeave 1.0 I have a requirement to set the "Address" value to a text truncated based on the property "address.length". For example if address.length is > 25 then customer.addressLine1 needs to be truncated to the first 25 chars, otherwise set Address with value in "customer.addressLine1" as it is.
property file --> address.length=25
(ns2#Address: customer.addressLine1[0.."${address.length}" as :number-1] when ((((sizeOf (customer.addressLine1)) > ("${address.length}" as :number)))) otherwise customer.addressLine1)
Root Exception stack trace:
com.mulesoft.weave.mule.exception.WeaveExecutionException: Exception while executing:
(ns2#Address: customer.addressLine1[0.."25" as :number-1] when ((((sizeOf (customer.addressLine1)) > ("25" as :number)))) otherwise customer.addressLine1
^
Type mismatch for 'Descendants Selector ..' operator
found :number
required :array.
Upvotes: 0
Views: 91
Reputation: 568
(ns2#Address: customer.addressLine1[0 to "${address.length}" as :number - 1] when (sizeOf (customer.addressLine1)) > ("${address.length}" as :number) otherwise customer.addressLine1)
Try with the code above. The range selector is incorrect. It should be [0 to "${address.length}" as :number - 1]
The error says that you are using the descendant selector. The range selector should be used.
Upvotes: 3