com.ibm.commerce.programadapter
Class HttpProgramAdapterImpl

java.lang.Object
  |
  +--com.ibm.commerce.adapter.AbstractHttpAdapter
        |
        +--com.ibm.commerce.programadapter.HttpProgramAdapterImpl
All Implemented Interfaces:
DeviceFormatAdapter, HttpAdapter, HttpAdapterFactory

public class HttpProgramAdapterImpl
extends AbstractHttpAdapter
implements HttpAdapter, HttpAdapterFactory

The Program Adapter that handles http requests.


Field Summary
static java.lang.String _HTTP_CHARSET_CONSTANT
          The contanst use to determine the encoding of the request.
static java.lang.String _ICI_MESSAGE
          The parameter that will have the content of the message.
static java.lang.String _ICI_NEWINBOUND_COMMAND_NAME
          The name of the command to call if the request does not have a corresponding message mapper that can return a CommandProperty representation of the message.
static java.lang.String _STR_CreateAdapter
          Contstant representing the method name used for logging.
static java.lang.String _STR_GetData
          Contstant representing the method name used for logging.
static java.lang.String _STR_InitFactory
          Contstant representing the method name used for logging.
static java.lang.String _STR_IsSupportedConfigParameter
          Contstant representing the method name used for logging.
static java.lang.String _STR_PostInvokeCommand
          Contstant representing the method name used for logging.
static java.lang.String _STR_PreInvokeCommand
          Contstant representing the method name used for logging.
static java.lang.String _STR_PreprocessRequest
          Contstant representing the method name used for logging.
static java.lang.String _STR_ProcessErrorResponse
          Contstant representing the method name used for logging.
static java.lang.String _STR_ProcessResponse
          Contstant representing the method name used for logging.
static java.lang.String _STR_SetCommandProperties
          Contstant representing the method name used for logging.
static java.lang.String _STR_ThisClass
          Contstant representing the class name used for logging.
static java.lang.String _STR_ValidateDeviceFormat
          Contstant representing the method name used for logging.
protected  CommandProperty commandProperties
           
static java.lang.String COPYRIGHT
          IBM Copyright notice field.
 
Fields inherited from class com.ibm.commerce.adapter. AbstractHttpAdapter
desc, encoding, req, reqObj, requestProperties, resp, sessionContext
 
Fields inherited from interface com.ibm.commerce.adapter. HttpAdapter
DEVFMTID_BROWSER, DEVFMTNAME_BROWSER, DEVFMTNAME_IMODE, DEVFMTTYP_BROWSER, DEVFMTTYP_PVCDEVICE, DEVFMTTYP_XMLFMT, DEVFMTTYPID_BROWSER, DEVFMTTYPID_PVC, DEVFMTTYPID_XML
 
Constructor Summary
HttpProgramAdapterImpl()
          Creates an instance of the Program Adapter to handle HTTP requests.
 
Method Summary
 boolean checkDeviceFormat(javax.servlet.http.HttpServletRequest req, TypedProperty prop)
          Return true if the input request can be processed by this adapter.
  HttpAdapter createAdapter(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, TypedProperty param)
          This method returns an instance of this adapter if the request has the format defined by this adapter.
  CommandProperty getCommandProperties()
          Returns the CommandProperty object of the request.
 java.lang.Integer getDefaultDeviceFormatId()
          Returns the default device format identifier for this adapter.
 java.lang.Integer getDeviceFormatTypeId()
          Gets the identifier of the device format type for this adapter.
  SessionContext getSessionContext()
          Gets the session context.
 boolean httpsRedirection()
          Returns true if Https redirection is required.
 void initFactory(org.w3c.dom.Element node)
          Initialize the adapter based on the informtion defined in the node.
 void postInvokeCommand( CommandContext commandContext)
          This method implements adapter specific function after the execution of a command.
 boolean preInvokeCommand( CommandContext commandContext)
          This method implements adapter specific function before the execution of a command.
 HttpControllerRequestObject preprocessRequest()
          This method preprocess the request and returns a controller request object.
 boolean processErrorResponse( CommandContext commandContext, java.lang.Exception e)
          This method is called by the web controller when the execution of a request has failed.
 boolean processResponse( CommandContext commandContext, TypedProperty respProperty)
          This method is called by the web controller after it has successfully finished the execution of the request.
 void setCommandProperties( CommandProperty cmdProp)
          Sets the CommandProperties object.
  CommandProperty validateDeviceFormat(javax.servlet.http.HttpServletRequest req)
          Return a command property if there is a corresponding message mapper that can handle the request.
 
Methods inherited from class com.ibm.commerce.adapter. AbstractHttpAdapter
displayGenericErrorView, getAdapterDesc, getDeviceFormatId, getDeviceFormatName, getDeviceFormatType, getDocumentPathName, getRequest, getRequestName, getRequestProperties, getResponse, getUniqueIdentifier, httpRedirection, isDoubleClickHandlerEnabled, isEnabled, processRequest, setAdapterDesc, setDefaultDeviceFormatId, setDeviceFormatClass, setDeviceFormatId, setDeviceFormatName, setDeviceFormatType, setDeviceFormatTypeId, setRequest, setRequestProperties, setResponse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.commerce.adapter. HttpAdapter
getAdapterDesc, getRequest, getRequestName, getRequestProperties, getResponse, getUniqueIdentifier, isDoubleClickHandlerEnabled, processRequest, setAdapterDesc, setRequest, setRequestProperties, setResponse
 
Methods inherited from interface com.ibm.commerce.adapter. DeviceFormatAdapter
getDeviceFormatId, getDeviceFormatName, getDeviceFormatType, getDocumentPathName, setDefaultDeviceFormatId, setDeviceFormatId, setDeviceFormatName, setDeviceFormatType, setDeviceFormatTypeId
 
Methods inherited from interface com.ibm.commerce.adapter. HttpAdapterFactory
createAdapter, getAdapterDesc, isEnabled
 

Field Detail
public static final java.lang.String COPYRIGHT
IBM Copyright notice field.
See Also:
Constant Field Values

commandProperties

protected CommandProperty commandProperties

_ICI_NEWINBOUND_COMMAND_NAME

public static final java.lang.String _ICI_NEWINBOUND_COMMAND_NAME
The name of the command to call if the request does not have a corresponding message mapper that can return a CommandProperty representation of the message.
See Also:
Constant Field Values

_ICI_MESSAGE

public static final java.lang.String _ICI_MESSAGE
The parameter that will have the content of the message.
See Also:
Constant Field Values

_HTTP_CHARSET_CONSTANT

public static final java.lang.String _HTTP_CHARSET_CONSTANT
The contanst use to determine the encoding of the request.
See Also:
Constant Field Values

_STR_ThisClass

public static final java.lang.String _STR_ThisClass
Contstant representing the class name used for logging.
See Also:
Constant Field Values

_STR_ValidateDeviceFormat

public static final java.lang.String _STR_ValidateDeviceFormat
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_SetCommandProperties

public static final java.lang.String _STR_SetCommandProperties
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_ProcessResponse

public static final java.lang.String _STR_ProcessResponse
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_ProcessErrorResponse

public static final java.lang.String _STR_ProcessErrorResponse
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_PreprocessRequest

public static final java.lang.String _STR_PreprocessRequest
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_PreInvokeCommand

public static final java.lang.String _STR_PreInvokeCommand
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_PostInvokeCommand

public static final java.lang.String _STR_PostInvokeCommand
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_IsSupportedConfigParameter

public static final java.lang.String _STR_IsSupportedConfigParameter
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_InitFactory

public static final java.lang.String _STR_InitFactory
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_CreateAdapter

public static final java.lang.String _STR_CreateAdapter
Contstant representing the method name used for logging.
See Also:
Constant Field Values

_STR_GetData

public static final java.lang.String _STR_GetData
Contstant representing the method name used for logging.
See Also:
Constant Field Values
Constructor Detail

HttpProgramAdapterImpl

public HttpProgramAdapterImpl()
Creates an instance of the Program Adapter to handle HTTP requests.
Method Detail

checkDeviceFormat

public boolean checkDeviceFormat(javax.servlet.http.HttpServletRequest req,
TypedProperty prop)
Return true if the input request can be processed by this adapter. This method will always return false because the method used to check the request is validateDeviceFormat().
Specified by:
checkDeviceFormat in interface HttpAdapterFactory
Returns:
Always returns false.

createAdapter

public HttpAdapter createAdapter(javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response,
TypedProperty param)
This method returns an instance of this adapter if the request has the format defined by this adapter. This method should first call the validateDeviceFormat() method. If it returns a CommandProperty object, then it will instantiate an instance of this adapter. The adapter instance returned will be initialized with request, response and request properties initialized.
Parameters:
request - the HTTP request.
response - the HTTP response.
param - the request parameters
Returns:
An instance of this adapter if the request can be processed by this adapter or null if this request cannot be processed by this adapter

getCommandProperties

public CommandProperty getCommandProperties()
Returns the CommandProperty object of the request.
Returns:
The command properties of the request.

getDefaultDeviceFormatId

public java.lang.Integer getDefaultDeviceFormatId()
Returns the default device format identifier for this adapter.
Specified by:
getDefaultDeviceFormatId in interface DeviceFormatAdapter
Overrides:
getDefaultDeviceFormatId in class AbstractHttpAdapter
Returns:
The device format identifier.

getDeviceFormatTypeId

public java.lang.Integer getDeviceFormatTypeId()
Gets the identifier of the device format type for this adapter. This is the identifier of the message mapper added to the device format identifier of this adapter.
Specified by:
getDeviceFormatTypeId in interface DeviceFormatAdapter
Overrides:
getDeviceFormatTypeId in class AbstractHttpAdapter
Returns:
The identifier for the device format type.

getSessionContext

public SessionContext getSessionContext()
                                 throws ECException
Gets the session context.
Specified by:
getSessionContext in interface DeviceFormatAdapter
Returns:
The session context.
Throws:
ECException - if there is a problem obtaining the session context.

httpsRedirection

public boolean httpsRedirection()
Returns true if Https redirection is required. That is, if a requests comes in as Http but the command requires https, the request will be redirected to https.
Specified by:
httpsRedirection in interface HttpAdapter
Returns:
Always will return false.

initFactory

public void initFactory(org.w3c.dom.Element node)
                 throws java.lang.Exception
Initialize the adapter based on the informtion defined in the node. The initialization process is creating a descriptor for the adpater and passing the XML node to the descriptor for initialization.
Specified by:
initFactory in interface HttpAdapterFactory
Overrides:
initFactory in class AbstractHttpAdapter
Parameters:
node - the XML configuration for the adapter.
Throws:
java.lang.Exception - if there is a problem initializing.

postInvokeCommand

public void postInvokeCommand(CommandContext commandContext)
                       throws ECException
This method implements adapter specific function after the execution of a command.
Specified by:
postInvokeCommand in interface DeviceFormatAdapter
Parameters:
commandContext - CommandContext - the command context associated with the command.
Throws:
ECException

preInvokeCommand

public boolean preInvokeCommand(CommandContext commandContext)
                         throws ECException
This method implements adapter specific function before the execution of a command.
Specified by:
preInvokeCommand in interface DeviceFormatAdapter
Parameters:
commandContext - the command context associated with the command.
Returns:
Always will return true.
Throws:
ECException - should never happen because the method only returns true.

preprocessRequest

public HttpControllerRequestObject preprocessRequest()
This method preprocess the request and returns a controller request object.
Specified by:
preprocessRequest in interface HttpAdapter
Overrides:
preprocessRequest in class AbstractHttpAdapter
Returns:
A controller request object that represents the HTTP request.

processErrorResponse

public boolean processErrorResponse(CommandContext commandContext,
                                    java.lang.Exception e)
                             throws ECException
This method is called by the web controller when the execution of a request has failed. The web controller will execute the error view task associated with the exeception if this method returns true.
Specified by:
processErrorResponse in interface DeviceFormatAdapter
Overrides:
processErrorResponse in class AbstractHttpAdapter
Parameters:
commandContext - commandContext for the request.
Returns:
Whether the error response is necessary. It is only needed if the view can be found.
Throws:
ECException - if there is a problem determining whether a response is necessary.

processResponse

public boolean processResponse(CommandContext commandContext,
TypedProperty respProperty)
                        throws ECException
This method is called by the web controller after it has successfully finished the execution of the request. The web controller will execute the view task associated with the command if this method returns true.
Specified by:
processResponse in interface DeviceFormatAdapter
Overrides:
processResponse in class AbstractHttpAdapter
Parameters:
commandContext - the command context of the command.
Returns:
Whether a reponse for the request is necessary.
Throws:
ECException - if there is a problem determining whether a response is necessary.

setCommandProperties

public void setCommandProperties(CommandProperty cmdProp)
Sets the CommandProperties object. This also give the session context the opertunity to change the CommandProperty object if needed since the session context provides the session and security handling of the adapter.

validateDeviceFormat

public CommandProperty validateDeviceFormat(javax.servlet.http.HttpServletRequest req)
Return a command property if there is a corresponding message mapper that can handle the request. But before deciding to call a message mapper to decipher the message, there is some comparisions done against the request's context type, method and encoding to ensure that this request is something that should be handled by this adapter.
Returns:
An instance of CommandProperty if this request can be processed by this adapter or null if this request cannot be processed by this adapter