[ https://issues.apache.org/activemq/browse/SM-486?page=all ]
Philip Dodds resolved SM-486.
-----------------------------
Fix Version/s: 3.0-M3
Resolution: Fixed
Applied and thankyou for the contribution
> MessagePropertySetter
> ---------------------
>
> Key: SM-486
> URL: https://issues.apache.org/activemq/browse/SM-486
> Project: ServiceMix
> Issue Type: New Feature
> Components: servicemix-components
> Affects Versions: 3.0
> Reporter: Ramon Buckland
> Priority: Minor
> Fix For: 3.0-M3
>
> Attachments: servicemix-components-mps.zip
>
>
> A new component which sets properties on messages as it goes through
> based on config.
> A while back now I created this TransformComponentSupport based Component
> which
> assists in loading properties from XML config, and setting them on
> JBI properties as the message goes through.
> It's a little hard to explain, so here goes.
> Essentially, sending a message past/through
> the messagPropertySetter, will as name suggests
> set some properties on the message.
> The properties it sets is derived from a list
> in the XML config file it is configured with.
> The property-set name to use
> can be supplied by
> (a) a static spring configured name (thus making this component)
> always apply the "same" set
> (b) a value of a JBI property, which is used to determine the set
> of properties to load
> (c) an XPath expression which is evaluated against the incoming
> message, and the resulting "string" is the name of the set
> of properties to apply to the out message.
> -- the VALUE of the properties from the chosen set is derived
> by a list of "precdence" value Resolvers.
> the Value for any one property is either
> (a) a static string
> (b) the value of an existing property
> (c) the value of the xpath expresssion applied to the message.
> These can be applied in any order, and the first that returns
> a value, will be the value that is used.
> --------- from the class comments ----
> Sets properties on the message, loaded from an XML MPS file
> where the properties to set are located in a <property-set ..>
> inside the XML config file.
>
> There can be more than one propertySet to "load".
>
> The property values are derived from 3 types of config.
> The first config that can return a value as a String to
> set onto the message, will be the "value" that is set
> as that property.
>
> <static-value>
> As it's name suggests, the "value" of this element
> will be the value of the JBI property.
>
> This is helpful as a default value, or as a static value.
>
> <exisiting-property> and <existing-property name="..."/>
> This will obtain the value of an existing property (itself)
> or another property on the same message.
>
> This can be helpful when you want the to "ONLY" change the
> the value of the property if there is some "xpath" expression
> that could not be derived.
>
> name=".." form will copy the string value of the other JBI property
> onto this one, (duping it). This may be handy when you have a
> component which expects a new property, but you have it as a
> different name at the moment.
>
> <xpath-expression>
> As it's name suggests, will locate a value in the inMessage source
> and set the resulting XPath String as the value of the JBI property.
>
> So given the three types, they can be arranged in any order. and the
> first
> PropertyValue Type that returns a value, will become the "value" of
> the JBI property.
> Regards
> Ramon
> A sample config looks like
> <mps>
> <property-set name="someSetNameForASetOfProperties">
> <property name="some.property.name1">
> <static-value>
> <![CDATA[value for the property]]>
> </static-value>
> </property>
> <property name="some.property.name2">
> <xpath-expression>
> <![CDATA[/someexpath/statement/to/be/applied/to/message/source]]>
> </xpath-expression>
> <xpath-expression>
> <![CDATA[/some/other/xpath]]>
> </xpath-expression>
> <existing-property name="someproperty"/>
> <static-value>
> <![CDATA[a default value]]>
> </static-value>
> </property>
> <property name="prop.xpath.with.static.default">
> <xpath-expression>
> <![CDATA[/someexpath/statement]]>
> </xpath-expression>
> <static-value>
> <![CDATA[some default if xpath does not resolve]]>
> </static-value>
> </property>
> <property name="prop.xpath.or.keep.existing">
> <xpath-expression>
> <![CDATA[/someexpath/statement]]>
> </xpath-expression>
> <existing-property/>
> </property>
> <property name="new.prop.name">
> <existing-property name="other.property"/>
> </property>
> <property name="...">
> ...
> </property>
> </property-set>
> <property-set name="...">
> ...
> </property-set>
> </mps>
>
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira