You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2008/11/13 23:13:25 UTC
svn commit: r713841 [5/5] - in /webservices/axis/trunk/c/src: cbindings/
common/ engine/ engine/client/ engine/server/ platforms/aix/
platforms/hp-ux/ platforms/os400/ platforms/unix/ platforms/windows/
server/simple_axis_server/ soap/ transport/ trans...
Modified: webservices/axis/trunk/c/src/transport/SOAPTransport.h
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/SOAPTransport.h?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/SOAPTransport.h (original)
+++ webservices/axis/trunk/c/src/transport/SOAPTransport.h Thu Nov 13 14:13:23 2008
@@ -532,6 +532,13 @@
*/
virtual bool isThereResponseData() {return false;}
+ /**
+ * Enable trace.
+ * @param logFilePath path to log file.
+ * @param filters log filters. See common/AxisTrace.h.
+ */
+ virtual void enableTrace(const char* logFilePath, const char *filters) { }
+
/**
* Sets the username to be used for basic authentication
*/
Modified: webservices/axis/trunk/c/src/transport/axis3/ChannelFactory.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/ChannelFactory.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/ChannelFactory.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/ChannelFactory.cpp Thu Nov 13 14:13:23 2008
@@ -60,6 +60,8 @@
IChannel * ChannelFactory::
LoadChannelLibrary( g_ChannelType eChannelType, const char * pcLibraryName)
{
+ logEntryEngine("ChannelFactory::LoadChannelLibrary")
+
DLHandler sLibHandler;
IChannel * pChannel = NULL;
int iLibCount = (int) eChannelType;
@@ -68,6 +70,8 @@
if( m_pLibName[iLibCount] == NULL ||
strcmp( pcLibraryName, m_pLibName[iLibCount]) != 0)
{
+ logDebugArg1("Loading transport %s", pcLibraryName)
+
sLibHandler = PLATFORM_LOADLIB( pcLibraryName);
if( !sLibHandler)
@@ -76,6 +80,8 @@
string sFullMessage = "Failed to load transport channel library " +
string(pcLibraryName) + ". " + PLATFORM_LOADLIB_ERROR;
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_CHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_CHANNEL_FAILED, sFullMessage.c_str());
}
else
@@ -98,25 +104,18 @@
if( eChannelType == UnsecureChannel)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_CHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_CHANNEL_FAILED, sFullMessage.c_str());
}
else
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED, sFullMessage.c_str());
}
}
-#ifdef ENABLE_AXISTRACE
-// Load function to do lib level inits
- void (*initializeLibrary) (AxisTraceEntrypoints*);
- initializeLibrary = (void (*)(AxisTraceEntrypoints*))PLATFORM_GETPROCADDR(sLibHandler, "initializeLibrary");
-
- if( initializeLibrary)
- {
- (*initializeLibrary) (AxisTrace::getTraceEntrypoints());
- }
-#endif
-
// Additional code added to that when the user wants to load a different
// library from that which is already loaded, it will now allow the change.
UnLoadChannelLibrary(eChannelType);
@@ -132,18 +131,25 @@
{
sCreate( &pChannel);
m_pChannel[iLibCount] = pChannel;
+
+ if (AxisTrace::isTransportLoggingEnabled())
+ pChannel->enableTrace(AxisTrace::getLogFilePath().c_str(), AxisTrace::getLogFilter().c_str());
}
}
}
else
pChannel = m_pChannel[iLibCount];
+ logExitWithPointer(pChannel)
+
return pChannel;
}
bool ChannelFactory::
UnLoadChannelLibrary( g_ChannelType eChannelType)
{
+ logEntryEngine("ChannelFactory::UnLoadChannelLibrary")
+
bool bSuccess = false;
int iLibIndex = (int) eChannelType;
@@ -182,6 +188,8 @@
bSuccess = true;
}
+ logExitWithBoolean(bSuccess)
+
return bSuccess;
}
@@ -195,6 +203,8 @@
void ChannelFactory::
preloadChannel(g_ChannelType type, const char *pcLibraryName)
{
+ logEntryEngine("ChannelFactory::preloadChannel")
+
int iLibCount = (int)type;
ChannelLibrary *pCh = new ChannelLibrary();
@@ -207,6 +217,8 @@
delete pCh;
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_CHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_CHANNEL_FAILED, sFullMessage.c_str());
}
@@ -227,42 +239,49 @@
if( type == UnsecureChannel)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_CHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_CHANNEL_FAILED, sFullMessage.c_str());
}
else
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED", sFullMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED, sFullMessage.c_str());
}
}
-#ifdef ENABLE_AXISTRACE
- // Load function to do lib level inits
- void (*initializeLibrary) (AxisTraceEntrypoints*);
- initializeLibrary = (void (*)(AxisTraceEntrypoints*))PLATFORM_GETPROCADDR(pCh->m_Library, "initializeLibrary");
- if( initializeLibrary)
- {
- (*initializeLibrary) (AxisTrace::getTraceEntrypoints());
- }
-#endif
m_ChannelLibrary[iLibCount] = pCh;
+
+ logExit()
}
IChannel *ChannelFactory::
createChannel(g_ChannelType type)
{
+ logEntryEngine("ChannelFactory::createChannel")
+
int iLibCount = (int)type;
IChannel *pChannel = NULL;
if (m_ChannelLibrary[iLibCount])
{
m_ChannelLibrary[iLibCount]->m_Create(&pChannel);
m_pChannel[iLibCount] = pChannel;
+
+ if (AxisTrace::isTransportLoggingEnabled())
+ pChannel->enableTrace(AxisTrace::getLogFilePath().c_str(), AxisTrace::getLogFilter().c_str());
}
+
+ logExitWithPointer(pChannel)
+
return pChannel;
}
void ChannelFactory::
unloadChannels()
{
+ logEntryEngine("ChannelFactory::unloadChannels")
+
for (int i=0; i<(int)MaxChannelCount; i++)
{
if (m_ChannelLibrary[i])
@@ -272,6 +291,8 @@
m_ChannelLibrary[i] = NULL;
}
}
+
+ logExit()
}
AXIS_CPP_NAMESPACE_END
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.cpp Thu Nov 13 14:13:23 2008
@@ -29,6 +29,8 @@
HTTPChannel::
HTTPChannel()
{
+ logEntryTransport("HTTPChannel::HTTPChannel")
+
m_LastError = "No Errors";
m_Sock = INVALID_SOCKET;
@@ -47,8 +49,12 @@
if( !StartSockets())
{
+ logThrowException("HTTPTransportException - SERVER_TRANSPORT_CHANNEL_INIT_ERROR")
+
throw HTTPTransportException( SERVER_TRANSPORT_CHANNEL_INIT_ERROR);
}
+
+ logExit()
}
/**
@@ -61,8 +67,12 @@
HTTPChannel::
~HTTPChannel()
{
+ logEntryTransport("HTTPChannel::~HTTPChannel")
+
CloseChannel();
StopSockets();
+
+ logExit()
}
/**
@@ -90,7 +100,11 @@
void HTTPChannel::
setURL( const char * cpURL)
{
+ logEntryTransport("HTTPChannel::setURL")
+
m_URL.setURL( cpURL);
+
+ logExit()
}
/**
@@ -122,6 +136,8 @@
bool HTTPChannel::
open() throw (HTTPTransportException&)
{
+ logEntryTransport("HTTPChannel::open")
+
bool bSuccess = (bool) AXIS_FAIL;
CloseChannel();
@@ -130,9 +146,13 @@
if( (bSuccess = OpenChannel()) != AXIS_SUCCESS)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_SOCKET_CONNECT_ERROR", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_SOCKET_CONNECT_ERROR, m_LastError.c_str());
}
+ logExit()
+
return bSuccess;
}
@@ -148,7 +168,12 @@
bool HTTPChannel::
close()
{
+ logEntryTransport("HTTPChannel::close")
+
CloseChannel();
+
+ logExit()
+
return AXIS_SUCCESS;
}
@@ -184,9 +209,14 @@
int HTTPChannel::
readBytes(char *buf, int bufLen)
{
+ logEntryTransport("HTTPChannel::readBytes")
+
if (INVALID_SOCKET == m_Sock)
{
m_LastError = "Unable to perform read operation.";
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_INVALID_SOCKET", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_INVALID_SOCKET, m_LastError.c_str());
}
@@ -201,12 +231,17 @@
// Handle timeout outcome
if( iTimeoutStatus < 0)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_TIMEOUT_EXCEPTION", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_TIMEOUT_EXCEPTION, m_LastError.c_str());
}
if( iTimeoutStatus == 0)
{
m_LastError = "Read operation timed-out while waiting for data.";
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_TIMEOUT_EXPIRED", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_TIMEOUT_EXPIRED, m_LastError.c_str() );
}
}
@@ -221,16 +256,24 @@
if( !bNoExceptionOnForceClose)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_INPUT_STREAMING_ERROR", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_INPUT_STREAMING_ERROR, m_LastError.c_str());
}
}
else if ( 0 == nByteRecv )
{
+ logDebug("Read-side of socket has been closed.")
+
// read-side of socket is closed.
}
else if( nByteRecv)
buf[nByteRecv] = '\0';
+ logDebugBuffer(buf, nByteRecv)
+
+ logExitWithInteger(nByteRecv)
+
return nByteRecv;
}
@@ -248,9 +291,16 @@
int HTTPChannel::
writeBytes(const char *buf, int numBytes)
{
+ logEntryTransport("HTTPChannel::writeBytes")
+
+ logDebugBuffer(buf, numBytes)
+
if( INVALID_SOCKET == m_Sock)
{
m_LastError = "No valid socket to perform write operation.";
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_INVALID_SOCKET", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_INVALID_SOCKET, m_LastError.c_str());
}
@@ -268,9 +318,13 @@
// Close the channel and throw an exception.
CloseChannel();
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_OUTPUT_STREAMING_ERROR", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_OUTPUT_STREAMING_ERROR, m_LastError.c_str());
}
+ logExitWithInteger(nByteSent)
+
return nByteSent;
}
@@ -285,7 +339,11 @@
void HTTPChannel::
setTimeout( long lSeconds)
{
+ logEntryTransport("HTTPChannel::setTimeout")
+
m_lTimeoutSeconds = lSeconds;
+
+ logExit()
}
/**
@@ -368,9 +426,13 @@
void HTTPChannel::
setProxy( const char * pcProxyHost, unsigned int uiProxyPort)
{
+ logEntryTransport("HTTPChannel::setProxy")
+
m_strProxyHost = pcProxyHost;
m_uiProxyPort = uiProxyPort;
m_bUseProxy = true;
+
+ logExit()
}
// +--------------------------------------------------------------------------+
@@ -390,6 +452,8 @@
bool HTTPChannel::
OpenChannel()
{
+ logEntryTransport("HTTPChannel::OpenChannel")
+
// This method is common to all channel implementations
bool bSuccess = (bool) AXIS_FAIL;
@@ -422,6 +486,9 @@
if( getaddrinfo( pszHost, szPort, &aiHints, &paiAddrInfo0))
{
m_LastError = "Unable to get address information.";
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_SOCKET_CREATE_ERROR", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_SOCKET_CREATE_ERROR, m_LastError.c_str());
}
@@ -449,6 +516,8 @@
m_LastError = fullMessage;
+ logThrowExceptionWithData("HTTPTransportException - CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED", m_LastError.c_str())
+
throw HTTPTransportException( CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED, m_LastError.c_str());
}
@@ -462,6 +531,9 @@
{
ReportError();
CloseChannel();
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_SOCKET_CREATE_ERROR", m_LastError.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_SOCKET_CREATE_ERROR, m_LastError.c_str());
}
@@ -471,6 +543,9 @@
if( (m_Sock = socket( PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
ReportError();
+
+ logExitWithBoolean(bSuccess)
+
return bSuccess;
}
@@ -487,6 +562,9 @@
{
ReportError();
CloseChannel();
+
+ logExitWithBoolean(bSuccess)
+
return bSuccess;
}
@@ -548,6 +626,8 @@
m_LastError = fullMessage;
+ logExitWithBoolean(bSuccess)
+
return bSuccess;
}
else
@@ -568,6 +648,8 @@
int one = 1;
setsockopt( m_Sock, IPPROTO_TCP, TCP_NODELAY, (char *) &one, sizeof( int));
+ logExitWithBoolean(bSuccess)
+
return bSuccess;
}
@@ -583,6 +665,8 @@
void HTTPChannel::
CloseChannel()
{
+ logEntryTransport("HTTPChannel::CloseChannel")
+
if( INVALID_SOCKET != m_Sock)
{
#ifdef WIN32
@@ -592,6 +676,8 @@
#endif
m_Sock = INVALID_SOCKET;
}
+
+ logExit()
}
/**
@@ -680,6 +766,8 @@
int HTTPChannel::
applyTimeout()
{
+ logEntryTransport("HTTPChannel::applyTimeout")
+
fd_set set;
struct timeval timeout;
@@ -697,6 +785,8 @@
if (rc < 0)
ReportError();
+ logExitWithReturnCode(rc)
+
return rc;
}
@@ -714,3 +804,10 @@
{
bNoExceptionOnForceClose = bNoExceptionOnForceClose_Update;
}
+
+void HTTPChannel::
+enableTrace(const char* logFilePath, const char *filters)
+{
+ AxisTrace::setLogFilter(filters);
+ AxisTrace::startTrace(logFilePath, false);
+}
\ No newline at end of file
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.hpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.hpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.hpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannel.hpp Thu Nov 13 14:13:23 2008
@@ -82,6 +82,8 @@
void setProxy( const char * pcProxyHost, unsigned int uiProxyPort);
bool reopenRequired() { return (INVALID_SOCKET == m_Sock); }
void closeQuietly( bool bNoExceptionOnForceClose);
+ void enableTrace(const char* logFilePath, const char *filters);
+
protected:
bool OpenChannel();
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannelInstantiator.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannelInstantiator.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannelInstantiator.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPChannel/HTTPChannelInstantiator.cpp Thu Nov 13 14:13:23 2008
@@ -19,10 +19,6 @@
// !!! Must be first thing in file !!!
#include "../../../platforms/PlatformAutoSense.hpp"
-#ifndef AXISTRACE_LIBRARY_MAINENTRYPOINT
-#define AXISTRACE_LIBRARY_MAINENTRYPOINT
-#endif
-
#include "../../../common/AxisTrace.h"
#include "HTTPChannel.hpp"
@@ -63,12 +59,9 @@
/* initializeLibrary() Is a C interface.
*/
- STORAGE_CLASS_INFO void initializeLibrary (AxisTraceEntrypoints* ep)
+ STORAGE_CLASS_INFO void initializeLibrary (void)
{
- // Do init actions
-#ifdef ENABLE_AXISTRACE
- AxisTrace::setTraceEntrypoints(ep);
-#endif
+ // Do init actions
}
/* uninitializeLibrary() Is a C interface.
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPSSLChannel/HTTPSSLChannelInstantiator.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPSSLChannel/HTTPSSLChannelInstantiator.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPSSLChannel/HTTPSSLChannelInstantiator.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPSSLChannel/HTTPSSLChannelInstantiator.cpp Thu Nov 13 14:13:23 2008
@@ -23,10 +23,6 @@
// !!! Must be first thing in file !!!
#include "../../../platforms/PlatformAutoSense.hpp"
-#ifndef AXISTRACE_LIBRARY_MAINENTRYPOINT
-#define AXISTRACE_LIBRARY_MAINENTRYPOINT
-#endif
-
#include "../../../common/AxisTrace.h"
#include "HTTPSSLChannel.hpp"
@@ -67,12 +63,9 @@
/* initializeLibrary() Is a C interface.
*/
- STORAGE_CLASS_INFO void initializeLibrary (AxisTraceEntrypoints* ep)
+ STORAGE_CLASS_INFO void initializeLibrary (void)
{
// Do init actions
-#ifdef ENABLE_AXISTRACE
- AxisTrace::setTraceEntrypoints(ep);
-#endif
}
/* uninitializeLibrary() Is a C interface.
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp Thu Nov 13 14:13:23 2008
@@ -71,7 +71,8 @@
/*
* HTTPTransport constuctor
*/
-HTTPTransport::HTTPTransport ():
+HTTPTransport::
+HTTPTransport ():
m_bReopenConnection (false),
m_strHTTPProtocol ("HTTP/1.1"),
m_strHTTPMethod ("POST"),
@@ -80,6 +81,8 @@
m_bUseProxy (false),
m_bMaintainSession (false)
{
+ logEntryTransport("HTTPTransport::HTTPTransport")
+
m_pcEndpointUri = NULL;
m_pReleaseBufferCallback = 0;
m_eProtocolType = APTHTTP1_1;
@@ -104,6 +107,8 @@
m_pSecureChannel = m_pChannelFactory->createChannel(SecureChannel);
resetInputStateMachine();
+
+ logExit()
}
/*
@@ -112,14 +117,20 @@
HTTPTransport::
~HTTPTransport()
{
+ logEntryTransport("HTTPTransport::~HTTPTransport")
+
delete [] m_pcEndpointUri;
delete m_pChannelFactory; // should also destroy channels
delete [] m_pszRxBuffer;
+
+ logExit()
}
void HTTPTransport::
resetInputStateMachine()
{
+ logEntryTransport("HTTPTransport::resetInputStateMachine")
+
m_GetBytesState = eWaitingForHTTPHeader;
m_strReceived.erase();
@@ -128,6 +139,8 @@
m_iNextChunkedDataSize = 0;
m_iContentLength = 0;
m_bMimeTrue = false;
+
+ logExit()
}
/*
@@ -141,9 +154,17 @@
void HTTPTransport::
setEndpointUri( const char * pcEndpointUri) throw (HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::setEndpointUri")
+
+ logDebugArg1("Endpoint is %s", pcEndpointUri ? pcEndpointUri : "NULL")
+
// if URI not valid, return
if (!pcEndpointUri || strlen(pcEndpointUri) < strlen("http://") )
- return;
+ {
+ logExit()
+
+ return;
+ }
// Does the new URI equal the existing channel URI?
// If there is a new URI, then connection will be closed and a secure or unsecure channel
@@ -169,7 +190,11 @@
}
if( !m_bChannelSecure)
+ {
+ logThrowException("HTTPTransportException - CLIENT_TRANSPORT_HAS_NO_SECURE_TRANSPORT_LAYER")
+
throw HTTPTransportException( CLIENT_TRANSPORT_HAS_NO_SECURE_TRANSPORT_LAYER);
+ }
}
else if (m_bChannelSecure)
{
@@ -182,7 +207,11 @@
}
if( m_bChannelSecure)
+ {
+ logThrowException("HTTPTransportException - CLIENT_TRANSPORT_HAS_NO_UNSECURE_TRANSPORT_LAYER")
+
throw HTTPTransportException( CLIENT_TRANSPORT_HAS_NO_UNSECURE_TRANSPORT_LAYER);
+ }
}
}
@@ -191,6 +220,8 @@
// the channel is sure to have the correct timeout value next time the channel is read.
if( m_pActiveChannel != NULL)
m_pActiveChannel->setTimeout( m_lChannelTimeout);
+
+ logExit()
}
/*
@@ -200,17 +231,24 @@
int HTTPTransport::
openConnection()
{
+ logEntryTransport("HTTPTransport::openConnection")
+
// If connection not valid or reopen required, open a connection to server.
if (m_pActiveChannel->reopenRequired() || m_bReopenConnection)
{
closeConnection(true);
if( m_pActiveChannel->open() != AXIS_SUCCESS)
{
+ logThrowExceptionWithData("HTTPTransportException - CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED",
+ m_pActiveChannel->GetLastErrorMsg().c_str())
+
throw HTTPTransportException( CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED,
m_pActiveChannel->GetLastErrorMsg().c_str());
}
}
+ logExitWithReturnCode(AXIS_SUCCESS)
+
return AXIS_SUCCESS;
}
@@ -220,6 +258,8 @@
void HTTPTransport::
closeConnection(bool forceClose)
{
+ logEntryTransport("HTTPTransport::closeConnection")
+
resetInputStateMachine();
// We will close the connection if forced close, or if "Connection: close"
@@ -229,6 +269,8 @@
m_bReopenConnection = false;
m_pActiveChannel->close();
}
+
+ logExit()
}
/*
@@ -244,6 +286,8 @@
AXIS_TRANSPORT_STATUS HTTPTransport::
flushOutput() throw (AxisException, HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::flushOutput")
+
char *utf8Buf = NULL; // buffer for ebcdic/utf8 conversions.
// In preperation for sending the message, set Content-Length HTTP header.
@@ -256,7 +300,7 @@
{
// Generate HTTP header string
generateHTTPHeaders ();
-
+
// Send HTTP headers and body
#ifndef __OS400__
m_pActiveChannel->writeBytes(m_strHeaderBytesToSend.c_str(), m_strHeaderBytesToSend.length());
@@ -280,6 +324,9 @@
free(utf8Buf);
m_strBytesToSend = "";
m_strHeaderBytesToSend = "";
+
+ logRethrowException()
+
throw;
}
@@ -291,6 +338,8 @@
m_vResponseHTTPHeaders.clear();
// TODO: Possible memory leak here - does the clear op clean out the memory too?
+ logExit()
+
return TRANSPORT_FINISHED;
}
@@ -303,6 +352,8 @@
const char * HTTPTransport::
generateHTTPHeaders()
{
+ logEntryTransport("HTTPTransport::generateHTTPHeaders")
+
URL & url = m_pActiveChannel->getURLObject();
unsigned short uiPort;
char buff[32];
@@ -421,6 +472,8 @@
m_strHeaderBytesToSend += "\r\n";
+ logExit()
+
return m_strHeaderBytesToSend.c_str ();
}
@@ -445,7 +498,14 @@
void HTTPTransport::
setHTTPMethod( const char *cpMethod)
{
- m_strHTTPMethod = std::string( cpMethod);
+ logEntryTransport("HTTPTransport::setHTTPMethod")
+
+ logDebugArg1("HTTP method is %s", cpMethod ? cpMethod : "NULL")
+
+ if (cpMethod)
+ m_strHTTPMethod = std::string( cpMethod);
+
+ logExit()
}
/* HTTPTransport::sendBytes( SendBuffer, BufferId) Is a public method that
@@ -470,10 +530,16 @@
bool HTTPTransport::
isThereResponseData()
{
+ logEntryTransport("HTTPTransport::isThereResponseData")
+
// We do not want to consume any SOAP data, just find out if there is any data.
int bufLen = 0;
getBytes(NULL, &bufLen);
- return (m_GetBytesState != eWaitingForHTTPHeader || m_iBytesLeft != 0);
+ bool returnValue = (m_GetBytesState != eWaitingForHTTPHeader || m_iBytesLeft != 0);
+
+ logExitWithBoolean(returnValue)
+
+ return returnValue;
}
/* HTTPTransport::getBytes( ReceiveBuffer, Size) Is a public method that will
@@ -490,6 +556,8 @@
AXIS_TRANSPORT_STATUS HTTPTransport::
getBytes( char * pcBuffer, int * piSize) throw (AxisException, HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::getBytes")
+
// The method getBytes has three distinct states. These are defined as
// follows:-
// eWaitingForHTTPHeader - Waiting for HTTP response header. Initiate processing
@@ -540,7 +608,9 @@
}
else
*piSize = 0;
-
+
+ logExit()
+
// Set transport status
return (m_iBytesLeft > 0 || (m_GetBytesState != eWaitingForHTTPHeader)) ?
TRANSPORT_IN_PROGRESS : TRANSPORT_FINISHED;
@@ -553,6 +623,8 @@
int HTTPTransport::
getBytes_MessageHasContentLength(char * pcBuffer, int * piSize)
{
+ logEntryTransport("HTTPTransport::getBytes_MessageHasContentLength")
+
// If we do not have data to give back, read more.
if (m_iContentLength > 0 && m_iBytesLeft == 0)
{
@@ -576,6 +648,8 @@
if (0 == m_iContentLength)
m_GetBytesState = eWaitingForHTTPHeader;
+ logExitWithInteger(m_iBytesLeft)
+
// Return number of bytes that can be copied
return m_iBytesLeft;
}
@@ -589,6 +663,8 @@
int HTTPTransport::
getBytes_MessageIsNotChunked(char * pcBuffer, int * piSize)
{
+ logEntryTransport("HTTPTransport::getBytes_MessageIsNotChunked")
+
// Keep reading until the connection is closed by the server.
getNextDataPacket( "Expecting server connection to close.");
@@ -599,6 +675,8 @@
m_iBytesLeft = m_strReceived.length();
}
+ logExitWithInteger(m_iBytesLeft)
+
// Return number of bytes that can be copied
return m_iBytesLeft;
}
@@ -636,6 +714,8 @@
int HTTPTransport::
getBytes_MessageIsChunked(char * pcBuffer, int * piSize)
{
+ logEntryTransport("HTTPTransport::getBytes_MessageIsChunked")
+
// We only read the next chunk if the chunk we have has been consumed.
if (m_iChunkedDataLeftToConsume == 0)
{
@@ -711,6 +791,8 @@
m_iChunkedDataLeftToConsume -= *piSize;
}
+ logExitWithInteger(iDataToCpyLen)
+
return iDataToCpyLen;
}
@@ -722,6 +804,8 @@
int HTTPTransport::
getChunkSize(string::size_type pos)
{
+ logEntryTransport("HTTPTransport::getChunkSize")
+
string::size_type iEndOfChunkSize;
string::size_type iEndOfChunkLine;
@@ -757,6 +841,9 @@
PLATFORM_ASCTOSTR(chunkSizeLine.c_str());
string errorMessage = string("Chunk size (") + chunkSizeLine + string(") not valid.");
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_HTTP_EXCEPTION", errorMessage.c_str())
+
throw HTTPTransportException(SERVER_TRANSPORT_HTTP_EXCEPTION, errorMessage.c_str());
}
@@ -777,6 +864,8 @@
m_strReceived.erase(0, iEndOfChunkLine + 2); // "+2" for CRLF
m_iBytesLeft = m_strReceived.length();
+ logExitWithInteger(chunkSize)
+
// return chunksize
return chunkSize;
}
@@ -793,6 +882,8 @@
int HTTPTransport::
setTransportProperty( AXIS_TRANSPORT_INFORMATION_TYPE type, const char *value) throw (HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::setTransportProperty")
+
const char *key = NULL;
int iSuccess = AXIS_SUCCESS;
@@ -863,6 +954,8 @@
if( key)
setTransportProperty( key, value);
+ logExitWithReturnCode(iSuccess)
+
return iSuccess;
}
@@ -878,34 +971,45 @@
int HTTPTransport::
setTransportProperty( const char *pcKey, const char *pcValue) throw (HTTPTransportException)
{
- if( !pcKey || !pcValue)
- return AXIS_SUCCESS;
+ logEntryTransport("HTTPTransport::setTransportProperty")
- bool b_KeyFound = false;
+ int iSuccess = AXIS_SUCCESS;
- // Check for well known headers that we add on in every iteration
- if (strcmp( pcKey, "SOAPAction") == 0
- || strcmp( pcKey, "Content-Length") == 0
- || strcmp( pcKey, "Connection") == 0)
+ if( pcKey && pcValue)
{
- std::string strKeyToFind = std::string( pcKey);
-
- for (unsigned int i = 0; i < m_vHTTPHeaders.size(); i++)
- if (m_vHTTPHeaders[i].first == strKeyToFind)
- {
- m_vHTTPHeaders[i].second = (string) pcValue;
- b_KeyFound = true;
+ logDebugArg2("Transport property to set: %s=%s", pcKey, pcValue)
- break;
- }
+ bool b_KeyFound = false;
+
+ // Check for well known headers that we add on in every iteration
+ if (strcmp( pcKey, "SOAPAction") == 0
+ || strcmp( pcKey, "Content-Length") == 0
+ || strcmp( pcKey, "Connection") == 0)
+ {
+ std::string strKeyToFind = std::string( pcKey);
+
+ for (unsigned int i = 0; i < m_vHTTPHeaders.size(); i++)
+ if (m_vHTTPHeaders[i].first == strKeyToFind)
+ {
+ m_vHTTPHeaders[i].second = (string) pcValue;
+ b_KeyFound = true;
+
+ break;
+ }
+ }
+ else if(strcmp(pcKey, "Cookie")==0)
+ {
+ iSuccess = addCookie(pcValue);
+ b_KeyFound = true;
+ }
+
+ if( !b_KeyFound)
+ m_vHTTPHeaders.push_back( std::make_pair( (string) pcKey, (string) pcValue));
}
- else if(strcmp(pcKey, "Cookie")==0)
- return addCookie(pcValue);
-
- if( !b_KeyFound)
- m_vHTTPHeaders.push_back( std::make_pair( (string) pcKey, (string) pcValue));
- return AXIS_SUCCESS;
+ logExitWithReturnCode(iSuccess)
+
+ return iSuccess;
}
/* HTTPTransport::getTransportProperty( Type) Is a public method that will
@@ -921,6 +1025,8 @@
const char * HTTPTransport::
getTransportProperty( AXIS_TRANSPORT_INFORMATION_TYPE eType) throw (HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::getTransportProperty")
+
const char *pszPropValue = NULL;
switch( eType)
@@ -970,6 +1076,8 @@
}
}
+ logExitWithString(pszPropValue)
+
return pszPropValue;
}
@@ -1066,10 +1174,16 @@
void HTTPTransport::
setProxy( const char *pcProxyHost, unsigned int uiProxyPort)
{
+ logEntryTransport("HTTPTransport::setProxy")
+
+ logDebugArg2("Proxy host is %s, proxy port is %d", pcProxyHost ? pcProxyHost : "NULL", uiProxyPort)
+
m_pActiveChannel->setProxy(pcProxyHost,uiProxyPort);
m_strProxyHost = pcProxyHost;
m_uiProxyPort = uiProxyPort;
m_bUseProxy = true;
+
+ logExit()
}
/* HTTPTransport::setTimeout( Timeout) Is a public method for setting the
@@ -1081,10 +1195,14 @@
void HTTPTransport::
setTimeout( long lSeconds)
{
+ logEntryTransport("HTTPTransport::setTimeout")
+
if( m_pActiveChannel != NULL)
m_pActiveChannel->setTimeout( lSeconds);
m_lChannelTimeout = lSeconds;
+
+ logExit()
}
/* HTTPTransport::getHTTPProtocol() Is a public method for retrieving the
@@ -1159,6 +1277,8 @@
void HTTPTransport::
processHTTPHeader()
{
+ logEntryTransport("HTTPTransport::processHTTPHeader")
+
// Prior to calling this method, m_strResponseHTTPHeaders should have been
// set to the HTTP header in the response, which is in ascii. For EBCDIC
// systems, we need to convert the data from ASCII to EBCDIC.
@@ -1179,6 +1299,8 @@
if( (iPosition = m_strResponseHTTPHeaders.find( "HTTP" )) == std::string::npos)
{
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_UNKNOWN_HTTP_RESPONSE", "Protocol is not HTTP.")
+
throw HTTPTransportException( SERVER_TRANSPORT_UNKNOWN_HTTP_RESPONSE,
"Protocol is not HTTP.");
}
@@ -1312,6 +1434,8 @@
m_GetBytesState = eWaitingForHTTPHeader;
else if (m_GetBytesState == eWaitingForHTTPHeader)
m_GetBytesState = eSOAPMessageIsNotChunked;
+
+ logExit()
}
/* HTTPTransport::processRootMimeBody() Is a public method used to
@@ -1320,6 +1444,8 @@
void HTTPTransport::
processRootMimeBody()
{
+ logEntryTransport("HTTPTransport::processRootMimeBody")
+
int numberOfBytesRead = 0;
if( false == m_bReadPastRootMimeHeader)
@@ -1367,9 +1493,9 @@
// Using m_strMimeReceived will be continued when getAttachment is called.
m_bMimeTrue = false;
}
-
- return;
}
+
+ logExit()
}
/* HTTPTransport::processMimeHeaders() Is a public method used to
@@ -1378,6 +1504,8 @@
void HTTPTransport::
processMimeHeader()
{
+ logEntryTransport("HTTPTransport::processMimeHeader")
+
string::size_type pos = 0;
string::size_type temppos = 0;
@@ -1421,6 +1549,8 @@
temppos = m_strMimeContentLocation.find( "\r\n");
m_strMimeContentLocation = m_strMimeContentLocation.substr( 0, temppos);
}
+
+ logExit()
}
void HTTPTransport::
@@ -1431,6 +1561,8 @@
void HTTPTransport::
getAttachment( char * pStrAttachment, int * pIntSize, int intAttachmentId)
{
+ logEntryTransport("HTTPTransport::getAttachment")
+
int numberOfBytesRead = 0;
do
@@ -1446,6 +1578,8 @@
m_strMimeReceived = m_strMimeReceived.substr( m_strMimeReceived.find( "\r\n\r\n"));
processMimeBody();
+
+ logExit()
}
void HTTPTransport::
@@ -1457,6 +1591,10 @@
const char * HTTPTransport::
getTransportProperty( const char * pcKey, bool response) throw (HTTPTransportException)
{
+ logEntryTransport("HTTPTransport::getTransportProperty")
+
+ const char *returnValue = NULL;
+
std::string strKeyToFind = std::string( pcKey);
std::vector < std::pair < std::string, std::string > > *hdrs=NULL;
@@ -1467,9 +1605,14 @@
for( unsigned int i = 0; i < hdrs->size(); i++)
if( (*hdrs)[i].first == strKeyToFind)
- return (*hdrs)[i].second.c_str();
+ {
+ returnValue = (*hdrs)[i].second.c_str();
+ break;
+ }
- return NULL;
+ logExitWithString(returnValue)
+
+ return returnValue;
}
const char * HTTPTransport::
@@ -1637,6 +1780,8 @@
void HTTPTransport::
readHTTPHeader()
{
+ logEntryTransport("HTTPTransport::readHTTPHeader")
+
m_pActiveChannel->closeQuietly( false);
// The parser is expecting a SOAP message. Thus, the HTTP header must have
@@ -1667,6 +1812,10 @@
else
{
m_bReopenConnection = true;
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_INPUT_STREAMING_ERROR",
+ "Socket connection has been closed.")
+
throw HTTPTransportException( SERVER_TRANSPORT_INPUT_STREAMING_ERROR,
"Socket connection has been closed.");
}
@@ -1678,7 +1827,7 @@
iHTTPEnd = m_strReceived.find( ASCII_S_CRLFCRLF, iHTTPStart);
m_strResponseHTTPHeaders = m_strReceived.substr( iHTTPStart, iHTTPEnd + 4 - iHTTPStart);
-
+
// Process the HTTP header
processHTTPHeader();
@@ -1697,13 +1846,21 @@
m_strResponseHTTPStatusMessage + std::string("'\n");
m_GetBytesState = eWaitingForHTTPHeader;
+
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_HTTP_EXCEPTION",
+ m_strResponseHTTPStatusMessage.c_str())
+
throw HTTPTransportException( SERVER_TRANSPORT_HTTP_EXCEPTION, m_strResponseHTTPStatusMessage.c_str());
- }
+ }
+
+ logExit()
}
int HTTPTransport::
getNextDataPacket( const char * pcszExceptionMessage, char *bufferToUse, int *bufferLen)
{
+ logEntryTransport("HTTPTransport::getNextDataPacket")
+
int numberOfBytesRead;
// Read whatever part of the response message that has arrived at the active channel socket.
@@ -1732,15 +1889,24 @@
m_bReopenConnection = true;
if( pcszExceptionMessage != NULL && strlen( pcszExceptionMessage) > 0)
+ {
+ logThrowExceptionWithData("HTTPTransportException - SERVER_TRANSPORT_HTTP_EXCEPTION",
+ pcszExceptionMessage)
+
throw HTTPTransportException( SERVER_TRANSPORT_HTTP_EXCEPTION, pcszExceptionMessage);
+ }
}
+ logExitWithInteger(numberOfBytesRead)
+
return numberOfBytesRead;
}
int HTTPTransport::
addCookie(const string name, const string value)
{
+ logEntryTransport("HTTPTransport::addCookie")
+
// trim the name
string theName(name);
trim(theName);
@@ -1761,12 +1927,16 @@
if(!b_keyFound)
m_vCookies.push_back( std::make_pair( theName, value));
+ logExit()
+
return true;
}
int HTTPTransport::
addCookie(const string nameValuePair)
{
+ logEntryTransport("HTTPTransport::addCookie")
+
// Spec syntax : Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
// This code assumes it to be : Set-Cookie: NAME=VALUE; Anything_else
// And discards stuff after first ';'
@@ -1780,6 +1950,9 @@
// Now split the nameValue up
string::size_type nameEndsAt = nameValue.find("=");
+
+ logExit()
+
return addCookie(nameValue.substr(0, nameEndsAt), nameValue.substr(nameEndsAt+1));
}
@@ -1826,3 +1999,15 @@
str.erase(str.begin(), str.end());
}
+void HTTPTransport::
+enableTrace(const char* logFilePath, const char *filters)
+{
+ AxisTrace::setLogFilter(filters);
+ AxisTrace::startTrace(logFilePath, false);
+
+ if (m_pNormalChannel)
+ m_pNormalChannel->enableTrace(logFilePath, filters);
+
+ if (m_pSecureChannel)
+ m_pSecureChannel->enableTrace(logFilePath, filters);
+}
\ No newline at end of file
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.hpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.hpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.hpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.hpp Thu Nov 13 14:13:23 2008
@@ -50,7 +50,7 @@
{
public:
HTTPTransport ();
- virtual ~ HTTPTransport ();
+ virtual ~HTTPTransport ();
/**
* Sets the endpoint URI.
@@ -107,6 +107,8 @@
ISoapAttachment** getAllAttachments(int *pAttchArraySize) { return NULL;};
char * getIncomingSOAPMimeHeaders() {return NULL;}
const char * getLastChannelError();
+
+ void enableTrace(const char* logFilePath, const char *filters);
protected:
void processRootMimeBody();
Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPTransportInstantiator.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/HTTPTransportInstantiator.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPTransportInstantiator.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPTransportInstantiator.cpp Thu Nov 13 14:13:23 2008
@@ -23,10 +23,6 @@
// !!! This include file must be first thing in file !!!
#include "../../platforms/PlatformAutoSense.hpp"
-#ifndef AXISTRACE_LIBRARY_MAINENTRYPOINT
-#define AXISTRACE_LIBRARY_MAINENTRYPOINT
-#endif
-
#include "../../common/AxisTrace.h"
#include "HTTPTransport.hpp"
@@ -55,12 +51,9 @@
return AXIS_FAIL;
}
- STORAGE_CLASS_INFO void initializeLibrary (AxisTraceEntrypoints* ep)
+ STORAGE_CLASS_INFO void initializeLibrary (void)
{
// Do init actions
-#ifdef ENABLE_AXISTRACE
- AxisTrace::setTraceEntrypoints(ep);
-#endif
}
// uninitializeLibrary() Is a C interface.
Modified: webservices/axis/trunk/c/src/transport/axis3/IChannel.hpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/transport/axis3/IChannel.hpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/IChannel.hpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/IChannel.hpp Thu Nov 13 14:13:23 2008
@@ -61,6 +61,7 @@
virtual void setProxy(const char *pcProxyHost,unsigned int uiProxyPort)=0;
virtual bool reopenRequired()=0;
virtual void closeQuietly( bool bNoExceptionOnForceClose) = 0;
+ virtual void enableTrace(const char* logFilePath, const char *filters) { }
};
#endif
Modified: webservices/axis/trunk/c/src/wsdd/WSDDDeployment.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdd/WSDDDeployment.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdd/WSDDDeployment.cpp (original)
+++ webservices/axis/trunk/c/src/wsdd/WSDDDeployment.cpp Thu Nov 13 14:13:23 2008
@@ -37,6 +37,8 @@
WSDDDeployment::
WSDDDeployment()
{
+ logEntryEngine("WSDDDeployment::WSDDDeployment")
+
m_DeployedServices = NULL;
m_sAux = "";
m_pTransportHandlers = NULL;
@@ -44,11 +46,15 @@
m_GlobalRequestHandlers = NULL;
m_DeplType = DT_DEPLOYMENT;
m_pLibNameIdMap = new map<AxisString, int>;
+
+ logExit()
}
WSDDDeployment::
~WSDDDeployment()
{
+ logEntryEngine("WSDDDeployment::~WSDDDeployment")
+
WSDDHandlerList::iterator iter;
delete m_pTransportHandlers;
@@ -67,6 +73,8 @@
delete m_DeployedServices;
delete m_pLibNameIdMap;
+
+ logExit()
}
const WSDDHandlerList* WSDDDeployment::
@@ -97,6 +105,8 @@
int WSDDDeployment::
loadWSDD( const AxisChar * sWSDD)
{
+ logEntryEngine("WSDDDeployment::loadWSDD")
+
m_sWSDDPath = std::string( sWSDD);
WSDDDocument *doc = new WSDDDocument( m_pLibNameIdMap);
@@ -106,8 +116,14 @@
delete doc;
if (AXIS_FAIL == rc)
+ {
+ logThrowException("AxisWsddException - SERVER_WSDD_FILE_NOT_FOUND")
+
throw AxisWsddException(SERVER_WSDD_FILE_NOT_FOUND);
-
+ }
+
+ logExitWithReturnCode(AXIS_SUCCESS)
+
return AXIS_SUCCESS;
}
@@ -190,6 +206,8 @@
const WSDDService* WSDDDeployment::
getService(const AxisChar* sServiceName)
{
+ logSetFunctionNameEngine("WSDDDeployment::getService")
+
WSDDServiceMap::iterator iter;
if (!m_DeployedServices)
return NULL;
@@ -206,6 +224,8 @@
{
e = e;
+ logThrowExceptionWithData("AxisWsddException - SERVER_WSDD_EXCEPTION", e.what())
+
throw AxisWsddException(SERVER_WSDD_EXCEPTION);
}
}
@@ -232,22 +252,37 @@
int WSDDDeployment::
addService(WSDDService* pService)
{
+ logEntryEngine("WSDDDeployment::addService")
+
if (!m_DeployedServices)
m_DeployedServices = new WSDDServiceMap;
if (m_DeployedServices->find(pService->getServiceName()) != m_DeployedServices->end())
{
- AXISTRACE1("The service already exists and the attempt to re-deploy is ignored", WARN);
+ logWarning("The service already exists and the attempt to re-deploy is ignored.")
}
else
(*m_DeployedServices)[pService->getServiceName()] = pService;
+ logExitWithReturnCode(AXIS_SUCCESS)
+
return AXIS_SUCCESS;
}
int WSDDDeployment::
addHandler(bool bGlobal, bool bRequestFlow, WSDDHandler* pHandler, AXIS_PROTOCOL_TYPE protocol)
{
+ logEntryEngine("WSDDDeployment::addHandler")
+
+ if (pHandler)
+ {
+ logDebugArg4("Adding handler %s, global=%s, request=%s, response=%s",
+ pHandler->getLibName(),
+ bGlobal ? "yes" : "no",
+ bRequestFlow ? "yes" : "no",
+ bRequestFlow ? "no" : "yes")
+ }
+
if (bGlobal)
{
if (bRequestFlow)
@@ -269,6 +304,9 @@
m_pTransportHandlers = new WSDDTransport();
m_pTransportHandlers->addHandler(bRequestFlow, protocol, pHandler);
}
+
+ logExitWithReturnCode(AXIS_SUCCESS)
+
return AXIS_SUCCESS;
}
@@ -327,6 +365,7 @@
return AXIS_NO_SUCH_HANDLER;
return m_pTransportHandlers->removeHandler(bRequestFlow, protocol, pHandler);
}
+
return AXIS_NO_SUCH_HANDLER;
}
Modified: webservices/axis/trunk/c/src/wsdd/WSDDDocument.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdd/WSDDDocument.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdd/WSDDDocument.cpp (original)
+++ webservices/axis/trunk/c/src/wsdd/WSDDDocument.cpp Thu Nov 13 14:13:23 2008
@@ -64,7 +64,6 @@
/* this enables the access to Deployment object while parsing */
if (AXIS_SUCCESS != parseDocument(pcWSDDFileName))
{
- AXISTRACE1("Deployment descripter loading failed", CRITICAL);
return AXIS_FAIL;
}
return AXIS_SUCCESS;
@@ -145,7 +144,6 @@
XMLParser* pParser = XMLParserFactory::getParserObject();
if (!pParser)
{
- AxisTrace::trace("Failed to getXMLParser to load WSDDDocument with");
return AXIS_FAIL;
}
Modified: webservices/axis/trunk/c/src/xml/XMLParser.h
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/xml/XMLParser.h?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/xml/XMLParser.h (original)
+++ webservices/axis/trunk/c/src/xml/XMLParser.h Thu Nov 13 14:13:23 2008
@@ -191,6 +191,13 @@
* @return true if more data to parse; false otherwise.
*/
virtual bool canParseMore() { return m_bCanParseMore; }
+
+ /**
+ * Enable trace.
+ * @param logFilePath path to log file.
+ * @param filters log filters. See common/AxisTrace.h.
+ */
+ virtual void enableTrace(const char* logFilePath, const char *filters) { }
protected:
AxisIOStream* m_pInputStream;
Modified: webservices/axis/trunk/c/src/xml/xerces/ParserLoader.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/xml/xerces/ParserLoader.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/xml/xerces/ParserLoader.cpp (original)
+++ webservices/axis/trunk/c/src/xml/xerces/ParserLoader.cpp Thu Nov 13 14:13:23 2008
@@ -23,7 +23,6 @@
// !!! This include file must be first thing in file !!!
#include "../../platforms/PlatformAutoSense.hpp"
-#define AXISTRACE_LIBRARY_MAINENTRYPOINT
#include "../../common/AxisTrace.h"
#include "XMLParserXerces.h"
@@ -64,12 +63,9 @@
return AXIS_FAIL;
}
-STORAGE_CLASS_INFO void initializeLibrary (AxisTraceEntrypoints* ep)
+STORAGE_CLASS_INFO void initializeLibrary (void)
{
// Do init actions
-#ifdef ENABLE_AXISTRACE
- AxisTrace::setTraceEntrypoints(ep);
-#endif
}
// uninitializeLibrary() Is a C interface.
Modified: webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.cpp?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.cpp (original)
+++ webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.cpp Thu Nov 13 14:13:23 2008
@@ -32,27 +32,37 @@
XMLParserXerces::
XMLParserXerces() : XMLParser()
{
+ logEntryParser("XMLParserXerces::XMLParserXerces")
+
m_pInputSource = NULL;
m_bFirstParsed = false;
m_bPeeked = false;
m_bStartEndElement = false;
m_pParser = XMLReaderFactory::createXMLReader();
m_pParser->setErrorHandler(&m_Xhandler);
+
+ logExit()
}
XMLParserXerces::
~XMLParserXerces()
{
+ logEntryParser("XMLParserXerces::~XMLParserXerces")
+
// Parser has memory allocated with the last AnyElement parsed; clean that
m_Xhandler.freeElement();
delete m_pInputSource;
delete m_pParser;
+
+ logExit()
}
int XMLParserXerces::
setInputStream(AxisIOStream* pInputStream)
{
+ logEntryParser("XMLParserXerces::setInputStream")
+
m_pInputStream = pInputStream;
delete m_pInputSource;
@@ -68,6 +78,8 @@
m_iStatus = AXIS_SUCCESS;
m_sErrorString = "";
+ logExitWithReturnCode(AXIS_SUCCESS)
+
return AXIS_SUCCESS;
}
@@ -80,6 +92,8 @@
const AnyElement* XMLParserXerces::
parse(bool ignoreWhitespace, bool peekIt)
{
+ logEntryParser("XMLParserXerces::parse")
+
try
{
// Need to do a parseFirst() to kick off parsing
@@ -92,7 +106,11 @@
m_bFirstParsed = true;
if (!m_bCanParseMore)
+ {
+ logExitWithPointer(NULL)
+
return (const AnyElement*)NULL;
+ }
}
// release any element that has been consumed
@@ -156,6 +174,8 @@
}
// Return element
+ logExitWithPointer(elem)
+
return (const AnyElement*)elem;
}
catch( const SAXParseException& e)
@@ -166,6 +186,8 @@
m_iStatus = AXIS_FAIL;
XMLString::release( &message);
+ logThrowExceptionWithData("AxisParseException", m_sErrorString.c_str())
+
throw AxisParseException(m_iErrorCode, m_sErrorString.c_str());
}
catch( const XMLException& e)
@@ -176,6 +198,8 @@
m_iStatus = AXIS_FAIL;
XMLString::release( &message);
+ logThrowExceptionWithData("AxisParseException", m_sErrorString.c_str())
+
throw AxisParseException(m_iErrorCode, m_sErrorString.c_str());
}
catch( HTTPTransportException & e)
@@ -184,6 +208,8 @@
m_iErrorCode = SERVER_PARSE_TRANSPORT_FAILED;
m_iStatus = AXIS_FAIL;
+ logThrowExceptionWithData("AxisParseException", m_sErrorString.c_str())
+
throw AxisParseException(m_iErrorCode, m_sErrorString.c_str());
}
catch(...)
@@ -192,16 +218,26 @@
m_iErrorCode = SERVER_PARSE_PARSER_FAILED;
m_iStatus = AXIS_FAIL;
+ logThrowExceptionWithData("AxisParseException", m_sErrorString.c_str())
+
throw AxisParseException(m_iErrorCode, m_sErrorString.c_str());
}
+ logExitWithPointer(NULL)
+
return (const AnyElement*)NULL;
}
const AnyElement* XMLParserXerces::
next(bool isCharData)
{
- return parse(isCharData ? false : true);
+ logEntryParser("XMLParserXerces::next")
+
+ const AnyElement* returnValue = parse(isCharData ? false : true);
+
+ logExitWithPointer(returnValue)
+
+ return returnValue;
}
// New method which peek a head next element
@@ -209,31 +245,36 @@
const char* XMLParserXerces::
peek()
{
+ logEntryParser("XMLParserXerces::peek")
+
+ const char* returnValue = "";
+
// peek() is used to determine optional elements or elements
// that are not in order (e.g. xsd:all support) - return a null string if
// the last node processed was a start/end element
- if (m_bStartEndElement)
- return "";
-
- // get element, ignoring whitespace and indicating this is a peek operation
- const AnyElement* elem = parse(true, true);
- if (!elem)
- return "";
-
- // We return null string if end-element or unknown type is encountered
- const XML_NODE_TYPE type = m_Xhandler.peekNextElementType();
- if(type != END_ELEMENT && type != END_PREFIX && type != UNKNOWN)
+ if (!m_bStartEndElement)
{
- const char* name = m_Xhandler.peekNextElementName();
- return name;
+ // get element, ignoring whitespace and indicating this is a peek operation
+ const AnyElement* elem = parse(true, true);
+ if (elem)
+ {
+ // We return null string if end-element or unknown type is encountered
+ const XML_NODE_TYPE type = m_Xhandler.peekNextElementType();
+ if(type != END_ELEMENT && type != END_PREFIX && type != UNKNOWN)
+ returnValue = m_Xhandler.peekNextElementName();
+ }
}
- else
- return "";
+
+ logExitWithString(returnValue)
+
+ return returnValue;
}
const AnyElement* XMLParserXerces::
anyNext()
{
+ logEntryParser("XMLParserXerces::anyNext")
+
// Say the SAX event handler to record prefix mappings too
// By default the event handler do not record them.
m_Xhandler.setGetPrefixMappings(true);
@@ -244,6 +285,8 @@
// Reset prefix mapping
m_Xhandler.setGetPrefixMappings(false);
+ logExitWithPointer(elem)
+
return elem;
}
@@ -252,3 +295,10 @@
{
return m_Xhandler.prefix4NS(pcNS);
}
+
+void XMLParserXerces::
+enableTrace(const char* logFilePath, const char *filters)
+{
+ AxisTrace::setLogFilter(filters);
+ AxisTrace::startTrace(logFilePath, false);
+}
\ No newline at end of file
Modified: webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.h
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.h?rev=713841&r1=713840&r2=713841&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.h (original)
+++ webservices/axis/trunk/c/src/xml/xerces/XMLParserXerces.h Thu Nov 13 14:13:23 2008
@@ -47,6 +47,8 @@
const char* peek();
const XML_Ch* getPrefix4NS(const XML_Ch* pcNS);
+ void enableTrace(const char* logFilePath, const char *filters);
+
private:
const AnyElement* parse(bool ignoreWhitespace=true, bool peekIt=false);