1.20. Configuring Bean Contexts
- To have the contents of the bean context returned at the end of a
Smooks.filterSource
process, supply aorg.milyn.delivery.java.JavaResult
object in the call to theSmooks.filterSource
method.Example 1.1.
// Get the data to filter StreamSource source = new StreamSource(getClass().getResourceAsStream("data.xml")); // Create a Smooks instance (cachable) Smooks smooks = new Smooks("smooks-config.xml"); // Create the JavaResult, which will contain the filter result after filtering JavaResult result = new JavaResult(); // Filter the data from the source, putting the result into the JavaResult smooks.filterSource(source, result); // Getting the Order bean which was created by the Javabean cartridge Order order = (Order)result.getBean("order");
- To access the bean contexts at start-up, specify this in the
BeanContext
object. You can retrieve it from theExecutionContext
via thegetBeanContext()
method.Example 1.2.
// Create a bean to pass on to the Smooks execution context HashMap<String,Object> transformConfig = new HashMap<String,Object>(); transformConfig.put("Version", new Integer(1)); // Get the data to filter StreamSource source = new StreamSource(getClass().getResourceAsStream("data.xml")); // Create a Smooks instance (cachable) Smooks smooks = new Smooks("smooks-config.xml"); // Create the JavaResult, which will contain the filter result after filtering JavaResult result = new JavaResult(); // Add bean to Smooks execution context executionContext.getBeanContext().addBean("transformConfig", transformConfig); // Filter the data from the source, putting the result into the JavaResult smooks.filterSource(source, result); // Getting the Order bean which was created by the JavaBean cartridge Order order = (Order)result.getBean("order");
- When adding or retrieving objects from the
BeanContext
make sure you first retrieve abeanId
object from thebeanIdStore
. ThebeanId
object is a special key that ensures higher performance than string keys, although string keys are also supported. - You must retrieve the
beanIdStore
from theApplicationContext
using thegetbeanIdStore()
method. - To create a
beanId
object, call theregister("beanId name")
method. If you know that the beanId is already registered, then you can retrieve it by calling thegetbeanId("beanId name")
method. beanId
objects areApplicationContext
-scoped objects. Register them in your custom visitor implementation's initialization method and then put them in the visitor object as properties. You can then use them in thevisitBefore
andvisitAfter
methods. ThebeanId
objects and thebeanIdStore
are thread-safe.