com.sun.xml.ws.api
Class DistributedPropertySet

java.lang.Object
  extended by com.sun.xml.ws.api.PropertySet
      extended by com.sun.xml.ws.api.DistributedPropertySet
Direct Known Subclasses:
Packet

public abstract class DistributedPropertySet
extends PropertySet

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.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.xml.ws.api.PropertySet
PropertySet.Accessor, PropertySet.FieldAccessor, PropertySet.MethodAccessor, PropertySet.Property, PropertySet.PropertyMap
 
Field Summary
 
Fields inherited from class com.sun.xml.ws.api.PropertySet
mapViewCore
 
Constructor Summary
DistributedPropertySet()
           
 
Method Summary
 void addSatellite(PropertySet satellite)
           
 void copySatelliteInto(DistributedPropertySet r)
           
(package private)  void createEntrySet(Set<Map.Entry<String,Object>> core)
           
 Object get(Object key)
          Gets the name of the property.
 Object put(String key, Object value)
          Sets a property.
 Object remove(Object key)
           
 void removeSatellite(PropertySet satellite)
           
 boolean supports(Object key)
          Checks if this PropertySet supports a property of the given name.
 
Methods inherited from class com.sun.xml.ws.api.PropertySet
containsKey, createMapView, getPropertyMap, parse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DistributedPropertySet

public DistributedPropertySet()
Method Detail

addSatellite

public void addSatellite(@NotNull
                         PropertySet satellite)

removeSatellite

public void removeSatellite(@NotNull
                            PropertySet satellite)

copySatelliteInto

public void copySatelliteInto(@NotNull
                              DistributedPropertySet r)

get

public Object get(Object key)
Description copied from class: PropertySet
Gets the name of the property.

Overrides:
get in class PropertySet
Parameters:
key - This field is typed as Object to follow the Map.get(Object) convention, but if anything but String is passed, this method just returns null.

put

public Object put(String key,
                  Object value)
Description copied from class: PropertySet
Sets a property.

Implementation Note

This method is slow. Code inside JAX-WS should define strongly-typed fields in this class and access them directly, instead of using this.

Overrides:
put in class PropertySet
See Also:
PropertySet.Property

supports

public boolean supports(Object key)
Description copied from class: PropertySet
Checks if this PropertySet supports a property of the given name.

Overrides:
supports in class PropertySet

remove

public Object remove(Object key)
Overrides:
remove in class PropertySet

createEntrySet

void createEntrySet(Set<Map.Entry<String,Object>> core)
Overrides:
createEntrySet in class PropertySet