EmptyBranch

startService

Starts a Seedling service. This is called by the Seedling runtime after
the node has been installed and all properties have been set to their
configured values.
Any exceptions thrown by an implementation of this method are handled
by the Seedling. Instances of RuntimeException are propagated
to the application, but any other kind of exception is wrapped in a
ServiceException and rethrown.

installedChildNames

Extracts a collection of the names of this branch's current child nodes.

The result is a snapshot of the current state: subsequent changes to the
branch are not reflected in the result.
Thus the actual children may have
changed by the time the collection is inspected; in particular, another
thread may uninstall a node named in this collection before the name is
even read from this list.

Implementations must ensure that the result stays usable even when the
branch changes in another thread. For example, iterating the result
must not throw ConcurrentModificationException if the branch
changes during iteration.

availableChildNames

Extracts a collection of the names of child nodes that are available on
request from this branch. This set includes all installed children, as
well as any other nodes that could be created on demand (usually via
automated injection from configuration files).

The result is a snapshot of the current state: subsequent changes to the
branch are not reflected in the result.
Thus the actual children may have
changed by the time the collection is inspected; in particular, another
thread may uninstall a node named in this collection (thereby making it
unavailable) before the name is even read from this collection.

Implementations must ensure that the result stays usable even when the
branch changes in another thread. For example, iterating the result
must not throw ConcurrentModificationException if the branch
changes during iteration.

availableChild

A node is available if its already installed, or if it can be
provided for installation, usually by being created from configuration.
Provisioning of uninstalled nodes is defined by the implementation
class, which may not do any dynamic provisioning at all, in which case
this method behaves identically to BranchNode.installedChild(String).