org.jboss.axis
Class MessageContext

java.lang.Object
  extended byorg.jboss.axis.MessageContext
All Implemented Interfaces:
MessageContext (src) , SOAPMessageContext (src)

public class MessageContext
extends java.lang.Object
implements SOAPMessageContext (src)

A MessageContext is the Axis implementation of the javax SOAPMessageContext class, and is core to message processing in handlers and other parts of the system.

This class also contains constants for accessing some well-known properties. Using a hierarchical namespace is strongly suggested in order to lower the chance for conflicts.

(These constants should be viewed as an explicit list of well known and widely used context keys, there's nothing wrong with directly using the key strings. This is the reason for the hierarchical constant namespace.

Actually I think we might just list the keys in the docs and provide no such constants since they create yet another namespace, but we'd have no compile-time checks then.

Whaddya think? - todo by Jacek)


Field Summary
static java.lang.String ACCEPTMISSINGPARAMS
          A boolean param, to control whether we accept missing parameters as nulls or refuse to acknowledge them.
static java.lang.String ATTACHMENTS_DIR
          The directory where in coming attachments are created.
static java.lang.String AUTHUSER
          Place to store an AuthenticatedUser
static java.lang.String CALL
          If on the client - this is the Call object
static java.lang.String ENGINE_HANDLER
          Contains an instance of Handler, which is the ServiceContext and the entrypoint of this service.
static java.lang.String HTTP_TRANSPORT_VERSION
          The value of the property is used by service WSDL generation (aka ?WSDL) Set this property to request a certain level of HTTP.
static java.lang.String IS_MSG
          Are we doing Msg vs RPC? - For Java Binding
static java.lang.String QUIT_REQUESTED
          Has a quit been requested? Hackish...
static java.lang.String SECURITY_PROVIDER
           
protected static java.lang.String systemTempDir
          temporary directory to store attachments
static java.lang.String TRANS_URL
          This String is the URL that the message came to
static java.lang.String WSDLGEN_INTFNAMESPACE
          The value of the property is used by service WSDL generation (aka ?WSDL) For the service's interface namespace if not set TRANS_URL property is used.
static java.lang.String WSDLGEN_RESOURCE
          The value of the property is used by service WSDL generation (aka ?WSDL) If the wsdl documnet contains imports, this property is the relative path to the imported artifact.
static java.lang.String WSDLGEN_SERV_LOC_URL
          The value of the property is used by service WSDL generation (aka ?WSDL) For the service's location if not set TRANS_URL property is used.
 
Constructor Summary
MessageContext(AxisEngine (src)  engine)
          Create a message context.
 
Method Summary
 boolean containsProperty(java.lang.String name)
          Returns true if the MessageContext contains a property with the specified name.
 AxisEngine (src) getAxisEngine()
          get the axis engine.
 java.lang.ClassLoader getClassLoader()
          get the classloader, implicitly binding to the thread context classloader if an override has not been supplied
static MessageContext (src) getCurrentContext()
          Get the active message context.
 Message (src) getCurrentMessage()
          Return the current (i.e.
 java.lang.String getEncodingStyle()
          Returns the encoding style as a URI that should be used for the SOAP message.
 boolean getMaintainSession()
          Are we maintaining session state?
 SOAPMessage (src) getMessage()
          Gets the SOAPMessage from this message context
 OperationDesc (src) getOperation()
          the current operation
 OperationDesc (src) getOperationByQName(QName (src)  qname)
          get the first possible operation that could match a body containing an element of the given QName.
 Style (src) getOperationStyle()
          Get the operation style.
 Use (src) getOperationUse()
          Get the operation use.
 java.lang.String getPassword()
          Get the password
 boolean getPastPivot()
          Determine when we've passed the pivot
 OperationDesc (src) [] getPossibleOperationsByQName(QName (src)  qname)
          getPossibleOperationsByQName Returns a list of operation descriptors that could may possibly match a body containing an element of the given QName.
 java.lang.Object getProperty(java.lang.String name)
          Returns the value associated with the named property - or null if not defined/set.
 java.util.Iterator getPropertyNames()
          Returns an Iterator view of the names of the properties in this MessageContext
 Message (src) getRequestMessage()
          Get the request message.
 Message (src) getResponseMessage()
          Get the response message.
 java.lang.String[] getRoles()
          Not (yet) implemented method in the SOAPMessageContext interface

Gets the SOAP actor roles associated with an execution of the HandlerChain and its contained Handler instances.

 SchemaVersion (src) getSchemaVersion()
          Schema version information
 SOAPService (src) getService()
           
 Session (src) getSession()
          Sessions
 java.lang.String getSOAPActionURI()
          Get the soapAction URI.
 SOAPConstants (src) getSOAPConstants()
          SOAP constants
 java.lang.String getStrProp(java.lang.String propName)
          Just a util so we don't have to cast the result
 java.lang.String getTargetService()
           
 int getTimeout()
          Get timeout from our MessageContext.
 java.lang.String getTransportName()
          Transport
 TypeMapping (src) getTypeMapping()
          Return the type mapping currently in scope for our encoding style
 TypeMappingRegistry (src) getTypeMappingRegistry()
          Get the currently in-scope type mapping registry.
 java.lang.String getUsername()
          Get the user name
 boolean isClient()
          Let us know whether this is the client or the server.
 boolean isEncoded()
          Encoding
 boolean isHighFidelity()
           
 boolean isPropertyTrue(java.lang.String propName)
          Tests to see if the named property is set in the 'bag'.
 boolean isPropertyTrue(java.lang.String propName, boolean defaultVal)
          Tests to see if the named property is set in the 'bag'.
 void removeProperty(java.lang.String propName)
          Removes a property (name-value pair) from the MessageContext
 void reset()
           
 void setClassLoader(java.lang.ClassLoader cl)
          set a new classloader
 void setCurrentMessage(Message (src)  curMsg)
          Set the current (i.e.
 void setEncodingStyle(java.lang.String namespaceURI)
          Sets the encoding style to the URI passed in.
 void setHighFidelity(boolean highFidelity)
           
 void setMaintainSession(boolean yesno)
          Set whether we are maintaining session state
 void setMessage(SOAPMessage (src)  message)
          Sets the SOAPMessage for this message context
 void setOperation(OperationDesc (src)  operation)
          set the current operation
 void setPassword(java.lang.String password)
          Set the password.
 void setPastPivot(boolean pastPivot)
          Indicate when we've passed the pivot
 void setProperty(java.lang.String name, java.lang.Object value)
          Allows you to set a named property to the passed in value.
 void setPropertyParent(java.util.Hashtable parent)
           
 void setRequestMessage(Message (src)  reqMsg)
          Set the request message, and make sure that message is associated with this MessageContext.
 void setResponseMessage(Message (src)  respMsg)
          Set the response message, and make sure that message is associated with this MessageContext.
 void setSchemaVersion(SchemaVersion (src)  schemaVersion)
           
 void setService(SOAPService (src)  sh)
           
 void setSession(Session (src)  session)
           
 void setSOAPActionURI(java.lang.String SOAPActionURI)
          Set the soapAction URI.
 void setSOAPConstants(SOAPConstants (src)  soapConstants)
           
 void setTargetService(java.lang.String tServ)
          Set the target service for this message.
 void setTimeout(int value)
          Set timeout in our MessageContext.
 void setTransportName(java.lang.String transportName)
           
 void setTypeMappingRegistry(TypeMappingRegistry (src)  reg)
          replace the engine's type mapping registry with a local one
 void setUsername(java.lang.String username)
          Set the username.
 void setUseSOAPAction(boolean useSOAPAction)
          Should soapAction be used?
 boolean useSOAPAction()
          Are we using soapAction?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

systemTempDir

protected static java.lang.String systemTempDir
temporary directory to store attachments


ENGINE_HANDLER

public static final java.lang.String ENGINE_HANDLER
Contains an instance of Handler, which is the ServiceContext and the entrypoint of this service.

(if it has been so configured - will our deployment tool do this by default? - todo by Jacek)

See Also:
Constant Field Values (src)

TRANS_URL

public static final java.lang.String TRANS_URL
This String is the URL that the message came to

See Also:
Constant Field Values (src)

QUIT_REQUESTED

public static final java.lang.String QUIT_REQUESTED
Has a quit been requested? Hackish... but useful... -- RobJ

See Also:
Constant Field Values (src)

AUTHUSER

public static final java.lang.String AUTHUSER
Place to store an AuthenticatedUser

See Also:
Constant Field Values (src)

CALL

public static final java.lang.String CALL
If on the client - this is the Call object

See Also:
Constant Field Values (src)

IS_MSG

public static final java.lang.String IS_MSG
Are we doing Msg vs RPC? - For Java Binding

See Also:
Constant Field Values (src)

ATTACHMENTS_DIR

public static final java.lang.String ATTACHMENTS_DIR
The directory where in coming attachments are created.

See Also:
Constant Field Values (src)

ACCEPTMISSINGPARAMS

public static final java.lang.String ACCEPTMISSINGPARAMS
A boolean param, to control whether we accept missing parameters as nulls or refuse to acknowledge them.

See Also:
Constant Field Values (src)

WSDLGEN_INTFNAMESPACE

public static final java.lang.String WSDLGEN_INTFNAMESPACE
The value of the property is used by service WSDL generation (aka ?WSDL) For the service's interface namespace if not set TRANS_URL property is used.

See Also:
Constant Field Values (src)

WSDLGEN_SERV_LOC_URL

public static final java.lang.String WSDLGEN_SERV_LOC_URL
The value of the property is used by service WSDL generation (aka ?WSDL) For the service's location if not set TRANS_URL property is used. (helps provide support through proxies.

See Also:
Constant Field Values (src)

WSDLGEN_RESOURCE

public static final java.lang.String WSDLGEN_RESOURCE
The value of the property is used by service WSDL generation (aka ?WSDL) If the wsdl documnet contains imports, this property is the relative path to the imported artifact.

See Also:
Constant Field Values (src)

HTTP_TRANSPORT_VERSION

public static final java.lang.String HTTP_TRANSPORT_VERSION
The value of the property is used by service WSDL generation (aka ?WSDL) Set this property to request a certain level of HTTP. The values MUST use org.jboss.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_10 for HTTP 1.0 The values MUST use org.jboss.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_11 for HTTP 1.1

See Also:
Constant Field Values (src)

SECURITY_PROVIDER

public static final java.lang.String SECURITY_PROVIDER
See Also:
Constant Field Values (src)
Constructor Detail

MessageContext

public MessageContext(AxisEngine (src)  engine)
Create a message context.

Parameters:
engine - the controlling axis engine. Null is actually accepted here, though passing a null engine in is strongly discouraged as many of the methods assume that it is in fact defined.
Method Detail

getOperation

public OperationDesc (src)  getOperation()
the current operation

Returns:
the current operation; may be null

setOperation

public void setOperation(OperationDesc (src)  operation)
set the current operation

Parameters:
operation -

getPossibleOperationsByQName

public OperationDesc (src) [] getPossibleOperationsByQName(QName (src)  qname)
                                             throws AxisFault (src) 
getPossibleOperationsByQName Returns a list of operation descriptors that could may possibly match a body containing an element of the given QName. For non-DOCUMENT, the list of operation descriptors that match the name is returned. For DOCUMENT, all the operations that have qname as a parameter are returned

Parameters:
qname - of the first element in the body
Returns:
list of operation descriptions
Throws:
AxisFault (src)

getOperationByQName

public OperationDesc (src)  getOperationByQName(QName (src)  qname)
                                  throws AxisFault (src) 
get the first possible operation that could match a body containing an element of the given QName. Sets the currentOperation field in the process; if that field is already set then its value is returned instead

Parameters:
qname - name of the message body
Returns:
an operation or null
Throws:
AxisFault (src)

getCurrentContext

public static MessageContext (src)  getCurrentContext()
Get the active message context.

Returns:
the current active message context

setTypeMappingRegistry

public void setTypeMappingRegistry(TypeMappingRegistry (src)  reg)
replace the engine's type mapping registry with a local one

Parameters:
reg -

getTypeMappingRegistry

public TypeMappingRegistry (src)  getTypeMappingRegistry()
Get the currently in-scope type mapping registry.

By default, will return a reference to the AxisEngine's TMR until someone sets our local one (usually as a result of setting the serviceHandler).

Returns:
the type mapping registry to use for this request.

getTypeMapping

public TypeMapping (src)  getTypeMapping()
Return the type mapping currently in scope for our encoding style


getTransportName

public java.lang.String getTransportName()
Transport


setTransportName

public void setTransportName(java.lang.String transportName)

getSOAPConstants

public SOAPConstants (src)  getSOAPConstants()
SOAP constants


setSOAPConstants

public void setSOAPConstants(SOAPConstants (src)  soapConstants)

getSchemaVersion

public SchemaVersion (src)  getSchemaVersion()
Schema version information


setSchemaVersion

public void setSchemaVersion(SchemaVersion (src)  schemaVersion)

getSession

public Session (src)  getSession()
Sessions


setSession

public void setSession(Session (src)  session)

isEncoded

public boolean isEncoded()
Encoding


setMaintainSession

public void setMaintainSession(boolean yesno)
Set whether we are maintaining session state

Parameters:
yesno - flag to set to true to maintain sessions

getMaintainSession

public boolean getMaintainSession()
Are we maintaining session state?


getRequestMessage

public Message (src)  getRequestMessage()
Get the request message.

Returns:
the request message (may be null).

setRequestMessage

public void setRequestMessage(Message (src)  reqMsg)
Set the request message, and make sure that message is associated with this MessageContext.

Parameters:
reqMsg - the new request Message.

getResponseMessage

public Message (src)  getResponseMessage()
Get the response message.

Returns:
the response message (may be null).

setResponseMessage

public void setResponseMessage(Message (src)  respMsg)
Set the response message, and make sure that message is associated with this MessageContext.

Parameters:
respMsg - the new response Message.

getCurrentMessage

public Message (src)  getCurrentMessage()
Return the current (i.e. request before the pivot, response after) message.


getMessage

public SOAPMessage (src)  getMessage()
Gets the SOAPMessage from this message context

Specified by:
getMessage in interface SOAPMessageContext (src)
Returns:
Returns the SOAPMessage; returns null if no request SOAPMessage is present in this SOAPMessageContext

setCurrentMessage

public void setCurrentMessage(Message (src)  curMsg)
Set the current (i.e. request before the pivot, response after) message.


setMessage

public void setMessage(SOAPMessage (src)  message)
Sets the SOAPMessage for this message context

Specified by:
setMessage in interface SOAPMessageContext (src)
Parameters:
message - Request SOAP message
Throws:
java.lang.UnsupportedOperationException - If this operation is not supported

getPastPivot

public boolean getPastPivot()
Determine when we've passed the pivot


setPastPivot

public void setPastPivot(boolean pastPivot)
Indicate when we've passed the pivot


setTimeout

public void setTimeout(int value)
Set timeout in our MessageContext.

Parameters:
value - the maximum amount of time, in milliseconds

getTimeout

public int getTimeout()
Get timeout from our MessageContext.

Returns:
value the maximum amount of time, in milliseconds

getClassLoader

public java.lang.ClassLoader getClassLoader()
get the classloader, implicitly binding to the thread context classloader if an override has not been supplied

Returns:

setClassLoader

public void setClassLoader(java.lang.ClassLoader cl)
set a new classloader

Parameters:
cl -

getTargetService

public java.lang.String getTargetService()

getAxisEngine

public AxisEngine (src)  getAxisEngine()
get the axis engine. Will be null if the message was created outside an engine

Returns:
the current axis engine

setTargetService

public void setTargetService(java.lang.String tServ)
                      throws AxisFault (src) 
Set the target service for this message.

This looks up the named service in the registry, and has the side effect of setting our TypeMappingRegistry to the service's.

Parameters:
tServ - the name of the target service.
Throws:
AxisFault (src)

getService

public SOAPService (src)  getService()

setService

public void setService(SOAPService (src)  sh)
                throws AxisFault (src) 
Throws:
AxisFault (src)

isClient

public boolean isClient()
Let us know whether this is the client or the server.


getStrProp

public java.lang.String getStrProp(java.lang.String propName)
Just a util so we don't have to cast the result


isPropertyTrue

public boolean isPropertyTrue(java.lang.String propName)
Tests to see if the named property is set in the 'bag'. If not there then 'false' is returned. If there, then... if its a Boolean, we'll return booleanValue() if its an Integer, we'll return 'false' if its '0' else 'true' if its a String, we'll return 'false' if its 'false' or '0' else 'true' All other types return 'true'


isPropertyTrue

public boolean isPropertyTrue(java.lang.String propName,
                              boolean defaultVal)
Tests to see if the named property is set in the 'bag'. If not there then 'defaultVal' will be returned. If there, then... if its a Boolean, we'll return booleanValue() if its an Integer, we'll return 'false' if its '0' else 'true' if its a String, we'll return 'false' if its 'false', 'no', or '0' - else 'true' All other types return 'true'


setProperty

public void setProperty(java.lang.String name,
                        java.lang.Object value)
Allows you to set a named property to the passed in value. There are a few known properties (like username, password, etc) that are variables in Call. The rest of the properties are stored in a Hashtable. These common properties should be accessed via the accessors for speed/type safety, but they may still be obtained via this method. It's up to one of the Handlers (or the Axis engine itself) to go looking for one of them.

Specified by:
setProperty in interface MessageContext (src)
Parameters:
name - Name of the property
value - Value of the property

containsProperty

public boolean containsProperty(java.lang.String name)
Returns true if the MessageContext contains a property with the specified name.

Specified by:
containsProperty in interface MessageContext (src)
Parameters:
name - Name of the property whose presense is to be tested
Returns:
Returns true if the MessageContext contains the property; otherwise false

getPropertyNames

public java.util.Iterator getPropertyNames()
Returns an Iterator view of the names of the properties in this MessageContext

Specified by:
getPropertyNames in interface MessageContext (src)
Returns:
Iterator for the property names

getProperty

public java.lang.Object getProperty(java.lang.String name)
Returns the value associated with the named property - or null if not defined/set.

Specified by:
getProperty in interface MessageContext (src)
Parameters:
name - Name of the property whose value is to be retrieved
Returns:
Object value of the property - or null

setPropertyParent

public void setPropertyParent(java.util.Hashtable parent)

setUsername

public void setUsername(java.lang.String username)
Set the username.


getUsername

public java.lang.String getUsername()
Get the user name


setPassword

public void setPassword(java.lang.String password)
Set the password.


getPassword

public java.lang.String getPassword()
Get the password


getOperationStyle

public Style (src)  getOperationStyle()
Get the operation style.


getOperationUse

public Use (src)  getOperationUse()
Get the operation use.


setUseSOAPAction

public void setUseSOAPAction(boolean useSOAPAction)
Should soapAction be used?


useSOAPAction

public boolean useSOAPAction()
Are we using soapAction?


setSOAPActionURI

public void setSOAPActionURI(java.lang.String SOAPActionURI)
                      throws java.lang.IllegalArgumentException
Set the soapAction URI.

Throws:
java.lang.IllegalArgumentException

getSOAPActionURI

public java.lang.String getSOAPActionURI()
Get the soapAction URI.


setEncodingStyle

public void setEncodingStyle(java.lang.String namespaceURI)
Sets the encoding style to the URI passed in.

Parameters:
namespaceURI - URI of the encoding to use.

getEncodingStyle

public java.lang.String getEncodingStyle()
Returns the encoding style as a URI that should be used for the SOAP message.

Returns:
String URI of the encoding style to use

removeProperty

public void removeProperty(java.lang.String propName)
Description copied from interface: MessageContext (src)
Removes a property (name-value pair) from the MessageContext

Specified by:
removeProperty in interface MessageContext (src)
Parameters:
propName - Name of the property to be removed

reset

public void reset()

isHighFidelity

public boolean isHighFidelity()

setHighFidelity

public void setHighFidelity(boolean highFidelity)

getRoles

public java.lang.String[] getRoles()
Not (yet) implemented method in the SOAPMessageContext interface

Gets the SOAP actor roles associated with an execution of the HandlerChain and its contained Handler instances. Note that SOAP actor roles apply to the SOAP node and are managed using HandlerChain.setRoles and HandlerChain.getRoles. Handler instances in the HandlerChain use this information about the SOAP actor roles to process the SOAP header blocks. Note that the SOAP actor roles are invariant during the processing of SOAP message through the HandlerChain.

Specified by:
getRoles in interface SOAPMessageContext (src)
Returns:
Array of URIs for SOAP actor roles
See Also:
HandlerChain.setRoles(java.lang.String[]), HandlerChain.getRoles()