com.oracle.webservices.api.message
Class BaseDistributedPropertySet

java.lang.Object
  extended by com.oracle.webservices.api.message.BasePropertySet
      extended by com.oracle.webservices.api.message.BaseDistributedPropertySet
All Implemented Interfaces:
DistributedPropertySet, PropertySet
Direct Known Subclasses:
DistributedPropertySet, 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

Nested Class Summary
 
Nested classes/interfaces inherited from class com.oracle.webservices.api.message.BasePropertySet
BasePropertySet.Accessor, BasePropertySet.PropertyMap, BasePropertySet.PropertyMapEntry
 
Nested classes/interfaces inherited from interface com.oracle.webservices.api.message.PropertySet
PropertySet.Property
 
Constructor Summary
BaseDistributedPropertySet()
           
 
Method Summary
 void addSatellite(Class<? extends PropertySet> keyClass, PropertySet satellite)
           
 void addSatellite(PropertySet satellite)
           
protected  Map<String,Object> asMapLocal()
           
 boolean containsKey(Object key)
           
 void copySatelliteInto(DistributedPropertySet r)
           
 void copySatelliteInto(MessageContext r)
           
protected  void createEntrySet(Set<Map.Entry<String,Object>> core)
           
protected  Map<String,Object> createView()
           
 Object get(Object key)
          Gets the name of the property.
<T extends PropertySet>
T
getSatellite(Class<T> satelliteClass)
           
 Map<Class<? extends PropertySet>,PropertySet> getSatellites()
           
 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.
protected  boolean supportsLocal(Object key)
           
 
Methods inherited from class com.oracle.webservices.api.message.BasePropertySet
asMap, createMapView, getPropertyMap, mapAllowsAdditionalProperties, parse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.oracle.webservices.api.message.PropertySet
asMap, createMapView
 

Constructor Detail

BaseDistributedPropertySet

public BaseDistributedPropertySet()
Method Detail

addSatellite

public void addSatellite(@NotNull
                         PropertySet satellite)
Specified by:
addSatellite in interface DistributedPropertySet

addSatellite

public void addSatellite(@NotNull
                         Class<? extends PropertySet> keyClass,
                         @NotNull
                         PropertySet satellite)
Specified by:
addSatellite in interface DistributedPropertySet

removeSatellite

public void removeSatellite(PropertySet satellite)
Specified by:
removeSatellite in interface DistributedPropertySet

copySatelliteInto

public void copySatelliteInto(@NotNull
                              DistributedPropertySet r)

copySatelliteInto

public void copySatelliteInto(MessageContext r)
Specified by:
copySatelliteInto in interface DistributedPropertySet

getSatellite

@Nullable
public <T extends PropertySet> T getSatellite(Class<T> satelliteClass)
Specified by:
getSatellite in interface DistributedPropertySet

getSatellites

public Map<Class<? extends PropertySet>,PropertySet> getSatellites()
Specified by:
getSatellites in interface DistributedPropertySet

get

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

Specified by:
get in interface PropertySet
Overrides:
get in class BasePropertySet
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: BasePropertySet
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 PropertySet
Overrides:
put in class BasePropertySet
See Also:
Property

containsKey

public boolean containsKey(Object key)
Specified by:
containsKey in interface PropertySet
Overrides:
containsKey in class BasePropertySet

supports

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

Specified by:
supports in interface PropertySet
Overrides:
supports in class BasePropertySet

remove

public Object remove(Object key)
Specified by:
remove in interface PropertySet
Overrides:
remove in class BasePropertySet

createEntrySet

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

asMapLocal

protected Map<String,Object> asMapLocal()

supportsLocal

protected boolean supportsLocal(Object key)

createView

protected Map<String,Object> createView()
Overrides:
createView in class BasePropertySet


Copyright © 2005-2015 Oracle Corporation. All Rights Reserved.