public final class RequestContext
extends org.jvnet.ws.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 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 aswell;
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. |
| Constructor and Description |
|---|
RequestContext()
Creates an empty
RequestContext. |
| Modifier and Type | Method and Description |
|---|---|
void |
addSatellite(PropertySet satellite)
Deprecated.
|
RequestContext |
copy() |
void |
fill(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 org.jvnet.ws.message.BasePropertySet.PropertyMap |
getPropertyMap()
Map representing the Fields and Methods annotated with
Property. |
String |
getSoapAction() |
Boolean |
getSoapActionUse() |
protected boolean |
mapAllowsAdditionalProperties()
Used when constructing the
BasePropertySet.MapView for this object - it controls if the BasePropertySet.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, copySatelliteInto, copySatelliteInto, createEntrySet, createView, getSatellite, remove, removeSatellite, supports, supportsLocalasMap, containsKey, createMapView, parsepublic ContentNegotiation contentNegotiation
ContentNegotiation.PROPERTY
property.RequestContext()
RequestContext.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 org.jvnet.ws.message.PropertySetget in class org.jvnet.ws.message.BaseDistributedPropertySetkey - 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 org.jvnet.ws.message.PropertySetput in class org.jvnet.ws.message.BaseDistributedPropertySetPropertypublic void fill(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 org.jvnet.ws.message.BasePropertySet.PropertyMap getPropertyMap()
org.jvnet.ws.message.BasePropertySetProperty.
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 org.jvnet.ws.message.BasePropertySetprotected boolean mapAllowsAdditionalProperties()
org.jvnet.ws.message.BasePropertySetBasePropertySet.MapView for this object - it controls if the BasePropertySet.MapView servers only to
access strongly typed values or allows also different valuesmapAllowsAdditionalProperties in class org.jvnet.ws.message.BasePropertySetMap should allow also properties not defined as strongly typed fieldsCopyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.