/** Invoked whenever a configured property within this widget factory is changed. */
  public void onConfigurationChanged() {
    final Collection<PropertyWidget<?>> widgets = getWidgets();

    for (PropertyWidget<?> widget : widgets) {
      @SuppressWarnings("unchecked")
      final PropertyWidget<Object> objectWidget = (PropertyWidget<Object>) widget;
      final ConfiguredPropertyDescriptor propertyDescriptor = objectWidget.getPropertyDescriptor();
      final Object value = _beanJobBuilder.getConfiguredProperty(propertyDescriptor);
      objectWidget.onValueTouched(value);
    }
  }
 /**
  * Registers a widget in this factory in rare cases when the factory is not used to actually
  * instantiate the widget, but it is still needed to register the widget for compliancy with eg.
  * the onConfigurationChanged() behaviour.
  *
  * @param propertyDescriptor
  * @param widget
  */
 public void registerWidget(
     ConfiguredPropertyDescriptor propertyDescriptor, PropertyWidget<?> widget) {
   if (widget == null) {
     _widgets.remove(propertyDescriptor);
   } else {
     _widgets.put(propertyDescriptor, widget);
     @SuppressWarnings("unchecked")
     PropertyWidget<Object> objectWidget = (PropertyWidget<Object>) widget;
     Object value = _beanJobBuilder.getConfiguredProperty(objectWidget.getPropertyDescriptor());
     objectWidget.initialize(value);
   }
 }