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
All Implemented Interfaces:
org.jvnet.ws.message.DistributedPropertySet, org.jvnet.ws.message.PropertySet
Direct Known Subclasses:
Packet, RequestContext

public abstract class DistributedPropertySet
extends PropertySet
implements org.jvnet.ws.message.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.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.xml.ws.api.PropertySet
PropertySet.Accessor, PropertySet.FieldAccessor, PropertySet.MethodAccessor, PropertySet.PropertyMap
 
Nested classes/interfaces inherited from interface org.jvnet.ws.message.PropertySet
org.jvnet.ws.message.PropertySet.Property
 
Field Summary
 
Fields inherited from class com.sun.xml.ws.api.PropertySet
mapViewCore
 
Constructor Summary
DistributedPropertySet()
           
 
Method Summary
 void addSatellite(Class keyClass, PropertySet satellite)
           
 void addSatellite(Class keyClass, org.jvnet.ws.message.PropertySet satellite)
           
 void addSatellite(PropertySet satellite)
           
 void addSatellite(org.jvnet.ws.message.PropertySet satellite)
           
 void copySatelliteInto(DistributedPropertySet r)
           
 void copySatelliteInto(org.jvnet.ws.message.MessageContext r)
           
(package private)  void createEntrySet(Set<Map.Entry<String,Object>> core)
           
 Object get(Object key)
          Gets the name of the property.
<T extends org.jvnet.ws.message.PropertySet>
T
getSatellite(Class<T> satelliteClass)
           
 Object put(String key, Object value)
          Sets a property.
 Object remove(Object key)
           
 void removeSatellite(org.jvnet.ws.message.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
 
Methods inherited from interface org.jvnet.ws.message.PropertySet
containsKey, createMapView
 

Constructor Detail

DistributedPropertySet

public DistributedPropertySet()
Method Detail

addSatellite

public void addSatellite(@NotNull
                         PropertySet satellite)

addSatellite

public void addSatellite(@NotNull
                         Class keyClass,
                         @NotNull
                         PropertySet satellite)

copySatelliteInto

public void copySatelliteInto(@NotNull
                              DistributedPropertySet r)

getSatellite

@Nullable
public <T extends org.jvnet.ws.message.PropertySet> T getSatellite(Class<T> satelliteClass)
Specified by:
getSatellite in interface org.jvnet.ws.message.DistributedPropertySet

get

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

Specified by:
get in interface org.jvnet.ws.message.PropertySet
Overrides:
get in class PropertySet
Parameters:
key - This field is typed as Object to follow the HashMap.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.

Specified by:
put in interface org.jvnet.ws.message.PropertySet
Overrides:
put in class PropertySet
See Also:
Property

supports

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

Specified by:
supports in interface org.jvnet.ws.message.PropertySet
Overrides:
supports in class PropertySet

remove

public Object remove(Object key)
Specified by:
remove in interface org.jvnet.ws.message.PropertySet
Overrides:
remove in class PropertySet

createEntrySet

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

addSatellite

public void addSatellite(org.jvnet.ws.message.PropertySet satellite)
Specified by:
addSatellite in interface org.jvnet.ws.message.DistributedPropertySet

addSatellite

public void addSatellite(@NotNull
                         Class keyClass,
                         @NotNull
                         org.jvnet.ws.message.PropertySet satellite)
Specified by:
addSatellite in interface org.jvnet.ws.message.DistributedPropertySet

removeSatellite

public void removeSatellite(org.jvnet.ws.message.PropertySet satellite)
Specified by:
removeSatellite in interface org.jvnet.ws.message.DistributedPropertySet

copySatelliteInto

public void copySatelliteInto(org.jvnet.ws.message.MessageContext r)
Specified by:
copySatelliteInto in interface org.jvnet.ws.message.DistributedPropertySet


Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.