WIIConnector connector = null;
List<NameValuePair> reqHeaders = req.getRequestHeaders();
// MethodTimer mt = new MethodTimer( "com.draagon.wii.WIIKernel.processParameters" );
MethodTimer mt = new MethodTimer ( this, "processReqParams" );
// Get all the request parameters
for(WIIRequestHeaders f : req.getWIIRequestHeaders() ) {
// System.out.println( "getHeadereters: " + f.getClass().getName() );
f.processRequestHeaders( req, reqHeaders );
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Request Header class: " + f.getClass().getName() );
}
mt.done();
// Get the connector module
connector = req.getWIIConnector();
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Connector class: " + connector.getClass().getName() );
// Connect to the external system and retrieve the input stream
//mt = new MethodTimer( "com.draagon.wii.WIIKernel.connector.doRequest" );
mt = new MethodTimer( connector, "doRequest" ) ;
is = connector.doRequest( req, reqHeaders );
req.setExternalInputStream( is );
mt.done();
// Get the HTTP response headers
//mt = new MethodTimer( "com.draagon.wii.WIIKernel.connector.getResponse" );
mt = new MethodTimer( this, "getResponse" );
List<NameValuePair> retHeaders = connector.getResponseHeaders();
mt.done();
// Set the default for text/html
String content = connector.getContentType();
req.setExternalContentType( content );
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Content Type: " + content );
// Set the default for text/html
int code = connector.getStatusCode();
req.setExternalStatusCode( code );
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Status Code: " + code );
// Handle all the response headers
mt = new MethodTimer ( this, "processResHeaders" );
for( WIIResponseHeaders f : req.getWIIResponseHeaders() )
{
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Response Header class: " + f.getClass().getName() );
f.processResponseHeaders( req, res, retHeaders );
}
mt.done();
// Set the response headers
setHeaders( req, res, retHeaders );
// Add the header
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Adding header" );
if ( req.getTemplate() != null )
{
MethodTimer mt4 = new MethodTimer( req, "addHeader" );
req.getTemplate().addHeader( res );
res.flush();
mt4.done();
}
// Process the data
processData( req, res );
// Flush the processed data
res.flush();
// Add the footer
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Adding footer" );
if ( req.getTemplate() != null )
{
// Add the footer
MethodTimer mt4 = new MethodTimer( req, "addFooter" );
req.getTemplate().addFooter( res );
res.flush();
mt4.done();
}
if ( log.isDebugEnabled() )
log.debug( "(serviceExternal) Closing streams" );