axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From whitl...@apache.org
Subject cvs commit: ws-axis/c/include/axis/client Call.h Stub.h
Date Fri, 19 Nov 2004 16:22:08 GMT
whitlock    2004/11/19 08:22:08

  Modified:    c/include/axis/server ISoapDeSerializer.hpp
                        ISoapSerializer.hpp IWrapperSoapDeSerializer.hpp
                        IWrapperSoapSerializer.hpp
               c/src/common AxisTrace.cpp AxisTrace.h Packet.cpp
               c/src/engine AppScopeHandlerPool.cpp Axis.cpp AxisEngine.cpp
                        DeserializerPool.cpp HandlerChain.cpp
                        HandlerLoader.cpp HandlerPool.cpp
                        SOAPTransportFactory.cpp SerializerPool.cpp
                        XMLParserFactory.cpp
               c/src/engine/client ClientAxisEngine.cpp
               c/src/engine/server ServerAxisEngine.cpp
               c/src/soap SoapBody.cpp SoapDeSerializer.cpp
                        SoapEnvelope.cpp SoapFault.cpp SoapSerializer.cpp
               c/src/wsdd WSDDDeployment.cpp WSDDDocument.cpp
               c/tools/trace/org/apache/axis/tracetool Tracer.java
  Removed:     c/include/axis/server Attribute.h Attribute.hpp
                        AxisException.h AxisUserAPI.h AxisWrapperAPI.h
                        BasicHandler.h BasicNode.h GDefine.h Handler.h
                        IHandlerSoapDeSerializer.h IHandlerSoapSerializer.h
                        IHeaderBlock.h IMessageData.h IParam.h
                        ISoapDeSerializer.h ISoapHeader.h ISoapSerializer.h
                        IWrapperSoapDeSerializer.h IWrapperSoapSerializer.h
                        Packet.h SoapEnvVersions.h TypeMapping.h
                        WSDDDefines.h WrapperClassHandler.h
               c/include/axis Axis.h AxisGenException.h IAttribute.h
                        ISoapFault.h
               c/include/axis/client Call.h Stub.h
  Log:
  Remove obsolete header files and make trace methods static, so removing g_pAT
  
  Revision  Changes    Path
  1.2       +1 -23     ws-axis/c/include/axis/server/ISoapDeSerializer.hpp
  
  Index: ISoapDeSerializer.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/server/ISoapDeSerializer.hpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ISoapDeSerializer.hpp	25 Oct 2004 13:39:27 -0000	1.1
  +++ ISoapDeSerializer.hpp	19 Nov 2004 16:22:05 -0000	1.2
  @@ -13,26 +13,4 @@
    *   See the License for the specific language governing permissions and
    *   limitations under the License.
    */
  -
  -#if !defined(_ISOAPDESERIALIZER_H____OF_AXIS_INCLUDED_)
  -#define _ISOAPDESERIALIZER_H____OF_AXIS_INCLUDED_
  -/*
  - *  @class ISoapDeSerializer
  - *  @brief interface for the ISoapDeSerializer class.
  - *
  - *
  - *  @author Roshan Weerasuriya (roshan@jkcs.slt.lk, roshan@opensource.lk)
  - */
  -
  -AXIS_CPP_NAMESPACE_START
  -
  -class ISoapDeSerializer
  -{
  -public:
  -    virtual ~ISoapDeSerializer() {};
  -};
  -
  -AXIS_CPP_NAMESPACE_END
  -
  -#endif 
  -
  +#error "Please do not include ISoapDeSerializer.hpp"
  
  
  
  1.2       +1 -29     ws-axis/c/include/axis/server/ISoapSerializer.hpp
  
  Index: ISoapSerializer.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/server/ISoapSerializer.hpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ISoapSerializer.hpp	25 Oct 2004 13:39:27 -0000	1.1
  +++ ISoapSerializer.hpp	19 Nov 2004 16:22:05 -0000	1.2
  @@ -13,32 +13,4 @@
    *   See the License for the specific language governing permissions and
    *   limitations under the License.
    */
  -
  -#if !defined(_ISOAPSERIALIZER_H____OF_AXIS_INCLUDED_)
  -#define _ISOAPSERIALIZER_H____OF_AXIS_INCLUDED_
  -
  -/*
  - *  @class ISoapSerializer
  - *  @brief interface for the ISoapSerializer class.
  - *
  - *
  - *  @author Roshan Weerasuriya (roshan@jkcs.slt.lk, roshan@opensource.lk)
  - */
  -
  -AXIS_CPP_NAMESPACE_START
  -
  -class ISoapSerializer
  -{
  -public:
  -    virtual ~ISoapSerializer() {};
  -};
  -
  -AXIS_CPP_NAMESPACE_END
  -
  -#endif 
  -
  -
  -
  -
  -
  -
  +#error "Please do not include ISoapSerializer.hpp"
  
  
  
  1.6       +1 -2      ws-axis/c/include/axis/server/IWrapperSoapDeSerializer.hpp
  
  Index: IWrapperSoapDeSerializer.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/server/IWrapperSoapDeSerializer.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- IWrapperSoapDeSerializer.hpp	12 Nov 2004 11:38:14 -0000	1.5
  +++ IWrapperSoapDeSerializer.hpp	19 Nov 2004 16:22:05 -0000	1.6
  @@ -20,7 +20,6 @@
   #include "AxisUserAPI.hpp"
   #include "TypeMapping.hpp"
   #include "WSDDDefines.hpp"
  -#include "ISoapDeSerializer.hpp"
   
   /**
       @class IWrapperSoapDeSerializer
  @@ -33,7 +32,7 @@
   
   AXIS_CPP_NAMESPACE_START
   
  -class IWrapperSoapDeSerializer : public ISoapDeSerializer
  +class IWrapperSoapDeSerializer
   {
   public:
       virtual ~IWrapperSoapDeSerializer(){};
  
  
  
  1.4       +1 -2      ws-axis/c/include/axis/server/IWrapperSoapSerializer.hpp
  
  Index: IWrapperSoapSerializer.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/server/IWrapperSoapSerializer.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IWrapperSoapSerializer.hpp	29 Oct 2004 15:34:55 -0000	1.3
  +++ IWrapperSoapSerializer.hpp	19 Nov 2004 16:22:05 -0000	1.4
  @@ -19,7 +19,6 @@
   
   #include "AxisUserAPI.hpp"
   #include "TypeMapping.hpp"
  -#include "ISoapSerializer.hpp"
   #include "WSDDDefines.hpp"
   
   /*
  @@ -34,7 +33,7 @@
   
   AXIS_CPP_NAMESPACE_START
   
  -class IWrapperSoapSerializer : public ISoapSerializer
  +class IWrapperSoapSerializer
   {
   public:
       virtual ~IWrapperSoapSerializer(){};
  
  
  
  1.43      +61 -159   ws-axis/c/src/common/AxisTrace.cpp
  
  Index: AxisTrace.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/AxisTrace.cpp,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- AxisTrace.cpp	17 Nov 2004 17:09:44 -0000	1.42
  +++ AxisTrace.cpp	19 Nov 2004 16:22:06 -0000	1.43
  @@ -32,30 +32,20 @@
   #include <cctype>
   
   extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
  -
   AXIS_CPP_NAMESPACE_START
  -
   using namespace std;
   
  -AxisTrace::AxisTrace ()
  -{
  -	m_bLoggingOn = false;
  -}
  -
  -AxisTrace::~AxisTrace ()
  -{
  -}
  +bool AxisTrace::m_bLoggingOn = false;
  +AxisFile *AxisTrace::m_fileTrace = NULL;
  +std::stack<std::string> AxisTrace::m_stack;
   
   int AxisTrace::openFile ()
   {
  +    m_fileTrace = new AxisFile();
       //char* sFileName = g_pConfig->getAxisLogPath ();
       char* sFileName = g_pConfig->getAxisConfProperty(AXCONF_LOGPATH);
       if (!sFileName) return AXIS_FAIL;
  -/*#ifndef WIN32
  -    setFilePerm(sFileName);
  -#endif
  -*/
  -    if(AXIS_FAIL == m_fileTrace.fileOpen(sFileName, "a"))
  +    if(AXIS_FAIL == m_fileTrace->fileOpen(sFileName, "a"))
           return AXIS_FAIL;
   	m_bLoggingOn = true;
         traceHeader();
  @@ -64,195 +54,106 @@
   
   int AxisTrace::openFileByClient ()
   {
  +    m_fileTrace = new AxisFile();
       //char* sFileName = g_pConfig->getAxisClientLogPath ();
       char* sFileName = g_pConfig->getAxisConfProperty(AXCONF_CLIENTLOGPATH);
       if (!sFileName) return AXIS_FAIL;
  -/*#ifndef WIN32
  -    setFilePerm(sFileName);
  -#endif
  -*/
  -    if(AXIS_FAIL == m_fileTrace.fileOpen(sFileName, "a"))
  +    if(AXIS_FAIL == m_fileTrace->fileOpen(sFileName, "a"))
           return AXIS_FAIL;
   	m_bLoggingOn = true;
       traceHeader();
       return AXIS_SUCCESS;
   }
   
  -int AxisTrace::setFilePerm(const char* sFileName)
  -{
  -/*    int length = strlen (sFileName) + 12;
  -    char* setPerm = new char[length];
  -    if (setPerm)
  -    {
  -        strcpy (setPerm, "chmod 766 ");
  -        strcat (setPerm, sFileName);
  -        delete [] setPerm;
  -    }
  -    else
  -        return AXIS_FAIL;
  -                                                                                      
                                      
  -#ifdef __GNUC__
  -    system (setPerm);
  -#endif
  -    if (AXIS_SUCCESS != (m_fileTrace.fileOpen(sFileName, "a")))
  -        return AXIS_FAIL;
  -*/
  -    return AXIS_SUCCESS;
  -}
  -
  -int AxisTrace::logthis (const char* sLog, int level, char* arg2, int arg3)
  +int AxisTrace::logaxis (const char* sLog1, const char* sLog2, int level,
  +    char* arg3, int arg4)
   {
       if (!m_bLoggingOn) return AXIS_FAIL;
   
       time_t ltime;
       time (&ltime);
  -
  -    //fputs ("Severity Level : ", m_fileTrace);
  -    m_fileTrace.filePuts("Severity Level : ");
  -
  +    string text = "Severity Level : ";
       switch (level)
       {
           case 1:
  -            m_pcLevel = "CRITICAL";
  +            text += "CRITICAL";
               break;
           case 2:
  -            m_pcLevel = "WARN";
  +            text += "WARN";
               break;
           case 3:
  -            m_pcLevel = "INFO";
  +            text += "INFO";
               break;
  -        case 4:
  -            m_pcLevel = "TRIVIAL";
  +        default:
  +            text += "TRIVIAL";
               break;
       }
   
  -    m_fileTrace.filePuts(m_pcLevel);
  -    /*fputs ("\n", m_fileTrace);
  -
  -    fputs ("time : ", m_fileTrace);
  -    fputs (ctime (&ltime), m_fileTrace);
  -    fputs ("file : ", m_fileTrace);
  -    fputs (arg2, m_fileTrace);
  -    fputs ("\n", m_fileTrace);
  -    fputs ("line : ", m_fileTrace);
  -    sprintf (m_acLine, "%d", arg3);
  -    fputs (m_acLine, m_fileTrace);
  -    fputs ("\n", m_fileTrace);
  -    fputs (sLog, m_fileTrace);
  -    fputs (":", m_fileTrace);
  -*/
  -
  -
  -
  -    m_fileTrace.filePuts ("\n");
  -
  -    m_fileTrace.filePuts ("time : ");
  -    m_fileTrace.filePuts (ctime (&ltime));
  -    m_fileTrace.filePuts ("file : ");
  -    m_fileTrace.filePuts (arg2);
  -    m_fileTrace.filePuts ("\n");
  -    m_fileTrace.filePuts ("line : ");
  -    sprintf (m_acLine, "%d", arg3);
  -    m_fileTrace.filePuts (m_acLine);
  -    m_fileTrace.filePuts ("\n");
  -    m_fileTrace.filePuts (sLog);
  -    m_fileTrace.filePuts (":");
  -
  -    return AXIS_SUCCESS;
  -
  -}
  -int AxisTrace::logaxis (const char* sLog, int level, char* arg2, int arg3)
  -{
  -    int iResult = logthis(sLog, level, arg2, arg3);
  -   /* fputs ("\n", m_fileTrace);
  -    fputs ("-------------------------------------------------", m_fileTrace);
  -    fputs ("\n", m_fileTrace);
  -
  -    fflush (m_fileTrace);*/
  -    if(AXIS_SUCCESS == iResult)
  -    {
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.filePuts ("-------------------------------------------------");
  -        m_fileTrace.filePuts ("\n");
  -
  -        m_fileTrace.fileFlush ();
  -    }
  +    traceLine(text.c_str());
  +    text = "time : ";
  +    text += ctime (&ltime);
  +    text += "file : ";
  +    text += arg3;
  +    traceLine(text.c_str());
  +    text = "line : ";
  +    char buff[32];
  +    sprintf (buff, "%d", arg4);
  +    text += buff;
  +    traceLine(text.c_str());
  +    text = sLog1;
  +    text += ":";
  +    if(0 != sLog2)
  +        text += sLog2;
  +    traceLine(text.c_str());
  +    traceLine("-------------------------------------------------");
       return AXIS_SUCCESS;
   }
   
  -int AxisTrace::logaxis (const char* sLog1, const char* sLog2, int level,
  -    char* arg3, int arg4)
  +int AxisTrace::logaxis (const char* sLog, int level, char* arg2, int arg3)
   {
  -    int iResult = logthis(sLog1, level, arg3, arg4);
  -    if(AXIS_SUCCESS == iResult)
  -    {
  -        /*fputs (sLog2, m_fileTrace);
  -        fputs ("\n", m_fileTrace);
  -        fputs ("-------------------------------------------------", m_fileTrace);
  -        fputs ("\n", m_fileTrace);
  -
  -        fflush (m_fileTrace);*/
  -        if(0 != sLog2)
  -            m_fileTrace.filePuts (sLog2);
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.filePuts ("-------------------------------------------------");
  -        m_fileTrace.filePuts ("\n");
  -
  -        m_fileTrace.fileFlush ();
  -
  -        return AXIS_SUCCESS;
  -    }
  -    return AXIS_FAIL;
  -
  +    return logaxis(sLog,NULL,level,arg2,arg3);
   }
  -
  +/*
   int AxisTrace::logaxis (const char* sLog1, const int nLog2, int level,
       char* arg3, int arg4)
   {
  -    int iResult = logthis(sLog1, level, arg3, arg4);
  -    char convToInt[5];
  -    if(AXIS_SUCCESS == iResult)
  -    {
  -        sprintf(convToInt, "%d", nLog2);
  -        m_fileTrace.filePuts (convToInt);
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.filePuts ("-------------------------------------------------");
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.fileFlush ();
  -
  -        return AXIS_SUCCESS;
  -    }
  -    return AXIS_FAIL;
  +    char convToInt[32];
  +    sprintf(convToInt, "%d", nLog2);
  +    return logaxis(sLog1,convToInt,level,arg3,arg4);
   }
   
   int AxisTrace::logaxis (const char* sLog1, const double dLog2, int level,
       char* arg3, int arg4)
   {
  -    int iResult = logthis(sLog1, level, arg3, arg4);
  -    char convToDouble[5];
  -    if(AXIS_SUCCESS == iResult)
  -    {
  -        sprintf(convToDouble, "%f", dLog2);
  -        m_fileTrace.filePuts (convToDouble);
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.filePuts ("-------------------------------------------------");
  -        m_fileTrace.filePuts ("\n");
  -        m_fileTrace.fileFlush ();
  -
  -        return AXIS_SUCCESS;
  -    }
  -    return AXIS_FAIL;
  +    char convToDouble[32];
  +    sprintf(convToDouble, "%f", dLog2);
  +    return logaxis(sLog1,convToDouble,level,arg3,arg4);
   }
  -
  +*/
   int AxisTrace::trace (const char *pchLog)
   {
  -    printf ("DEBUG LINE :\n%s\n", pchLog);
  +    if (pchLog != NULL) {
  +        traceLine(pchLog);
  +        printf ("DEBUG LINE :\n%s\n", pchLog);
  +    }
       return AXIS_SUCCESS;
   }
   
   void AxisTrace::traceHeader()
   {
       traceLine("--------- Axis C++ trace ----------");
  +    string text = "Axis C++ libraries built on ";
  +    text += __DATE__;
  +    text += " at ";
  +    text += __TIME__;
  +    traceLine(text.c_str());
  +
  +    time_t ltime;
  +    time (&ltime);
  +    text = "Trace produced on ";
  +    text += ctime (&ltime);
  +    traceLine(text.c_str());
  +
       traceLine("Dumping environment variables...");
       char *envVars[]={"PATH","LIBPATH","LD_LIBRARY_PATH","AXISCPP_DEPLOY","PWD",
           "CLASSPATH","INCLUDE","LIB","NLSPATH","OS","COMPUTERNAME","USERNAME",
  @@ -272,8 +173,9 @@
   void AxisTrace::traceLine(const char *data) 
   {
       if (!isTraceOn()) return;
  -    m_fileTrace.filePuts(data);
  -    m_fileTrace.filePuts("\n");
  +    m_fileTrace->filePuts(data);
  +    m_fileTrace->filePuts("\n");
  +    m_fileTrace->fileFlush();
       return;
   }
   
  
  
  
  1.17      +37 -39    ws-axis/c/src/common/AxisTrace.h
  
  Index: AxisTrace.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/AxisTrace.h,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- AxisTrace.h	17 Nov 2004 17:09:44 -0000	1.16
  +++ AxisTrace.h	19 Nov 2004 16:22:06 -0000	1.17
  @@ -29,12 +29,10 @@
   #include <stack>
   
   #if defined(ENABLE_AXISTRACE)  
  -  #define AXISTRACE1(X, Y) g_pAT->logaxis(X,Y,__FILE__,__LINE__);
  -  #define AXISTRACE2(X, Y, Z) g_pAT->logaxis(X,Y,Z,__FILE__,__LINE__);
  -  #define AXISTRACE3(X) g_pAT->trace(X);
  -  
  -#endif
  -#if !defined(ENABLE_AXISTRACE)
  +  #define AXISTRACE1(X, Y) AxisTrace::logaxis(X,Y,__FILE__,__LINE__);
  +  #define AXISTRACE2(X, Y, Z) AxisTrace::logaxis(X,Y,Z,__FILE__,__LINE__);
  +  #define AXISTRACE3(X) AxisTrace::trace(X);
  +#else
     #define AXISTRACE1(X,Y) "";
     #define AXISTRACE2(X,Y,Z) "";
     #define AXISTRACE3(X) "";
  @@ -45,8 +43,6 @@
       CRITICAL=1, WARN, INFO, TRIVIAL
   } AXIS_SEVERITY_LEVEL;
   
  -//using namespace std;
  -
   /**
    * @class AxisTrace
    * @brief This is class is used to log messages when AXISTRACE is defined.
  @@ -81,8 +77,8 @@
   class AxisTrace
   {
   public:
  -    AxisTrace();
  -    virtual ~AxisTrace();
  +    AxisTrace() {};
  +    virtual ~AxisTrace() {};
   
       /**
        * This is called in writing to the log file whose path is specified in 
  @@ -99,7 +95,7 @@
        * @return The status which indicates whether the operation is success 
        * (AXIS_SUCCESS) or not (AXIS_FAIL).
        */
  -    int logaxis(const char* sLog, int level, char* arg2, int arg3);
  +    static int logaxis(const char* sLog, int level, char* arg2, int arg3);
   
       /**
        * This is called in writing to the log file whose path is specified in 
  @@ -117,16 +113,16 @@
        * @return The status which indicates whether the operation is success 
        * (AXIS_SUCCESS) or not     * (AXIS_FAIL).
        */
  -    int logaxis(const char* sLog1, const char* sLog2, int level, char* arg3, 
  +    static int logaxis(const char* sLog1, const char* sLog2, int level, char* arg3, 
           int arg4);
   
       /**
        * This is called in writing to the log file whose path is specified in 
        * $AXIS_HOME/axiscpp.c     * onf file.
  -     * This method is used when the caller pass first argument as string and 
  -     * the second argument     * as long. First is his own message.
  +     * This method is used when the caller has two string messages 
  +     * as arguments. One may be his      *own message.
        * The other may be to print a trace value. User can also specify the 
  -     * severity of the messag     * e by
  +     * severity of the messag     *e by
        * assigning level argument to one of CRITICAL, WARN, INFO or TRIVIAL.
        * @param sLog1 string message one
        * @param sLog2 string message two  
  @@ -134,10 +130,10 @@
        * @param arg3 file name
        * @param arg4 line number
        * @return The status which indicates whether the operation is success 
  -     * (AXIS_SUCCESS) or not  (AXIS_FAIL).
  -    */
  -    int logaxis(const char* sLog1, const int nLog2, int level, char* arg3, 
  -        int arg4);
  +     * (AXIS_SUCCESS) or not     * (AXIS_FAIL).
  +     */
  +    //static int logaxis(const char* sLog1, const int nLog2, int level, char* arg3, 
  +    //    int arg4);
   
       /**
        * This is called in writing to the log file whose path is specified in 
  @@ -155,8 +151,8 @@
        * @return The status which indicates whether the operation is success
        * (AXIS_SUCCESS) or not (AXIS_FAIL).
        */
  -    int logaxis(const char* sLog1, const double dLog2, int level, 
  -        char* arg3, int arg4);
  +    //static int logaxis(const char* sLog1, const double dLog2, int level, 
  +    //    char* arg3, int arg4);
   
       /**
        * Writes the given string to the standard console. 
  @@ -166,7 +162,7 @@
        * @return The status which indicates whether the operation is success 
        * (AXIS_SUCCESS) or not (AXIS_FAIL).
        */
  -    int trace(const char* pchLog);
  +    static int trace(const char* pchLog);
   
       /**
        * Log file is opened for logging server side log messages
  @@ -177,7 +173,7 @@
        * @return The status which indicates whether the operation is successful
        * (AXIS_SUCCESS) or not (AXIS_FAIL).
        */
  -    int openFile();
  +    static int openFile();
   
       /**
        * Log file is opened for logging client side log messages
  @@ -188,46 +184,48 @@
        * @return The status which indicates whether the operation is success 
        * (AXIS_SUCCESS) or not (AXIS_FAIL).
        */
  -    int openFileByClient();
  +    static int openFileByClient();
   
       /**
        * Finds out whether trace is on.
        */
  -    inline bool isTraceOn() { return m_bLoggingOn; }
  +    static inline bool isTraceOn() { return m_bLoggingOn; }
   
       /**
        * Traces a single line.
        */  
  -    void traceLine(const char *data);
  +    static void traceLine(const char *data);
   
   	/**
   	 * Traces the entry to a method.
   	 */
  -	void traceEntry(const char *className, const char *methodName, void* that, int nParms,
...);
  +	static void traceEntry(const char *className, const char *methodName, void* that, int
nParms, ...);
   
   	/**
   	 * Traces the exit to a method.
   	 */
  -	void traceExit(const char *className, const char *methodName, int returnIndex,
  +	static void traceExit(const char *className, const char *methodName, int returnIndex,
   		AxisTraceType type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
   
   	/**
   	 * Traces something that has been caught
   	 */
  -	void traceCatch(const char *className, const char *methodName, int catchIndex,
  +	static void traceCatch(const char *className, const char *methodName, int catchIndex,
   		AxisTraceType type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
   
  +      /**
  +       * Closes the trace file
  +       */
  +      static void terminate() { m_bLoggingOn = false; delete m_fileTrace; m_fileTrace =
NULL; };
  +
   private:
  -	bool m_bLoggingOn;
  -    char m_acLine[4];
  -    char* m_pcLevel;
  -    AxisFile m_fileTrace;
  -	std::stack<std::string> m_stack;
  -
  -    int setFilePerm(const char* pcFileName);
  -    int logthis(const char* pcLog, int level, char* arg2, int arg3);
  -	void addParameter(std::string& line, AxisTraceType type, unsigned len, void *value);
  -    void traceHeader();
  +	static bool m_bLoggingOn;
  +    static AxisFile *m_fileTrace;
  +	static std::stack<std::string> m_stack;
  +
  +    static int logthis(const char* pcLog, int level, char* arg2, int arg3);
  +	static void addParameter(std::string& line, AxisTraceType type, unsigned len, void
*value);
  +    static void traceHeader();
   };
   
   AXIS_CPP_NAMESPACE_END
  
  
  
  1.17      +0 -2      ws-axis/c/src/common/Packet.cpp
  
  Index: Packet.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/Packet.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Packet.cpp	9 Nov 2004 15:55:25 -0000	1.16
  +++ Packet.cpp	19 Nov 2004 16:22:06 -0000	1.17
  @@ -25,8 +25,6 @@
   #include <stdio.h>
   #include <axis/server/AxisTrace.h>
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   extern "C"
   {
   
  
  
  
  1.19      +0 -1      ws-axis/c/src/engine/AppScopeHandlerPool.cpp
  
  Index: AppScopeHandlerPool.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/AppScopeHandlerPool.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- AppScopeHandlerPool.cpp	26 Oct 2004 10:21:59 -0000	1.18
  +++ AppScopeHandlerPool.cpp	19 Nov 2004 16:22:06 -0000	1.19
  @@ -25,7 +25,6 @@
   #include <axis/server/AxisException.hpp>
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX HandlerLoader* g_pHandlerLoader;
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.80      +3 -6      ws-axis/c/src/engine/Axis.cpp
  
  Index: Axis.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/Axis.cpp,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- Axis.cpp	5 Nov 2004 09:44:18 -0000	1.79
  +++ Axis.cpp	19 Nov 2004 16:22:06 -0000	1.80
  @@ -86,7 +86,6 @@
   // Unsynchronized read-only global variables.
   WSDDDeployment* g_pWSDDDeployment;
   AxisConfig* g_pConfig;
  -AxisTrace* g_pAT;
   
   //Keeps track of whether initialize_module/uninitialize_module was called
   bool g_bModuleInitialize;
  @@ -268,7 +267,7 @@
   
   #if defined(ENABLE_AXISTRACE)
   
  -            status = g_pAT->openFile ();
  +            status = AxisTrace::openFile ();
               if (status == AXIS_FAIL)
               {
                   // Samisa - make sure that we start service, even if we cannot open log
file
  @@ -305,7 +304,7 @@
   			XMLParserFactory::initialize();
               SOAPTransportFactory::initialize();
   #if defined(ENABLE_AXISTRACE)
  -            status = g_pAT->openFileByClient ();
  +            status = AxisTrace::openFileByClient ();
               /* //Samisa: 01/09/2004
                  //Fix for AXISCPP-127
                  //Do not stop here merely because log file location ClientLogPath is incorrect
  @@ -372,7 +371,6 @@
       // unsynchronized read-only global variables.
       g_pWSDDDeployment = new WSDDDeployment ();
       g_pConfig = new AxisConfig ();
  -    g_pAT = new AxisTrace ();
   }
   
   void ModuleUnInitialize ()
  @@ -388,8 +386,7 @@
       // unsynchronized read-only global variables.
       delete g_pWSDDDeployment;
       delete g_pConfig;
  -    delete g_pAT;
  -    g_pAT=0;
  +    AxisTrace::terminate();
   }
   
   // Axis class method implementations
  
  
  
  1.34      +0 -1      ws-axis/c/src/engine/AxisEngine.cpp
  
  Index: AxisEngine.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/AxisEngine.cpp,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- AxisEngine.cpp	23 Sep 2004 15:12:57 -0000	1.33
  +++ AxisEngine.cpp	19 Nov 2004 16:22:06 -0000	1.34
  @@ -26,7 +26,6 @@
   #include "SerializerPool.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX DeserializerPool* g_pDeserializerPool;
   extern AXIS_CPP_NAMESPACE_PREFIX SerializerPool* g_pSerializerPool;
   extern AXIS_CPP_NAMESPACE_PREFIX HandlerPool* g_pHandlerPool;
  
  
  
  1.16      +0 -2      ws-axis/c/src/engine/DeserializerPool.cpp
  
  Index: DeserializerPool.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/DeserializerPool.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- DeserializerPool.cpp	23 Sep 2004 15:12:57 -0000	1.15
  +++ DeserializerPool.cpp	19 Nov 2004 16:22:06 -0000	1.16
  @@ -22,8 +22,6 @@
   #include "DeserializerPool.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   
   using namespace std;
  
  
  
  1.20      +0 -2      ws-axis/c/src/engine/HandlerChain.cpp
  
  Index: HandlerChain.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/HandlerChain.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- HandlerChain.cpp	23 Sep 2004 15:12:57 -0000	1.19
  +++ HandlerChain.cpp	19 Nov 2004 16:22:06 -0000	1.20
  @@ -23,8 +23,6 @@
   #include "HandlerChain.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   
   
  
  
  
  1.34      +0 -1      ws-axis/c/src/engine/HandlerLoader.cpp
  
  Index: HandlerLoader.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/HandlerLoader.cpp,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- HandlerLoader.cpp	11 Nov 2004 11:09:31 -0000	1.33
  +++ HandlerLoader.cpp	19 Nov 2004 16:22:06 -0000	1.34
  @@ -31,7 +31,6 @@
   #include "../wsdd/WSDDDeployment.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX WSDDDeployment* g_pWSDDDeployment;
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.33      +0 -1      ws-axis/c/src/engine/HandlerPool.cpp
  
  Index: HandlerPool.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/HandlerPool.cpp,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- HandlerPool.cpp	26 Oct 2004 10:21:59 -0000	1.32
  +++ HandlerPool.cpp	19 Nov 2004 16:22:06 -0000	1.33
  @@ -28,7 +28,6 @@
   #include <axis/server/AxisException.hpp>
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX AppScopeHandlerPool* g_pAppScopeHandlerPool;
   extern AXIS_CPP_NAMESPACE_PREFIX RequestScopeHandlerPool* g_pRequestScopeHandlerPool;
   extern AXIS_CPP_NAMESPACE_PREFIX SessionScopeHandlerPool* g_pSessionScopeHandlerPool;
  
  
  
  1.22      +0 -1      ws-axis/c/src/engine/SOAPTransportFactory.cpp
  
  Index: SOAPTransportFactory.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/SOAPTransportFactory.cpp,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- SOAPTransportFactory.cpp	11 Nov 2004 11:09:31 -0000	1.21
  +++ SOAPTransportFactory.cpp	19 Nov 2004 16:22:06 -0000	1.22
  @@ -30,7 +30,6 @@
   #include "AxisEngineException.h"
   #include "../common/AxisTrace.h"
                                                                                         
                                      
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.18      +0 -2      ws-axis/c/src/engine/SerializerPool.cpp
  
  Index: SerializerPool.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/SerializerPool.cpp,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- SerializerPool.cpp	23 Sep 2004 15:12:57 -0000	1.17
  +++ SerializerPool.cpp	19 Nov 2004 16:22:07 -0000	1.18
  @@ -22,8 +22,6 @@
   #include "SerializerPool.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   
   
  
  
  
  1.20      +0 -1      ws-axis/c/src/engine/XMLParserFactory.cpp
  
  Index: XMLParserFactory.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/XMLParserFactory.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XMLParserFactory.cpp	11 Nov 2004 11:09:31 -0000	1.19
  +++ XMLParserFactory.cpp	19 Nov 2004 16:22:07 -0000	1.20
  @@ -30,7 +30,6 @@
   #include "AxisEngineException.h"
   #include "../common/AxisTrace.h"
                                                                                         
                                      
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.19      +0 -1      ws-axis/c/src/engine/client/ClientAxisEngine.cpp
  
  Index: ClientAxisEngine.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/client/ClientAxisEngine.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ClientAxisEngine.cpp	26 Oct 2004 10:22:00 -0000	1.18
  +++ ClientAxisEngine.cpp	19 Nov 2004 16:22:07 -0000	1.19
  @@ -28,7 +28,6 @@
   #include <axis/server/AxisException.hpp>
   #include "../../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX WSDDDeployment* g_pWSDDDeployment;
   extern AXIS_CPP_NAMESPACE_PREFIX HandlerPool* g_pHandlerPool;
   
  
  
  
  1.26      +0 -1      ws-axis/c/src/engine/server/ServerAxisEngine.cpp
  
  Index: ServerAxisEngine.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/server/ServerAxisEngine.cpp,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ServerAxisEngine.cpp	19 Nov 2004 15:00:55 -0000	1.25
  +++ ServerAxisEngine.cpp	19 Nov 2004 16:22:07 -0000	1.26
  @@ -25,7 +25,6 @@
   #include "../../common/AxisMessage.h"
   #include "../../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX HandlerPool* g_pHandlerPool;
   extern AXIS_CPP_NAMESPACE_PREFIX WSDDDeployment* g_pWSDDDeployment;
   
  
  
  
  1.31      +0 -2      ws-axis/c/src/soap/SoapBody.cpp
  
  Index: SoapBody.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapBody.cpp,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- SoapBody.cpp	16 Nov 2004 09:18:26 -0000	1.30
  +++ SoapBody.cpp	19 Nov 2004 16:22:07 -0000	1.31
  @@ -42,8 +42,6 @@
   #include "Attribute.h"
   #include "../common/AxisTrace.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   extern SoapEnvVersionsStruct gs_SoapEnvVersionsStruct[VERSION_LAST];
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.106     +0 -2      ws-axis/c/src/soap/SoapDeSerializer.cpp
  
  Index: SoapDeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- SoapDeSerializer.cpp	19 Nov 2004 10:13:15 -0000	1.105
  +++ SoapDeSerializer.cpp	19 Nov 2004 16:22:07 -0000	1.106
  @@ -65,8 +65,6 @@
   #include <list>
   #include <iostream>
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace *g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   #define INITIAL_ARRAY_SIZE 1
   #ifdef WIN32
  
  
  
  1.28      +0 -1      ws-axis/c/src/soap/SoapEnvelope.cpp
  
  Index: SoapEnvelope.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapEnvelope.cpp,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- SoapEnvelope.cpp	16 Nov 2004 09:18:26 -0000	1.27
  +++ SoapEnvelope.cpp	19 Nov 2004 16:22:07 -0000	1.28
  @@ -29,7 +29,6 @@
   #include "../common/AxisTrace.h"
   #include "Attribute.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern SoapEnvVersionsStruct gs_SoapEnvVersionsStruct[VERSION_LAST];
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.42      +0 -1      ws-axis/c/src/soap/SoapFault.cpp
  
  Index: SoapFault.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapFault.cpp,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- SoapFault.cpp	16 Nov 2004 09:18:26 -0000	1.41
  +++ SoapFault.cpp	19 Nov 2004 16:22:07 -0000	1.42
  @@ -48,7 +48,6 @@
   #include "../common/AxisTrace.h"
   #include "../common/AxisConfig.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
   
   extern SoapEnvVersionsStruct gs_SoapEnvVersionsStruct[VERSION_LAST];
  
  
  
  1.75      +0 -1      ws-axis/c/src/soap/SoapSerializer.cpp
  
  Index: SoapSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.cpp,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- SoapSerializer.cpp	11 Nov 2004 10:51:35 -0000	1.74
  +++ SoapSerializer.cpp	19 Nov 2004 16:22:07 -0000	1.75
  @@ -41,7 +41,6 @@
   #include "../common/AxisTrace.h"
   #include "../common/AxisConfig.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
   extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
   
   AXIS_CPP_NAMESPACE_START
  
  
  
  1.44      +0 -2      ws-axis/c/src/wsdd/WSDDDeployment.cpp
  
  Index: WSDDDeployment.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdd/WSDDDeployment.cpp,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- WSDDDeployment.cpp	26 Oct 2004 10:59:01 -0000	1.43
  +++ WSDDDeployment.cpp	19 Nov 2004 16:22:07 -0000	1.44
  @@ -27,8 +27,6 @@
   #include "../common/AxisTrace.h"
   #include "AxisWsddException.h"
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   
   
  
  
  
  1.40      +0 -2      ws-axis/c/src/wsdd/WSDDDocument.cpp
  
  Index: WSDDDocument.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdd/WSDDDocument.cpp,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- WSDDDocument.cpp	5 Nov 2004 09:44:20 -0000	1.39
  +++ WSDDDocument.cpp	19 Nov 2004 16:22:07 -0000	1.40
  @@ -26,8 +26,6 @@
   #define NAMESPACESEPARATOR 0x03    /* Heart */
   #define FILEBUFFSIZE 1024
   
  -extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;
  -
   AXIS_CPP_NAMESPACE_START
   
   WSDDDocument::WSDDDocument(map<AxisString, int>* pLibNameIdMap)
  
  
  
  1.9       +8 -9      ws-axis/c/tools/trace/org/apache/axis/tracetool/Tracer.java
  
  Index: Tracer.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/Tracer.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Tracer.java	12 Nov 2004 11:08:09 -0000	1.8
  +++ Tracer.java	19 Nov 2004 16:22:08 -0000	1.9
  @@ -71,7 +71,6 @@
   				+ "#include \""
   				+ prefix
   				+ "common/AxisTrace.h\"\n"
  -				+ "extern AXIS_CPP_NAMESPACE_PREFIX AxisTrace* g_pAT;\n"
   				+ "#endif\n");
   		flush();
   	}
  @@ -96,8 +95,8 @@
   		String line =
   			"\n"
   				+ "\t#ifdef ENABLE_AXISTRACE\n"
  -				+ "\t\tif (g_pAT && g_pAT->isTraceOn())\n"
  -				+ "\t\t\tg_pAT->traceEntry("
  +				+ "\t\tif (AXIS_CPP_NAMESPACE_PREFIX AxisTrace::isTraceOn())\n"
  +				+ "\t\t\tAXIS_CPP_NAMESPACE_PREFIX AxisTrace::traceEntry("
   				+ getClassName()
   				+ ", \""
   				+ signature.getMethodName()
  @@ -124,8 +123,8 @@
   		// Enclose the printf/return in {} in case if/then doesn't have {}
   		String line = "\t{\n";
   		line += "\t\t#ifdef ENABLE_AXISTRACE\n";
  -		line += "\t\t\tif (g_pAT && g_pAT->isTraceOn())\n";
  -		line += "\t\t\t\tg_pAT->traceExit("
  +		line += "\t\t\tif (AXIS_CPP_NAMESPACE_PREFIX AxisTrace::isTraceOn())\n";
  +		line += "\t\t\t\tAXIS_CPP_NAMESPACE_PREFIX AxisTrace::traceExit("
   			+ getClassName()
   			+ ", \""
   			+ signature.getMethodName()
  @@ -173,8 +172,8 @@
   			+ " traceRet = ("
   			+ value
   			+ ");\n";
  -		line += "\t\t\tif (g_pAT && g_pAT->isTraceOn())\n";
  -		line += "\t\t\t\tg_pAT->traceExit("
  +		line += "\t\t\tif (AXIS_CPP_NAMESPACE_PREFIX AxisTrace::isTraceOn())\n";
  +		line += "\t\t\t\tAXIS_CPP_NAMESPACE_PREFIX AxisTrace::traceExit("
   			+ getClassName()
   			+ ", \""
   			+ signature.getMethodName()
  @@ -200,8 +199,8 @@
   		String line =
   			"\n"
   				+ "\t#ifdef ENABLE_AXISTRACE\n"
  -				+ "\t\tif (g_pAT && g_pAT->isTraceOn())\n"
  -				+ "\t\t\tg_pAT->traceCatch("
  +				+ "\t\tif (AXIS_CPP_NAMESPACE_PREFIX AxisTrace::isTraceOn())\n"
  +				+ "\t\t\tAXIS_CPP_NAMESPACE_PREFIX AxisTrace::traceCatch("
   				+ getClassName()
   				+ ", \""
   				+ signature.getMethodName()
  
  
  

Mime
View raw message