Class BaseDistributedPropertySet

java.lang.Object
com.oracle.webservices.api.message.BasePropertySet
com.oracle.webservices.api.message.BaseDistributedPropertySet
All Implemented Interfaces:
DistributedPropertySet, PropertySet
Direct Known Subclasses:
Packet, RequestContext

public abstract class BaseDistributedPropertySet extends BasePropertySet implements DistributedPropertySet
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 PropertySet object 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.

Author:
Kohsuke Kawaguchi