jpass abba
jpass abba

Reputation: 21

dynamic range based on property giving error

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.

Code:

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) 

Exception:

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

Answers (1)

Christian Chibana
Christian Chibana

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

Related Questions