12.8. @ConficParam Benefits
This annotation eliminates excess code from your component because it:
- Handles decoding of the <param> value before setting it on the annotated component property. Smooks provides DataDecoders for all of the main types (int, Double, File, Enums etc), but you can implement and use a custom DataDecoder where the out of the box decoders don't cover specific decoding requirements (for example,
@ConfigParam(decoder = MyQuirkyDataDecoder.class)
). Smooks will automatically use your custom decoder (that is, you won't need to define the decoder property on this annotation) if it is registered. See the DataDecoder Javadocs for details on registering a DataDecoder implementation such that Smooks will automatically locate it for decoding a specific data type. - Supports a
choice
constraint for theconfig
property, generating a configuration exception where the configured value is not one of the defined choice values. For example, you may have a property which has a constrained value set ofON
andOFF
. You can use the choice property on this annotation to constrain the config, raise exceptions, and so on. (For example,@ConfigParam(choice = {"ON", "OFF"})
.) - Can specify default config values e.g.
@ConfigParam(defaultVal = "true")
. - Can specify whether or not the property config value is required or optional e.g.
@ConfigParam(use = Use.OPTIONAL)
. By default, all properties areREQUIRED
, but setting adefaultVal
implicitly marks the property as beingOPTIONAL
.