Provides support for customizing Beans Binding, and for determining the synthetic properties available for binding. Tool vendors and component authors are the expected audience of this package.

Some {@code Property} implementations, such as {@code BeanProperty} and {@code ELProperty}, resolve properties of an object at runtime as per the Java Beans specification. Sometimes, properties of interest aren't exposed according to this specification (for example, Swing's {@code JTextField.text}, {@code JSlider.value}, {@code AbstractButton.selected}). At other times, we may want to extend an object's set of properties with synthetic properties that may be interesting for the purposes of binding (for example {@code selectedElement(s)}) on Swing's {@code JTable} and {@code JList}.

This package provides for these scenarios by allowing you to provide adapters to adapt these objects and expose such properties as proper Java Beans properties. This is done by writing one or more {@link org.jdesktop.beansbinding.ext.BeanAdapterProvider} classes and registering them via the service provider mechanism (to be implemented) with the {@link org.jdesktop.beansbinding.ext.BeanAdapterFactory}.

{@code Property} implementations can then query the {@code BeanAdapterFactory} for adapters to take the place of the source object for the purposes of property resolution. This is exactly what {@code BeanProperty} and {@code ELProperty} do. In addition, tools can query the factory for the set of additional properties exposed for a particular class by the set of loaded providers.

Note: Adapters for many Swing properties are already registered with the factory. See the swingbinding package level documentation for details.