You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/11/21 01:16:56 UTC
svn commit: r477429 -
/webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp
Author: nadiramra
Date: Mon Nov 20 16:16:55 2006
New Revision: 477429
URL: http://svn.apache.org/viewvc?view=rev&rev=477429
Log:
code formatting...
Modified:
webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp
Modified: webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp?view=diff&rev=477429&r1=477428&r2=477429
==============================================================================
--- webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp (original)
+++ webservices/axis/trunk/c/src/engine/server/ServerAxisEngine.cpp Mon Nov 20 16:16:55 2006
@@ -29,419 +29,396 @@
extern AXIS_CPP_NAMESPACE_PREFIX WSDDDeployment *g_pWSDDDeployment;
AXIS_CPP_NAMESPACE_START
-ServerAxisEngine::ServerAxisEngine ()
+ServerAxisEngine::
+ServerAxisEngine ()
{
m_pWebService = NULL;
}
-ServerAxisEngine::~ServerAxisEngine ()
+ServerAxisEngine::
+~ServerAxisEngine ()
{
}
-int
-ServerAxisEngine::process (SOAPTransport * pStream)
+int ServerAxisEngine::
+process (SOAPTransport * pStream)
{
int Status = 0;
int nSoapVersion;
try
{
- if (!pStream)
- {
- AXISTRACE1 ("transport is not set properly", CRITICAL);
- throw AxisConfigException (SERVER_CONFIG_TRANSPORT_CONF_FAILED);
- }
- string sSessionId = pStream->getSessionId ();
-
- /*
- * After this point we should return AXIS_SUCCESS. Otherwise the transport
- * layer may not send the response back (either soap fault or result).
- */
- do
- {
- /* populate MessageData with transport information */
- m_pMsgData->m_Protocol = pStream->getProtocol ();
-
- if (AXIS_SUCCESS != m_pDZ->setInputStream (pStream))
- {
- nSoapVersion = m_pDZ->getVersion ();
- nSoapVersion =
- (nSoapVersion ==
- VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
- m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
-
- const char *cService =
- pStream->getTransportProperty (SERVICE_URI);
- if (!cService)
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
- AxisString service = (cService == NULL) ? "" : cService;
-
- if (service.empty ())
- {
- nSoapVersion = m_pMsgData->m_pDZ->getVersion ();
- nSoapVersion =
- (nSoapVersion ==
- VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
- m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
- AXISTRACE1 ("CLIENT_SOAP_SOAP_ACTION_EMTPY", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_ACTION_EMTPY);
- break; // do .. while(0)
- }
- // if there are quotes remove them.
- if (service.find ('\"') != string::npos)
- {
- service = service.substr (1, service.length () - 2);
- }
-
- // get service description object from the WSDD Deployment object
- m_pService = g_pWSDDDeployment->getService (service.c_str ());
- if (!m_pService)
- {
- nSoapVersion = m_pMsgData->m_pDZ->getVersion ();
- nSoapVersion =
- (nSoapVersion ==
- VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
- m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
- AXISTRACE1 ("CLIENT_WSDD_SERVICE_NOT_FOUND", CRITICAL);
- throw AxisWsddException (CLIENT_WSDD_SERVICE_NOT_FOUND, service.c_str());
- break; // do .. while(0)
- }
-
- m_CurrentProviderType = m_pService->getProvider ();
- m_pSZ->setCurrentProviderType (m_CurrentProviderType);
- m_pDZ->setCurrentProviderType (m_CurrentProviderType);
- switch (m_CurrentProviderType)
- {
- case C_RPC_PROVIDER:
- case CPP_RPC_PROVIDER:
- m_pSZ->setStyle (RPC_ENCODED);
- m_pDZ->setStyle (RPC_ENCODED);
- break;
- case C_DOC_PROVIDER:
- case CPP_DOC_PROVIDER:
- m_pSZ->setStyle (DOC_LITERAL);
- m_pDZ->setStyle (DOC_LITERAL);
- break;
- case COM_PROVIDER:
- // TODO: ??
- break;
- default:;
- // TODO: ??
- }
-
- /* Check for stream version in the request and decide whether we support
- * it or not. If we do not support send a soapfault with version
- * mismatch.
- */
- nSoapVersion = m_pDZ->getVersion ();
- if (m_pDZ->getStatus () != AXIS_SUCCESS)
- {
- AXISTRACE1 ("CLIENT_SOAP_MESSAGE_INCOMPLETE", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_MESSAGE_INCOMPLETE);
- break; // do .. while(0)
- }
-
- if (nSoapVersion == VERSION_LAST) // version not supported
- {
- m_pSZ->setSoapVersion (SOAP_VER_1_2);
- AXISTRACE1 ("SOAP_VERSION_MISMATCH", CRITICAL);
- throw AxisSoapException (SOAP_VERSION_MISMATCH);
- break; // do .. while(0)
- }
-
- /* Set Soap version in the Serializer and the envelope */
- if (AXIS_SUCCESS !=
- m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion))
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
-
- /* Get the operation name from transport information Ex: from
- * SOAPAction header
- */
- if (AXIS_SUCCESS != m_pDZ->getHeader ())
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
- if (AXIS_SUCCESS != m_pDZ->getBody ())
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
-
- AxisString sOperation = m_pDZ->getMethodNameToInvoke ();
-
- if (sOperation.empty ())
- {
- AXISTRACE1 ("CLIENT_SOAP_NO_SOAP_METHOD", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_NO_SOAP_METHOD);
- break; // do .. while(0)
- }
- /* remove any quotes in the operation name */
- if (sOperation.rfind ('\"') != string::npos)
- {
- sOperation = sOperation.substr (0, sOperation.length () - 1);
- }
-
- AxisString operationToInvoke = sOperation;
-
- m_pMsgData->setOperationName (operationToInvoke.c_str ());
-
- if (m_pService->isAllowedMethod (operationToInvoke.c_str ()))
- {
- /* load actual web service handler */
- if (AXIS_SUCCESS !=
- g_pHandlerPool->getWebService (&m_pWebService, sSessionId,
- m_pService))
- {
- /* error : couldnot load web service */
- AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_SRV", CRITICAL);
- throw
- AxisEngineException
- (SERVER_ENGINE_COULD_NOT_LOAD_SRV);
- break; // do .. while(0)
- }
-
- /* Check whether the provider type in the wsdd matchs the service's
- * binding style
- */
- AXIS_BINDING_STYLE nBindingStyle = RPC_ENCODED;
- if (0 != m_pWebService->_functions)
- /* C service */
- {
- nBindingStyle = m_pWebService->_functions->
- getBindingStyle (m_pWebService->_object);
- }
- else if (0 != m_pWebService->_object)
- {
- nBindingStyle = ((WrapperClassHandler *)
- m_pWebService->_object)->
- getBindingStyle ();
- }
-
- if (m_pSZ->getStyle () != nBindingStyle)
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
- break; // do .. while(0)
- }
- }
- else
- {
- AXISTRACE1 ("CLIENT_WSDD_METHOD_NOT_ALLOWED", CRITICAL);
- throw AxisWsddException (CLIENT_WSDD_METHOD_NOT_ALLOWED);
- // Method is not an exposed allowed method
- break; // do .. while(0)
- }
-
- // Get Global and Transport Handlers
- if (AXIS_SUCCESS != (Status = initializeHandlers (sSessionId,
- pStream->
- getProtocol
- ())))
- {
- AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
- break; // do .. while(0)
- }
- // Get Service specific Handlers from the pool if configured any
- if (AXIS_SUCCESS !=
- (Status =
- g_pHandlerPool->getRequestFlowHandlerChain (&m_pSReqFChain,
- sSessionId,
- m_pService)))
- {
- AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
- break; // do .. while(0)
- }
-
- if (AXIS_SUCCESS != (Status =
- g_pHandlerPool->
- getResponseFlowHandlerChain (&m_pSResFChain,
- sSessionId,
- m_pService)))
- {
- AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
- break; // do .. while(0)
- }
-
- /*
- * Invoke all handlers including the webservice
- * in case of failure coresponding stream fault message will be set
- */
- Status = invoke (m_pMsgData);
- }
- while (0);
-
- if (AXIS_SUCCESS != m_pDZ->flushInputStream ())
- {
- AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
- }
- /*
- * Get any header blocks unprocessed (left) in the Deserializer and add them
- * to the Serializer
- * They may be headers targetted to next soap processors
- */
- HeaderBlock *pHderBlk = NULL;
- while (true)
- {
- /* Following function gets a header block from Deserializer irrespective
- * of any thing
- */
- pHderBlk = m_pDZ->getHeaderBlock ();
- /* Add it to the Serializer */
- if (pHderBlk)
- m_pSZ->addHeaderBlock (pHderBlk);
- else
- break;
- }
- m_pSZ->setOutputStream (pStream);
-
- // Pool back the handlers and services
- releaseHandlers (pStream);
- //todo
- /* An exception derived from exception which is not handled will be
- * handled here. You can call a method in AxisModule which may unload
- * the ServerAxisEngine from the webserver and report the error. You can
- * also write this in a logfile specific to axis.
- */
+ if (!pStream)
+ {
+ AXISTRACE1 ("transport is not set properly", CRITICAL);
+ throw AxisConfigException (SERVER_CONFIG_TRANSPORT_CONF_FAILED);
+ }
+ string sSessionId = pStream->getSessionId ();
+
+ /*
+ * After this point we should return AXIS_SUCCESS. Otherwise the transport
+ * layer may not send the response back (either soap fault or result).
+ */
+ do
+ {
+ /* populate MessageData with transport information */
+ m_pMsgData->m_Protocol = pStream->getProtocol ();
+
+ if (AXIS_SUCCESS != m_pDZ->setInputStream (pStream))
+ {
+ nSoapVersion = m_pDZ->getVersion ();
+ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
+ m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+
+ const char *cService = pStream->getTransportProperty (SERVICE_URI);
+ if (!cService)
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+ AxisString service = (cService == NULL) ? "" : cService;
+
+ if (service.empty ())
+ {
+ nSoapVersion = m_pMsgData->m_pDZ->getVersion ();
+ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
+ m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_ACTION_EMTPY", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_ACTION_EMTPY);
+ break; // do .. while(0)
+ }
+ // if there are quotes remove them.
+ if (service.find ('\"') != string::npos)
+ {
+ service = service.substr (1, service.length () - 2);
+ }
+
+ // get service description object from the WSDD Deployment object
+ m_pService = g_pWSDDDeployment->getService (service.c_str ());
+ if (!m_pService)
+ {
+ nSoapVersion = m_pMsgData->m_pDZ->getVersion ();
+ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion;
+ m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion);
+ AXISTRACE1 ("CLIENT_WSDD_SERVICE_NOT_FOUND", CRITICAL);
+ throw AxisWsddException (CLIENT_WSDD_SERVICE_NOT_FOUND, service.c_str());
+ break; // do .. while(0)
+ }
+
+ m_CurrentProviderType = m_pService->getProvider ();
+ m_pSZ->setCurrentProviderType (m_CurrentProviderType);
+ m_pDZ->setCurrentProviderType (m_CurrentProviderType);
+ switch (m_CurrentProviderType)
+ {
+ case C_RPC_PROVIDER:
+ case CPP_RPC_PROVIDER:
+ m_pSZ->setStyle (RPC_ENCODED);
+ m_pDZ->setStyle (RPC_ENCODED);
+ break;
+ case C_DOC_PROVIDER:
+ case CPP_DOC_PROVIDER:
+ m_pSZ->setStyle (DOC_LITERAL);
+ m_pDZ->setStyle (DOC_LITERAL);
+ break;
+ case COM_PROVIDER:
+ // TODO: ??
+ break;
+ default:;
+ // TODO: ??
+ }
+
+ /* Check for stream version in the request and decide whether we support
+ * it or not. If we do not support send a soapfault with version
+ * mismatch.
+ */
+ nSoapVersion = m_pDZ->getVersion ();
+ if (m_pDZ->getStatus () != AXIS_SUCCESS)
+ {
+ AXISTRACE1 ("CLIENT_SOAP_MESSAGE_INCOMPLETE", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_MESSAGE_INCOMPLETE);
+ break; // do .. while(0)
+ }
+
+ if (nSoapVersion == VERSION_LAST) // version not supported
+ {
+ m_pSZ->setSoapVersion (SOAP_VER_1_2);
+ AXISTRACE1 ("SOAP_VERSION_MISMATCH", CRITICAL);
+ throw AxisSoapException (SOAP_VERSION_MISMATCH);
+ break; // do .. while(0)
+ }
+
+ /* Set Soap version in the Serializer and the envelope */
+ if (AXIS_SUCCESS != m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion))
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+
+ /* Get the operation name from transport information Ex: from
+ * SOAPAction header
+ */
+ if (AXIS_SUCCESS != m_pDZ->getHeader ())
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+ if (AXIS_SUCCESS != m_pDZ->getBody ())
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+
+ AxisString sOperation = m_pDZ->getMethodNameToInvoke ();
+
+ if (sOperation.empty ())
+ {
+ AXISTRACE1 ("CLIENT_SOAP_NO_SOAP_METHOD", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_NO_SOAP_METHOD);
+ break; // do .. while(0)
+ }
+ /* remove any quotes in the operation name */
+ if (sOperation.rfind ('\"') != string::npos)
+ {
+ sOperation = sOperation.substr (0, sOperation.length () - 1);
+ }
+
+ AxisString operationToInvoke = sOperation;
+
+ m_pMsgData->setOperationName (operationToInvoke.c_str ());
+
+ if (m_pService->isAllowedMethod (operationToInvoke.c_str ()))
+ {
+ /* load actual web service handler */
+ if (AXIS_SUCCESS != g_pHandlerPool->getWebService (&m_pWebService, sSessionId, m_pService))
+ {
+ /* error : couldnot load web service */
+ AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_SRV", CRITICAL);
+ throw AxisEngineException(SERVER_ENGINE_COULD_NOT_LOAD_SRV);
+ break; // do .. while(0)
+ }
+
+ /* Check whether the provider type in the wsdd matchs the service's
+ * binding style
+ */
+ AXIS_BINDING_STYLE nBindingStyle = RPC_ENCODED;
+ if (0 != m_pWebService->_functions)
+ /* C service */
+ {
+ nBindingStyle = m_pWebService->_functions->getBindingStyle (m_pWebService->_object);
+ }
+ else if (0 != m_pWebService->_object)
+ {
+ nBindingStyle = ((WrapperClassHandler *)m_pWebService->_object)->getBindingStyle ();
+ }
+
+ if (m_pSZ->getStyle () != nBindingStyle)
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ throw AxisSoapException (CLIENT_SOAP_SOAP_CONTENT_ERROR);
+ break; // do .. while(0)
+ }
+ }
+ else
+ {
+ AXISTRACE1 ("CLIENT_WSDD_METHOD_NOT_ALLOWED", CRITICAL);
+ throw AxisWsddException (CLIENT_WSDD_METHOD_NOT_ALLOWED);
+ // Method is not an exposed allowed method
+ break; // do .. while(0)
+ }
+
+ // Get Global and Transport Handlers
+ if (AXIS_SUCCESS != (Status = initializeHandlers (sSessionId,pStream->getProtocol())))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
+ break; // do .. while(0)
+ }
+
+ // Get Service specific Handlers from the pool if configured any
+ if (AXIS_SUCCESS !=
+ (Status =
+ g_pHandlerPool->getRequestFlowHandlerChain (&m_pSReqFChain,sSessionId,m_pService)))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
+ break; // do .. while(0)
+ }
+
+ if (AXIS_SUCCESS != (Status =
+ g_pHandlerPool->getResponseFlowHandlerChain (&m_pSResFChain,sSessionId,m_pService)))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_COULD_NOT_LOAD_HDL);
+ break; // do .. while(0)
+ }
+
+ /*
+ * Invoke all handlers including the webservice
+ * in case of failure coresponding stream fault message will be set
+ */
+ Status = invoke (m_pMsgData);
+ }
+ while (0);
+
+ if (AXIS_SUCCESS != m_pDZ->flushInputStream ())
+ {
+ AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL);
+ }
+
+ /*
+ * Get any header blocks unprocessed (left) in the Deserializer and add them
+ * to the Serializer
+ * They may be headers targetted to next soap processors
+ */
+ HeaderBlock *pHderBlk = NULL;
+ while (true)
+ {
+ /* Following function gets a header block from Deserializer irrespective
+ * of any thing
+ */
+ pHderBlk = m_pDZ->getHeaderBlock ();
+ /* Add it to the Serializer */
+ if (pHderBlk)
+ m_pSZ->addHeaderBlock (pHderBlk);
+ else
+ break;
+ }
+ m_pSZ->setOutputStream (pStream);
+
+ // Pool back the handlers and services
+ releaseHandlers (pStream);
+
+ //todo
+ /* An exception derived from exception which is not handled will be
+ * handled here. You can call a method in AxisModule which may unload
+ * the ServerAxisEngine from the webserver and report the error. You can
+ * also write this in a logfile specific to axis.
+ */
}
catch (AxisException & e)
{
- /*
- * An exception which is not handled will be handled here.
- */
- int iExceptionCode = e.getExceptionCode ();
- //char* pcTempStr = (char*) e.what();
- //AXISTRACE2("Exception:", pcTempStr, CRITICAL);
- if (AXISC_SERVICE_THROWN_EXCEPTION == iExceptionCode)
- {
- /*Writes the SoapMessage in which soap body contains only Fault */
- m_pSZ->setOutputStream (pStream);
- releaseHandlers (pStream);
- return AXIS_SUCCESS; //Service created fault is written to the stream.
- //so return success.
- }
- else
- {
+ /*
+ * An exception which is not handled will be handled here.
+ */
+ int iExceptionCode = e.getExceptionCode ();
+ //char* pcTempStr = (char*) e.what();
+ //AXISTRACE2("Exception:", pcTempStr, CRITICAL);
+ if (AXISC_SERVICE_THROWN_EXCEPTION == iExceptionCode)
+ {
+ /*Writes the SoapMessage in which soap body contains only Fault */
+ m_pSZ->setOutputStream (pStream);
+ releaseHandlers (pStream);
+ return AXIS_SUCCESS; //Service created fault is written to the stream.
+ //so return success.
+ }
+ else
+ {
/* An exception has occurred inside Axis C++ engine.(not in a
- * webservice or handler). Later we handle this by coming back in here
+ * webservice or handler). Later we handle this by coming back in here
* and serialising the fault out
- */
- throw e;
+ */
+ throw e;
}
}
catch (exception& e)
{
- e = e;
- /* Handle standerd exceptions here */
+ e = e;
+ /* Handle standerd exceptions here */
AxisTrace::trace(e.what());
return SERVER_UNKNOWN_ERROR;
}
catch (...)
{
- return SERVER_UNKNOWN_ERROR;
+ return SERVER_UNKNOWN_ERROR;
}
return AXIS_SUCCESS;
}
-int
-ServerAxisEngine::invoke (MessageData * pMsg)
+int ServerAxisEngine::
+invoke (MessageData * pMsg)
{
- enum AE_LEVEL
- { AE_START = 1, AE_TRH, AE_GLH, AE_SERH, AE_SERV };
+ enum AE_LEVEL { AE_START = 1, AE_TRH, AE_GLH, AE_SERH, AE_SERV };
int Status = AXIS_FAIL;
int level = AE_START;
do
{
- // Invoke transport request handlers
- if (m_pTReqFChain)
- {
- if (AXIS_SUCCESS != (Status = m_pTReqFChain->invoke (pMsg)))
- {
- AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
- break; // do .. while (0)
- }
-
- }
- level++; // AE_TRH
- // Invoke global request handlers
- if (m_pGReqFChain)
- {
- if (AXIS_SUCCESS != (Status = m_pGReqFChain->invoke (pMsg)))
- {
- AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
- break; // do .. while (0)
- }
- }
- level++; // AE_GLH
- // Invoke service specific request handlers
- if (m_pSReqFChain)
- {
- if (AXIS_SUCCESS != (Status = m_pSReqFChain->invoke (pMsg)))
- {
- AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
- break; // do .. while (0)
- }
- }
- level++; // AE_SERH
- /*
- * Before processing the soap body check whether there is any header
- * blocks with mustUnderstand attribute left unprocessed in the
- * Deserializer. If so return a soap fault.
- */
- if (m_pDZ->isAnyMustUnderstandHeadersLeft ())
- {
- AXISTRACE1 ("SOAP_MUSTUNDERSTAND", CRITICAL);
- throw AxisSoapException (SOAP_MUST_UNDERSTAND);
- break; // do .. while (0)
- }
- // Call actual web service handler
- if (m_pWebService)
- {
- if (0 != m_pWebService->_functions)
- /* C web service */
- {
- // Disable C support
- //IMessageData_C cMC = { 0, 0 };
- //cMC._object = pMsg;
- //cMC._functions = &IMessageData::ms_VFtable;
- //Status = m_pWebService->_functions->invoke (m_pWebService->
- // _object, &cMC);
- }
- else if (0 != m_pWebService->_object)
- {
- Status = ((WrapperClassHandler *) m_pWebService->_object)->
- invoke (pMsg);
- }
- else
- Status = AXIS_FAIL;
- if (AXIS_SUCCESS != Status)
- {
- AXISTRACE1 ("SERVER_ENGINE_WEBSERVICEFAILED", CRITICAL);
- throw AxisEngineException (SERVER_ENGINE_WEBSERVICE_FAILED);
- break;
- }
- }
- level++; // AE_SERV
+ // Invoke transport request handlers
+ if (m_pTReqFChain)
+ if (AXIS_SUCCESS != (Status = m_pTReqFChain->invoke (pMsg)))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
+ break; // do .. while (0)
+ }
+
+ level++; // AE_TRH
+ // Invoke global request handlers
+ if (m_pGReqFChain)
+ if (AXIS_SUCCESS != (Status = m_pGReqFChain->invoke (pMsg)))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
+ break; // do .. while (0)
+ }
+
+ level++; // AE_GLH
+ // Invoke service specific request handlers
+ if (m_pSReqFChain)
+ if (AXIS_SUCCESS != (Status = m_pSReqFChain->invoke (pMsg)))
+ {
+ AXISTRACE1 ("SERVER_ENGINE_HANDLER_FAILED", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_HANDLER_FAILED);
+ break; // do .. while (0)
+ }
+
+ level++; // AE_SERH
+
+ /*
+ * Before processing the soap body check whether there is any header
+ * blocks with mustUnderstand attribute left unprocessed in the
+ * Deserializer. If so return a soap fault.
+ */
+ if (m_pDZ->isAnyMustUnderstandHeadersLeft ())
+ {
+ AXISTRACE1 ("SOAP_MUSTUNDERSTAND", CRITICAL);
+ throw AxisSoapException (SOAP_MUST_UNDERSTAND);
+ break; // do .. while (0)
+ }
+
+ // Call actual web service handler
+ if (m_pWebService)
+ {
+ if (0 != m_pWebService->_functions)
+ /* C web service */
+ {
+ // Disable C support
+ //IMessageData_C cMC = { 0, 0 };
+ //cMC._object = pMsg;
+ //cMC._functions = &IMessageData::ms_VFtable;
+ //Status = m_pWebService->_functions->invoke (m_pWebService->
+ // _object, &cMC);
+ }
+ else if (0 != m_pWebService->_object)
+ Status = ((WrapperClassHandler *) m_pWebService->_object)->invoke (pMsg);
+ else
+ Status = AXIS_FAIL;
+
+ if (AXIS_SUCCESS != Status)
+ {
+ AXISTRACE1 ("SERVER_ENGINE_WEBSERVICEFAILED", CRITICAL);
+ throw AxisEngineException (SERVER_ENGINE_WEBSERVICE_FAILED);
+ break;
+ }
+ }
+ level++; // AE_SERV
}
while (0);
@@ -456,42 +433,36 @@
*/
switch (level)
{
- case AE_SERV: // Everything Success.
- Status = AXIS_SUCCESS;
- // no break;
- case AE_SERH: // Actual web service handler has failed
- // Invoke web service specific response handlers
- if (m_pSResFChain)
- {
- m_pSResFChain->invoke (pMsg);
- }
- // no break;
- case AE_GLH: // web service specific handlers have failed
- // invoke global response handlers
- if (m_pGResFChain)
- {
- m_pGResFChain->invoke (pMsg);
- }
- // no break;
- case AE_TRH: // Global handlers have failed
- if (m_pTResFChain)
- {
- m_pTResFChain->invoke (pMsg);
- }
- // no break;
- case AE_START:; // Transport handlers have failed
+ case AE_SERV: // Everything Success.
+ Status = AXIS_SUCCESS;
+ // no break;
+ case AE_SERH: // Actual web service handler has failed
+ // Invoke web service specific response handlers
+ if (m_pSResFChain)
+ m_pSResFChain->invoke (pMsg);
+ // no break;
+ case AE_GLH: // web service specific handlers have failed
+ // invoke global response handlers
+ if (m_pGResFChain)
+ m_pGResFChain->invoke (pMsg);
+ // no break;
+ case AE_TRH: // Global handlers have failed
+ if (m_pTResFChain)
+ m_pTResFChain->invoke (pMsg);
+ // no break;
+ case AE_START:; // Transport handlers have failed
};
+
return Status;
}
-void
-ServerAxisEngine::onFault (MessageData * pMsg)
+void ServerAxisEngine::
+onFault (MessageData * pMsg)
{
}
-int
-ServerAxisEngine::setFaultOutputStream (int iFaultCode,
- SOAPTransport * pStream)
+int ServerAxisEngine::
+setFaultOutputStream (int iFaultCode, SOAPTransport * pStream)
{
AxisMessage objMessage;
string sMessage = objMessage.getMessage (iFaultCode);
@@ -503,9 +474,8 @@
return AXIS_SUCCESS;
}
-int
-ServerAxisEngine::setFaultOutputStream (AxisException iFault,
- SOAPTransport * pStream)
+int ServerAxisEngine::
+setFaultOutputStream (AxisException iFault, SOAPTransport * pStream)
{
SoapFault *pObjSoapFault = SoapFault::getSoapFault (iFault.getExceptionCode());
pObjSoapFault->setFaultDetail (iFault.what());
@@ -515,22 +485,23 @@
return AXIS_SUCCESS;
}
-int
-ServerAxisEngine::releaseHandlers (SOAPTransport * pStream)
+int ServerAxisEngine::
+releaseHandlers (SOAPTransport * pStream)
{
string sSessionId = pStream->getSessionId ();
// Pool back the Service specific handlers
if (m_pSReqFChain)
- g_pHandlerPool->poolHandlerChain (m_pSReqFChain, sSessionId);
+ g_pHandlerPool->poolHandlerChain (m_pSReqFChain, sSessionId);
+
if (m_pSResFChain)
- g_pHandlerPool->poolHandlerChain (m_pSResFChain, sSessionId);
+ g_pHandlerPool->poolHandlerChain (m_pSResFChain, sSessionId);
+
/* Pool back the Global and Transport handlers
* UnInitializeHandlers(sSessionId, stream->trtype);
* Pool back the webservice
*/
if (m_pWebService)
- g_pHandlerPool->poolWebService (sSessionId, m_pWebService,
- m_pService);
+ g_pHandlerPool->poolWebService (sSessionId, m_pWebService, m_pService);
return AXIS_SUCCESS;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org