10.24. Transitioning from the Old Configuration Model to the New

This section is aimed at developers who are familiar with the old JBoss ESB non-XSD based configuration model.
The old model used free-form XML, with ESB components receiving their configurations via an instance of org.jboss.soa.esb.helpers.ConfigTree. The new configuration model is XSD-based. However, the underlying component configuration pattern is still through an instance of org.jboss.soa.esb.helpers.ConfigTree. This means that, at the moment, the XSD-based configurations are mapped/transformed into ConfigTree-style configurations.
Developers who have been accustomed to the old model now need to keep the following in mind:
  1. Read all of the docs on the new configuration model. Don't assume you can infer the new configurations based on your knowledge of the old.
  2. The only location where free-form markup is supported in the new configuration is on the <property> element/type. This type is allowed on <provider>, <bus> and <listener> types (and sub-types). However, the only location in which <property> based free form markup is mapped into the ConfigTree configurations is where the <property> exists on an <action>. In this case, the <property> content is mapped into the target ConfigTree <action>. Note however, if you have 1+ <property> elements with free form child content on an <action>, all this content will be concatenated together on the target ConfigTree <action>.
  3. When developing new Listener/Action components, you must ensure that the ConfigTree based configuration these components depend on can be mapped from the new XSD based configurations. An example of this is how in the ConfigTree configuration model, you could decide to supply the configuration to a listener component via attributes on the listener node, or you could decide to do it based on child nodes within the listener configuration – all depending on how you were feeling on the day. This type of free form configuration on <listener> components is not supports on the XSD to ConfigTree mapping. In other words, the child content in the above example would not be mapped from the XSD configuration to the ConfigTree style configuration. In fact, the XSD configuration simply would not accept the arbitrary content, unless it was in a <property> and even in that case (on a <listener>), it would simply be ignored by the mapping code.