I’m looking for a way to assign an exception message to spring property at runtime in mule flow (Mule 3.3.0)
This is how my code-snippet looks like:
<catch-exception-strategy>
<logger message="----->Exception is #[exception.causeException]"
level="INFO" />
<custom-transformer
class="com.company.transformer.VelocityMessageTransformer">
<spring:property name="velocityEngine" ref="velocityEngine" />
<spring:property name="templateName" value="soap11Fault.vm" />
<spring:property name="beanClass">
<spring:bean parent="abstractSoap11ClientFault">
<spring:property name="faultString" value="Invalid Request" />
<spring:property name="detail" value="${exception.causeException}" />
</spring:bean>
</spring:property>
</custom-transformer>
</catch-exception-strategy>
I want to assign exception cause to detail property here:
<spring:property name="detail" value="${exception.causeException}" />
but spring is looking for this property in properties file. I tried doing this also
<spring:property name="detail" value="${#[exception.causeException]}" /> but doesn't work.
Is there a way to pass Mule expression at run-time to Spring property?
Properties are set during the application initialization: the value you want to pass is evaluated at runtime, so that can’t work.
What you need to do is make
com.company.transformer.VelocityMessageTransformerextendorg.mule.transformer.AbstractMessageTransformer. You will then have to overridetransformMessage(MuleMessage message, String outputEncoding), which will give you access to the current message and its associated exception payload. The exception payload is what you get with the#[exception]expression.