public final class RequestContext
extends com.oracle.webservices.api.message.BaseDistributedPropertySet
The JAX-WS spec exposes properties as a Map
, but if we just use
an ordinary HashMap
for this, it doesn't work as fast as we'd like
it to be. Hence we have this class.
We expect the user to set a few properties and then use that same setting to make a bunch of invocations. So we'd like to take some hit when the user actually sets a property to do some computation, then use that computed value during a method invocation again and again.
For this goal, we use PropertySet
and implement some properties
as virtual properties backed by methods. This allows us to do the computation
in the setter, and store it in a field.
These fields are used by Stub.process(com.sun.xml.ws.api.message.Packet, com.sun.xml.ws.client.RequestContext, com.sun.xml.ws.client.ResponseContextReceiver)
to populate a Packet
.
For better performance, we wan't use strongly typed field as much as possible
to avoid reflection and unnecessary collection iterations;
Using BasePropertySet.MapView
implementation allows client to use Map
interface
in a way that all the strongly typed properties are reflected to the fields
right away. Any additional (extending) properties can be added by client as well;
those would be processed using iterating the MapView
and their processing,
of course, would be slower.
The previous implementation with fallback mode has been removed to simplify the code and remove the bugs.
Modifier and Type | Field and Description |
---|---|
ContentNegotiation |
contentNegotiation
The value of
ContentNegotiation.PROPERTY
property. |
Modifier and Type | Method and Description |
---|---|
void |
addSatellite(PropertySet satellite)
Deprecated.
|
RequestContext |
copy() |
void |
fill(com.sun.xml.ws.api.message.Packet packet,
boolean isAddressingEnabled)
Fill a
Packet with values of this RequestContext . |
Object |
get(Object key)
The efficient get method that reads from
RequestContext . |
String |
getContentNegotiationString() |
EndpointAddress |
getEndpointAddress() |
String |
getEndPointAddressString()
Deprecated.
always access
endpointAddress . |
protected com.oracle.webservices.api.message.BasePropertySet.PropertyMap |
getPropertyMap()
Map representing the Fields and Methods annotated with
PropertySet.Property . |
String |
getSoapAction() |
Boolean |
getSoapActionUse() |
protected boolean |
mapAllowsAdditionalProperties()
Used when constructing the
MapView for this object - it controls if the MapView servers only to
access strongly typed values or allows also different values |
Object |
put(String key,
Object value)
The efficient put method that updates
RequestContext . |
void |
setContentNegotiationString(String s) |
void |
setEndpointAddress(EndpointAddress epa) |
void |
setEndPointAddressString(String s) |
void |
setSoapAction(String sAction) |
void |
setSoapActionUse(Boolean sActionUse) |
addSatellite, addSatellite, asMapLocal, containsKey, copySatelliteInto, copySatelliteInto, createEntrySet, createView, getSatellite, getSatellites, remove, removeSatellite, supports, supportsLocal
asMap, createMapView, parse
public ContentNegotiation contentNegotiation
ContentNegotiation.PROPERTY
property.public void addSatellite(@NotNull PropertySet satellite)
public String getEndPointAddressString()
endpointAddress
.BindingProvider.ENDPOINT_ADDRESS_PROPERTY
view
on top of endpointAddress
.public void setEndPointAddressString(String s)
public void setEndpointAddress(@NotNull EndpointAddress epa)
@NotNull public EndpointAddress getEndpointAddress()
public String getContentNegotiationString()
public void setContentNegotiationString(String s)
public String getSoapAction()
public void setSoapAction(String sAction)
public Boolean getSoapActionUse()
public void setSoapActionUse(Boolean sActionUse)
public Object get(Object key)
RequestContext
.get
in interface com.oracle.webservices.api.message.PropertySet
get
in class com.oracle.webservices.api.message.BaseDistributedPropertySet
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.public Object put(String key, Object value)
RequestContext
.put
in interface com.oracle.webservices.api.message.PropertySet
put
in class com.oracle.webservices.api.message.BaseDistributedPropertySet
Property
public void fill(com.sun.xml.ws.api.message.Packet packet, boolean isAddressingEnabled)
Packet
with values of this RequestContext
.packet
- to be filled with context valuesisAddressingEnabled
- flag if addressing enabled (to provide warning if necessary)public RequestContext copy()
protected com.oracle.webservices.api.message.BasePropertySet.PropertyMap getPropertyMap()
com.oracle.webservices.api.message.BasePropertySet
PropertySet.Property
.
Model of PropertySet
class.
At the end of the derivation chain this method just needs to be implemented as:
private static final PropertyMap model; static { model = parse(MyDerivedClass.class); } protected PropertyMap getPropertyMap() { return model; }
getPropertyMap
in class com.oracle.webservices.api.message.BasePropertySet
protected boolean mapAllowsAdditionalProperties()
com.oracle.webservices.api.message.BasePropertySet
MapView
for this object - it controls if the MapView
servers only to
access strongly typed values or allows also different valuesmapAllowsAdditionalProperties
in class com.oracle.webservices.api.message.BasePropertySet
Map
should allow also properties not defined as strongly typed fieldsCopyright © 2015 Oracle Corporation. All rights reserved.