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:
DistributedPropertySet
,Packet
,RequestContext
public abstract class BaseDistributedPropertySet extends BasePropertySet implements DistributedPropertySet
PropertySet
that combines properties exposed from multiplePropertySet
s into one.This implementation allows one
PropertySet
to assemble all properties exposed from other "satellite"PropertySet
s. (A satellite may itself be aDistributedPropertySet
, 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 toRequestContext
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 aPropertySet
object with methods for each property it wants to expose, and then add thatPropertySet
toPacket
. 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 toPropertySet
(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
Constructors Constructor Description BaseDistributedPropertySet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addSatellite(PropertySet satellite)
void
addSatellite(Class<? extends PropertySet> keyClass, 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>
TgetSatellite(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 thisPropertySet
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, 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
-
-
-
-
Method Detail
-
addSatellite
public void addSatellite(@NotNull PropertySet satellite)
- Specified by:
addSatellite
in interfaceDistributedPropertySet
-
addSatellite
public void addSatellite(@NotNull Class<? extends PropertySet> keyClass, @NotNull PropertySet satellite)
- Specified by:
addSatellite
in interfaceDistributedPropertySet
-
removeSatellite
public void removeSatellite(PropertySet satellite)
- Specified by:
removeSatellite
in interfaceDistributedPropertySet
-
copySatelliteInto
public void copySatelliteInto(@NotNull DistributedPropertySet r)
-
copySatelliteInto
public void copySatelliteInto(MessageContext r)
- Specified by:
copySatelliteInto
in interfaceDistributedPropertySet
-
getSatellite
@Nullable public <T extends PropertySet> T getSatellite(Class<T> satelliteClass)
- Specified by:
getSatellite
in interfaceDistributedPropertySet
-
getSatellites
public Map<Class<? extends PropertySet>,PropertySet> getSatellites()
- Specified by:
getSatellites
in interfaceDistributedPropertySet
-
get
public Object get(Object key)
Description copied from class:BasePropertySet
Gets the name of the property.- Specified by:
get
in interfacePropertySet
- Overrides:
get
in classBasePropertySet
- Parameters:
key
- This field is typed asObject
to follow theMap.get(Object)
convention, but if anything butString
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 interfacePropertySet
- Overrides:
put
in classBasePropertySet
- See Also:
PropertySet.Property
-
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKey
in interfacePropertySet
- Overrides:
containsKey
in classBasePropertySet
-
supports
public boolean supports(Object key)
Description copied from class:BasePropertySet
Checks if thisPropertySet
supports a property of the given name.- Specified by:
supports
in interfacePropertySet
- Overrides:
supports
in classBasePropertySet
-
remove
public Object remove(Object key)
- Specified by:
remove
in interfacePropertySet
- Overrides:
remove
in classBasePropertySet
-
createEntrySet
protected void createEntrySet(Set<Map.Entry<String,Object>> core)
- Overrides:
createEntrySet
in classBasePropertySet
-
supportsLocal
protected boolean supportsLocal(Object key)
-
createView
protected Map<String,Object> createView()
- Overrides:
createView
in classBasePropertySet
-
-