blob: c90d115e4efe0ae41d5a00f2411c09c9a7a886e1 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004 Actuate Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Actuate Corporation - Initial implementation.
*****************************************************************************/
/**
* BirtCommunicationManager
* ...
*/
BirtCommunicationManager = Class.create( );
BirtCommunicationManager.prototype =
{
__active : false,
/**
* Initialization routine required by "ProtoType" lib.
*
* @return, void
*/
initialize: function( )
{
},
/**
* Make xml http request.
*
* return, void
*/
connect: function( )
{
var xmlDoc = birtSoapRequest.__xml_document;
if( xmlDoc )
{
debug( birtSoapRequest.prettyPrintXML(xmlDoc), true);
if ( BrowserUtility.isSafari || BrowserUtility.isFirefox3 )
{
// WORKAROUND: sending the XML DOM doesn't replace the
// ampersands properly but the XMLSerializer does.
xmlDoc = (new XMLSerializer()).serializeToString(xmlDoc);
}
}
if ( !birtSoapRequest.getURL( ) ) return;
//activate delay message manager;
this.__active = true;
birtProgressBar.__start( );
//workaround for Bugzilla Bug 144598. Add request header "Connection" as "keep-alive"
var myAjax = new Ajax.Request( birtSoapRequest.getURL( ), { method: 'post', postBody: xmlDoc,
onSuccess: this.responseHandler, onFailure: this.invalidResponseHandler,
requestHeaders: ['Content-Type', 'text/xml; charset=UTF-8', 'SOAPAction', '""', 'request-type', 'SOAP', 'Connection', 'keep-alive' ] } );
birtSoapRequest.reset( );
},
/**
* Callback function triggered when reponse is ready, status is 200.
*
* @request, httpXmlRequest instance
* @return, void
*/
responseHandler: function( request )
{
if ( isDebugging( ) )
{
debug(request.responseText, true);
debug(birtSoapRequest.prettyPrintXML(request.responseXML.documentElement), true);
}
if ( request.responseXML && request.responseXML.documentElement )
{
birtSoapResponse.process( request.responseXML.documentElement );
}
birtCommunicationManager.postProcess( );
//todo handle responseText
},
/**
* Callback function triggered when reponse is ready status is not 200.
* Process any http (non-200) errors. Note this is not exception from
* server side.
*
* @request, httpXmlRequest instance
* @return, void
*/
invalidResponseHandler: function( request )
{
debug("invalid response");
if ( request.responseXML && request.responseXML.documentElement )
{
birtSoapResponse.process( request.responseXML.documentElement );
}
birtCommunicationManager.postProcess( );
},
/**
* Post process after finish processing the response.
*
* @return, void
*/
postProcess: function( )
{
//deactivate delay message manager
birtProgressBar.__stop( );
this.__active = false;
}
}
var birtCommunicationManager = new BirtCommunicationManager( );