Sample Request Mapper - mapRequest
public MappedRequest mapRequest( java.lang.String servletClassName,
javax.servlet.http.HttpServletRequest request)
This stateless method translates a servlet classname and a URL into a MappedRequest object. Any RequestMapper class must attempt to execute this method as quickly as possible, because it lies directly in the path of the application server thread execution.
- Parameters:
- ServletClassName - the name of the ServletClass handling this request.
- request - the HttpServletRequest object for this request.
- Returns: An instance of MappedRequest indicating the DRS and CRS to be used by the ITCAM for Application Diagnostics system.
Request Mapper Example (1):
package com.cyanea.mapper;
public class MappedRequestExample implements MappedRequest {
private String CRS;
private String DRS;
/** Creates a new instance of MappedRequestExample */
public MappedRequestExample(String myCRS,String myDRS) {
CRS = myCRS;
DRS = myDRS;
}
public String getCRS() {
return CRS;
}
public String getDRS() {
return DRS;
}
}
Request Mapper Example (2):
package com.cyanea.mapper;
import javax.servlet.http.HttpServletRequest;
public class RequestMapperExample implements RequestMapper {
/** static MappedRequest instance for welcome page requests
*/
private static final MappedRequest welcomeRequest;
/** static MappedRequest instance for quote page requests
*/
private static final MappedRequest quoteRequest;
/** static MappedRequest instance for buy page requests
*/
private static final MappedRequest buyRequest;
/** static MappedRequest instance for sell page requests
*/
private static final MappedRequest sellRequest;
/** static MappedRequest instance for portfolio page requests
*/
private static final MappedRequest portfolioRequest;
/** static MappedRequest instance for account page requests
*/
private static final MappedRequest accountRequest;
/** static MappedRequest instance for update page requests
*/
private static final MappedRequest updateRequest;
/**
* Static class variables are used to avoid continuous object creation
* of redundant information on a per-client-request basis. An
* unsynchronized, read-only HashMap can also be used for looking up
* MappedRequest instances to gain a performance increase.
**/
static {
welcomeRequest = new MappedRequestExample("Welcome Page","welcome");
quoteRequest = new MappedRequestExample("quote","quote");
buyRequest = new MappedRequestExample("trade","buy");
sellRequest = new MappedRequestExample("trade","sell");
portfolioRequest = new MappedRequestExample("overview","portfolio");
accountRequest = new MappedRequestExample("account","account");
updateRequest = new MappedRequestExample("account","updateAccount");
}
/** Creates a new instance of RequestMapperExample */
public RequestMapperExample() {
}
/**
* This example checks the HttpServletRequest object for the GET or POST
* parameter "map". If the parameter "map" is not found, "action" is
* used. This "action" string, is then used to look up the corresponding
* MappedRequest object. If no MappedRequest object is found, a new
* object is created and returned. This should be avoided, as it can be
* an expensive operation.
*/
public MappedRequest mapRequest(String servletClassName,
HttpServletRequest request) {
String action = request.getParameter("map");
if ( action == null) {
action = request.getParameter("action");
if ( action == null )
return welcomeRequest;
}
/* A HashMap lookup could also be performed here instead of iterating
* a list of string comparisons. If a list of strings comparison are
* used, it is desirable to list the most common action first.
*/
if ( "quote".equals(action) )
return quoteRequest;
else if ( "buy".equals(action) )
return buyRequest;
else if( "sell".equals(action) )
return sellRequest;
else if( "portfolio".equals(action) )
return portfolioRequest;
else if( "account".equals(action) )
return accountRequest;
else if( "updateAccount".equals(action) )
return updateRequest;
else
return new MappedRequestExample(action,action);
}
}