PropertySet that combines properties exposed from multiple
PropertySets into one.
This implementation allows one
PropertySet to assemble
all properties exposed from other "satellite"
PropertySets.
(A satellite may itself be a
DistributedPropertySet, so
in general this can form a tree.)
This is useful for JAX-WS because the properties we expose to the application
are contributed by different pieces, and therefore we'd like each of them
to have a separate
PropertySet implementation that backs up
the properties. For example, this allows FastInfoset to expose its
set of properties to
RequestContext by using a strongly-typed fields.
This is also useful for a client-side transport to expose a bunch of properties
into
ResponseContext. It simply needs to create a
PropertySetobject with methods for each property it wants to expose, and then add that
PropertySet to
Packet. This allows property values to be
lazily computed (when actually asked by users), thus improving the performance
of the typical case where property values are not asked.
A similar benefit applies on the server-side, for a transport to expose
a bunch of properties to
WebServiceContext.
To achieve these benefits, access to
DistributedPropertySet is slower
compared to
PropertySet (such as get/set), while adding a satellite
object is relatively fast.