As a means of not polluting the existing framework too much but to add some needed
flow of control functionality for post processing, I've been playing around with
adding a new pipeline, POST. The intent of pipeline POST is to provide a place
to add a defined order of post processing of rules flagged during the analysis
phase. I've added attribute "id" to the xpath-value rule. The 'id'
is ref-ed
by rules in POST. Within POST "action" rules are provided with 0 or more ids
to be associated with an action. A list of actions are processed in the order they
are defined.
The problem I am encountering with this design is that all POST pipeline contents are
merged into a single POST pipeline class for the analysis phase. This can be
a problem if there is more than 1 POST pipeline acting upon the same ref ID.
For example if switchyard and airport both altered some_common.xml file the
last one who touched it wins. I don't see any easy way to instruct Windup
to only run switchyard if there are multiple POST pipelines present.
There is the same last-in problem if the action is associated directly with the
xpath-value rule
and there is some product specific information being placed in the file.
I suppose I could add a cmd-line option and require the user to point to the file
containing the POST pipeline to run.
I really hate to require that of the user however.
I'm open to suggestions.
Here is a general idea of what the pipeline would look like.
<windup:pipeline type="POST" id="My Switchyard Post Processor
Pipeline">
<windup:post-process
class="org.jboss.post.process.switchyard.SwitchyardController">
<windup:decorators>
<windup:action
class="org.jboss.post.process.switchyard.Service">
<property name="references">
<list>
<value>switchyard:Action:create service</value>
<value>switchyard:Action:set ref</value>
</list>
</property>
</windup:action>
<windup:action
class="org.jboss.post.process.switchyard.Binding">
<property name="references">
<list>
<value>switchyard:Action:binding config
jms-bus</value>
<value>switchyard:Action:binding config camel</value>
</list>
</property>
</windup:action>
<!--
<windup:action
class="org.jboss.post.process.common.ConfigUpdate">
<property name="references">
<list>
<value>Adjust:some_common.xml file</value>
</list>
</property>
</windup:action>
<windup:decorators>
</windup:post-process>
</windup:pipeline>