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 wh...@apache.org on 2004/11/09 16:55:27 UTC

cvs commit: ws-axis/c/tools/trace/org/apache/axis/tracetool AddEntryAndExitTrace.java BodyPart.java Exclusions.java MethodPart.java Signature.java Tracer.java

whitlock    2004/11/09 07:55:27

  Modified:    c/src/common ArrayBean.cpp AxisTrace.cpp
                        BasicTypeSerializer.cpp MessageData.cpp Packet.cpp
                        Param.cpp
               c/src/soap SoapDeSerializer.cpp
               c/src/transport/axis2 Axis2Transport.cpp
               c/src/transport/axis AxisTransport.cpp AxisTransport.h
                        HttpTransport.cpp
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
                        ServiceHeaderWriter.java WrapHeaderWriter.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
                        BeanParamWriter.java ServiceHeaderWriter.java
               c/tools/trace/org/apache/axis/tracetool
                        AddEntryAndExitTrace.java BodyPart.java
                        Exclusions.java MethodPart.java Signature.java
                        Tracer.java
  Log:
  Various fixes including...
   - Replacing mallocs/frees/strdups with news/deletes
   - Changing wsdl2ws to make the generated service artifacts include the correct .hpp header files
   - Catch trace
  
  Revision  Changes    Path
  1.29      +6 -6      ws-axis/c/src/common/ArrayBean.cpp
  
  Index: ArrayBean.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/ArrayBean.cpp,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ArrayBean.cpp	29 Oct 2004 15:34:55 -0000	1.28
  +++ ArrayBean.cpp	9 Nov 2004 15:55:25 -0000	1.29
  @@ -110,10 +110,10 @@
                   AxisChar** a = (AxisChar**)m_value.sta;
                   for (int ix=0;ix<m_nSize;ix++)
                   {
  -                    free(*a);
  +                    delete [] *a;
                       a++;
                   }
  -                free(m_value.sta);
  +                delete [] m_value.sta;
               }
                   break;
               case XSD_HEXBINARY:
  @@ -121,10 +121,10 @@
                   xsd__hexBinary* a = (xsd__hexBinary*)m_value.sta;
                   for (int ix=0;ix<m_nSize;ix++)
                   {
  -                    free(a->__ptr);
  +                    delete [] a->__ptr;
                       a++;
                   }
  -                free(m_value.sta);
  +                delete [] m_value.sta;
               }
                   break;
               case XSD_BASE64BINARY:
  @@ -132,10 +132,10 @@
                   xsd__base64Binary* a = (xsd__base64Binary*)m_value.sta;
                   for (int ix=0;ix<m_nSize;ix++)
                   {
  -                    free(a->__ptr);
  +                    delete [] a->__ptr;
                       a++;
                   }
  -                free(m_value.sta);
  +                delete [] m_value.sta;
               }
                   break;
               case XSD_DATETIME:
  
  
  
  1.39      +3 -2      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.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- AxisTrace.cpp	8 Nov 2004 16:47:55 -0000	1.38
  +++ AxisTrace.cpp	9 Nov 2004 15:55:25 -0000	1.39
  @@ -78,11 +78,12 @@
   int AxisTrace::setFilePerm(const char* sFileName)
   {
   /*    int length = strlen (sFileName) + 12;
  -    char* setPerm = (char *) malloc (length);
  +    char* setPerm = new char[length];
       if (setPerm)
       {
           strcpy (setPerm, "chmod 766 ");
           strcat (setPerm, sFileName);
  +        delete [] setPerm;
       }
       else
           return AXIS_FAIL;
  @@ -353,7 +354,7 @@
   
   		string line;
   		for (int is=0; is<m_stack.size(); is++) line += " ";
  -		line += "!";
  +		line += "! ";
   		if (NULL!=className) {
   			line += className;
   			line += "::";
  
  
  
  1.32      +4 -4      ws-axis/c/src/common/BasicTypeSerializer.cpp
  
  Index: BasicTypeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/BasicTypeSerializer.cpp,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- BasicTypeSerializer.cpp	9 Sep 2004 05:56:14 -0000	1.31
  +++ BasicTypeSerializer.cpp	9 Nov 2004 15:55:25 -0000	1.32
  @@ -151,22 +151,22 @@
   const AxisChar* BasicTypeSerializer::encodeToHexBinary 
       (const xsd__hexBinary* pBinary)
   {
  -    char* outstr = (char*) malloc (pBinary->__size * 2 + 1);
  +    char* outstr = new char[pBinary->__size * 2 + 1];
       Hex_Encode (outstr, pBinary->__ptr, pBinary->__size);
       outstr[pBinary->__size * 2] = 0;
       m_AuxStr = outstr;
  -    free (outstr);
  +    delete [] outstr;
       return m_AuxStr.c_str ();
   }
   
   const AxisChar* BasicTypeSerializer::encodeToBase64Binary (const xsd__base64Binary* pBinary)
   {
       int len = apr_base64_encode_len (pBinary->__size);
  -    char* outstr = (char*) malloc (len + 1);
  +    char* outstr = new char[len + 1];
       len = apr_base64_encode_binary (outstr, pBinary->__ptr, pBinary->__size);
       outstr[len] = 0;
       m_AuxStr = outstr;
  -    free (outstr);
  +    delete [] outstr;
       return m_AuxStr.c_str ();
   }
   
  
  
  
  1.29      +6 -6      ws-axis/c/src/common/MessageData.cpp
  
  Index: MessageData.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/MessageData.cpp,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- MessageData.cpp	29 Oct 2004 15:34:55 -0000	1.28
  +++ MessageData.cpp	9 Nov 2004 15:55:25 -0000	1.29
  @@ -45,8 +45,8 @@
   
       while (itCurrentItem != m_Properties.end ())
       {
  -        free ((*itCurrentItem).first);
  -        free ((*itCurrentItem).second);
  +        delete [] (*itCurrentItem).first;
  +        delete [] (*itCurrentItem).second;
   
           itCurrentItem++;
       }
  @@ -138,9 +138,9 @@
   
   int MessageData::setProperty (AxisChar* pachName, const AxisChar* pachValue)
   {
  -    AxisChar* pachTmpName = (AxisChar*) malloc (strlen (pachName) + 1);
  +    AxisChar* pachTmpName = new AxisChar[strlen (pachName) + 1];
       strcpy (pachTmpName, pachName);
  -    AxisChar* pachTmpValue = (AxisChar*) malloc (strlen (pachValue) + 1);
  +    AxisChar* pachTmpValue = new AxisChar[strlen (pachValue) + 1];
       strcpy (pachTmpValue, pachValue);
   
       m_Properties[pachTmpName] = pachTmpValue;
  @@ -150,9 +150,9 @@
   
   int MessageData::setProperty (AxisChar* pachName, const void* pachValue, int len)
   {
  -     AxisChar* pachTmpName = (AxisChar*) malloc (strlen (pachName) + 1);
  +     AxisChar* pachTmpName = new AxisChar[strlen (pachName) + 1];
        strcpy (pachTmpName, pachName);
  -     AxisChar* pachTmpValue = (AxisChar*) malloc (len);
  +     AxisChar* pachTmpValue = new AxisChar[len];
        memcpy (pachTmpValue, pachValue, len);
    
        m_Properties[pachTmpName] = pachTmpValue;
  
  
  
  1.16      +9 -7      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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Packet.cpp	26 Oct 2004 09:37:57 -0000	1.15
  +++ Packet.cpp	9 Nov 2004 15:55:25 -0000	1.16
  @@ -46,12 +46,14 @@
               case APTHTTP:
                   count = stream->so.http->op_headercount;
                   temp = stream->so.http->op_headers;
  -                if (stream->so.http->op_headers)
  -                    stream->so.http->op_headers = (Ax_header*) realloc(temp,
  -                        (sizeof(Ax_header) * (count + 1)));
  +                if (stream->so.http->op_headers) 
  +                {
  +                    stream->so.http->op_headers = new Ax_header[count + 1];
  +                    memcpy(stream->so.http->op_headers,temp,sizeof(Ax_header)*(count+1));
  +                    delete [] temp;
  +                }
                   else
  -                    stream->so.http->op_headers = (Ax_header *)
  -                        malloc ((sizeof (Ax_header) * (count + 1)));
  +                    stream->so.http->op_headers = new Ax_header[count + 1];
                   stream->so.http->op_headers[count].headername = pchkey;
                   stream->so.http->op_headers[count].headervalue = pchvalue;
                   stream->so.http->op_headercount = count + 1;
  @@ -74,13 +76,13 @@
                   if (stream->so.http->ip_headercount > 0)
                   {
                       stream->so.http->ip_headercount = 0;
  -                    free (stream->so.http->ip_headers);
  +                    delete [] stream->so.http->ip_headers;
                       stream->so.http->ip_headers = NULL;
                   }
                   if (stream->so.http->op_headercount > 0)
                   {
                       stream->so.http->op_headercount = 0;
  -                    free (stream->so.http->op_headers);
  +                    delete [] stream->so.http->op_headers;
                       stream->so.http->op_headers = NULL;
                   }
                   break;
  
  
  
  1.42      +4 -4      ws-axis/c/src/common/Param.cpp
  
  Index: Param.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/Param.cpp,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- Param.cpp	29 Oct 2004 15:34:55 -0000	1.41
  +++ Param.cpp	9 Nov 2004 15:55:25 -0000	1.42
  @@ -53,14 +53,14 @@
           case XSD_NOTATION:
               if (AxisEngine::m_bServer)
               {
  -                free ((void*) m_Value.pStrValue);
  +                delete [] const_cast<char*>(m_Value.pStrValue);
               }
               break;
           case XSD_BASE64BINARY:
           case XSD_HEXBINARY:
               if (AxisEngine::m_bServer)
               {
  -                free ((void*) (m_Value.hbValue.__ptr));
  +                delete [] m_Value.hbValue.__ptr;
               }
               break;
           case XSD_ANY:
  @@ -68,9 +68,9 @@
               for (i=0; i<pAny->_size; i++)
               {
                   pStr = pAny->_array[i];
  -                if (pStr) free(pStr);
  +                if (pStr) delete [] pStr;
               }
  -            free(pAny);
  +            delete [] pAny;
           default:;
       }
   }
  
  
  
  1.98      +12 -6     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.97
  retrieving revision 1.98
  diff -u -r1.97 -r1.98
  --- SoapDeSerializer.cpp	8 Nov 2004 13:34:39 -0000	1.97
  +++ SoapDeSerializer.cpp	9 Nov 2004 15:55:26 -0000	1.98
  @@ -791,13 +791,15 @@
                   }\
                   /* if we come here that means the array allocated is */\
                   /* not enough. So double it */\
  -                Array.m_Array = realloc(Array.m_Array, \
  -                    sizeof(cpp_type)*(Array.m_Size*2));\
  +                void *tmp=Array.m_Array;\
  +                Array.m_Array = new cpp_type[Array.m_Size*2];\
                   if (!Array.m_Array) \
                   {\
                       Array.m_Size = 0;\
                       return Array;\
                   }\
  +                memcpy(Array.m_Array,tmp,Array.m_Size*sizeof(cpp_type));\
  +                delete [] tmp;\
                   Array.m_Size *= 2;\
                   /*Array.m_RealSize = Array.m_Size;*/\
               }\
  @@ -995,13 +997,15 @@
                   /* if we come here that means the array allocated is not enough
                    * So double it
                    */
  -                Array.m_Array = realloc(Array.m_Array, 
  -                    sizeof(int)*(Array.m_Size*2));
  +                void *tmp=Array.m_Array;
  +                Array.m_Array = new int[Array.m_Size*2];
                   if (!Array.m_Array) 
                   {
                       Array.m_Size = 0;
                       return Array;
                   }
  +                memcpy(Array.m_Array,tmp,Array.m_Size*sizeof(int));
  +                delete [] tmp;
                   Array.m_Size *= 2;
                   /* Array.m_RealSize = Array.m_Size;*/
               }
  @@ -1115,13 +1119,15 @@
                   }
                   /* if we come here that means the array allocated is */
                   /* not enough. So double it */
  -                Array.m_Array = realloc(Array.m_Array, 
  -                    sizeof(long)*(Array.m_Size*2));
  +                void *tmp=Array.m_Array;
  +                Array.m_Array = new long[Array.m_Size*2];
                   if (!Array.m_Array) 
                   {
                       Array.m_Size = 0;
                       return Array;
                   }
  +                memcpy(Array.m_Array,tmp,Array.m_Size*sizeof(long));
  +                delete [] tmp;
                   Array.m_Size *= 2;
                   /*Array.m_RealSize = Array.m_Size;*/
               }
  
  
  
  1.14      +1 -1      ws-axis/c/src/transport/axis2/Axis2Transport.cpp
  
  Index: Axis2Transport.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/transport/axis2/Axis2Transport.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Axis2Transport.cpp	9 Nov 2004 09:40:55 -0000	1.13
  +++ Axis2Transport.cpp	9 Nov 2004 15:55:26 -0000	1.14
  @@ -59,7 +59,7 @@
   {
       if (m_pcEndpointUri)
       {
  -	free (m_pcEndpointUri);
  +	delete [] m_pcEndpointUri;
       }
   
       delete m_pChannel;
  
  
  
  1.41      +1 -1      ws-axis/c/src/transport/axis/AxisTransport.cpp
  
  Index: AxisTransport.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/transport/axis/AxisTransport.cpp,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- AxisTransport.cpp	5 Nov 2004 09:44:19 -0000	1.40
  +++ AxisTransport.cpp	9 Nov 2004 15:55:26 -0000	1.41
  @@ -67,7 +67,7 @@
       if(m_pHttpTransport)
           delete m_pHttpTransport;
       if(m_pcEndpointUri)
  -        free(m_pcEndpointUri);
  +        delete [] m_pcEndpointUri;
   }
   
   int AxisTransport::openConnection()
  
  
  
  1.14      +1 -1      ws-axis/c/src/transport/axis/AxisTransport.h
  
  Index: AxisTransport.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/transport/axis/AxisTransport.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AxisTransport.h	6 Aug 2004 14:44:40 -0000	1.13
  +++ AxisTransport.h	9 Nov 2004 15:55:26 -0000	1.14
  @@ -58,7 +58,7 @@
   	void setAttachment(const char* pcAttachmentId, const char* pcAttachment){};
   	const char* getAttachment(const char* pcAttachmentId){return "value";};
   	void setEndpointUri(const char* pcEndpointUri)
  -	{m_pcEndpointUri = strdup(pcEndpointUri);};
  +	{m_pcEndpointUri = new char[strlen(pcEndpointUri)+1]; strcpy(m_pcEndpointUri,pcEndpointUri);};
   	void setSessionId(const char* pcSessionId){};
   	const char* getSessionId(){return "some session id";};
   	const char* getServiceName();
  
  
  
  1.47      +2 -2      ws-axis/c/src/transport/axis/HttpTransport.cpp
  
  Index: HttpTransport.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/transport/axis/HttpTransport.cpp,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- HttpTransport.cpp	26 Oct 2004 10:41:35 -0000	1.46
  +++ HttpTransport.cpp	9 Nov 2004 15:55:26 -0000	1.47
  @@ -725,7 +725,7 @@
               sprintf(pcIntToBuff, "%d", nHttpStatusCode);
               strcpy(pcMessage, "Http error code is : ");
               strcat(pcMessage, pcIntToBuff); 
  -	    throw AxisTransportException(SERVER_TRANSPORT_PROCESS_EXCEPTION, strdup(pcMessage));
  +	    throw AxisTransportException(SERVER_TRANSPORT_PROCESS_EXCEPTION, pcMessage);
   	}
   	else if (nHttpStatus == 4)
   	    /* Status code is 4xx; some error has occurred */
  @@ -737,7 +737,7 @@
               sprintf(pcIntToBuff, "%d", nHttpStatusCode);
               strcpy(pcMessage, "Http error code is : ");
               strcat(pcMessage, pcIntToBuff); 
  -	    throw AxisTransportException(SERVER_TRANSPORT_PROCESS_EXCEPTION, strdup(pcMessage));
  +	    throw AxisTransportException(SERVER_TRANSPORT_PROCESS_EXCEPTION, pcMessage);
   	}
   	else if (nHttpStatus == 5)
   	    /* Status code is 5xx; some error has occurred */
  
  
  
  1.31      +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
  
  Index: ServiceHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- ServiceHeaderWriter.java	9 Nov 2004 10:26:20 -0000	1.30
  +++ ServiceHeaderWriter.java	9 Nov 2004 15:55:26 -0000	1.31
  @@ -213,7 +213,7 @@
               Iterator types = this.wscontext.getTypemap().getTypes().iterator();
               HashSet typeSet = new HashSet();
               writer.write("#include <axis/server/AxisUserAPI.hpp>\n");
  -            writer.write("#include \"AxisServiceException.h\" \n\n");
  +            writer.write("#include \"AxisServiceException.hpp\" \n\n");
               String typeName = null;
               while (types.hasNext())
               {
  
  
  
  1.26      +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java
  
  Index: WrapHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- WrapHeaderWriter.java	9 Nov 2004 10:26:20 -0000	1.25
  +++ WrapHeaderWriter.java	9 Nov 2004 15:55:26 -0000	1.26
  @@ -145,7 +145,7 @@
               writer.write("#include <axis/server/IMessageData.hpp>\n");
               writer.write("#include <axis/server/GDefine.hpp>\n");
               writer.write("#include <axis/server/AxisWrapperAPI.hpp>\n");
  -            writer.write("#include \"AxisServiceException.h\" \n");
  +            writer.write("#include \"AxisServiceException.hpp\" \n");
               writer.write("AXIS_CPP_NAMESPACE_USE \n\n");
               //writeFaultHeaders();
   
  
  
  
  1.35      +2 -2      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
  
  Index: BeanParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- BeanParamWriter.java	4 Nov 2004 14:06:24 -0000	1.34
  +++ BeanParamWriter.java	9 Nov 2004 15:55:26 -0000	1.35
  @@ -329,9 +329,9 @@
   			else if (attribs[i].isAnyType()){
   				writer.write("\tif ("+attribs[i].getParamNameAsMember()+") \n\t{ \n");
   				writer.write("\t\tfor (int i=0; i<"+attribs[i].getParamNameAsMember()+"->_size; i++)\n\t\t{\n");
  -				writer.write("\t\t\tif ("+attribs[i].getParamNameAsMember()+"->_array[i]) free("+attribs[i].getParamNameAsMember()+"->_array[i]);\n");
  +				writer.write("\t\t\tif ("+attribs[i].getParamNameAsMember()+"->_array[i]) delete "+attribs[i].getParamNameAsMember()+"->_array[i];\n");
   				writer.write("\t\t}\n");
  -				writer.write("\t\tfree("+attribs[i].getParamNameAsMember()+");\n");
  +				writer.write("\t\tdelete "+attribs[i].getParamNameAsMember()+";\n");
   				writer.write("\t}\n");
   				
   			}
  
  
  
  1.21      +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
  
  Index: ServiceHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ServiceHeaderWriter.java	9 Nov 2004 10:26:21 -0000	1.20
  +++ ServiceHeaderWriter.java	9 Nov 2004 15:55:26 -0000	1.21
  @@ -75,7 +75,7 @@
               Iterator types = this.wscontext.getTypemap().getTypes().iterator();
               HashSet typeSet = new HashSet();
               writer.write("#include <axis/server/AxisUserAPI.hpp>\n");
  -            writer.write("#include \"AxisServiceException.h\" \n\n");
  +            writer.write("#include \"AxisServiceException.hpp\" \n\n");
               while (types.hasNext())
               {
                   atype = (Type) types.next();
  
  
  
  1.3       +3 -1      ws-axis/c/tools/trace/org/apache/axis/tracetool/AddEntryAndExitTrace.java
  
  Index: AddEntryAndExitTrace.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/AddEntryAndExitTrace.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AddEntryAndExitTrace.java	27 Sep 2004 15:33:46 -0000	1.2
  +++ AddEntryAndExitTrace.java	9 Nov 2004 15:55:26 -0000	1.3
  @@ -139,8 +139,10 @@
   				BodyPart[] bps = mp.getBodyParts();
   				for (int i = 0; i < bps.length; i++) {
   					outputFile.write(bps[i].getCodeFragment());
  -					if (bps[i].getReturnValue() != null)
  +					if (bps[i].isReturn())
   						outputFile.traceExit(bps[i].getReturnValue());
  +					else if (bps[i].isCatch())
  +						outputFile.traceCatch(bps[i].getCaughtValue());
   					else if (i < bps.length - 1)
   						outputFile.traceExit();
   				}
  
  
  
  1.2       +38 -3     ws-axis/c/tools/trace/org/apache/axis/tracetool/BodyPart.java
  
  Index: BodyPart.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/BodyPart.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BodyPart.java	20 Sep 2004 16:09:58 -0000	1.1
  +++ BodyPart.java	9 Nov 2004 15:55:26 -0000	1.2
  @@ -20,23 +20,58 @@
    * statement, this body part also contains the return value.
    */
   public class BodyPart {
  -	String codeFragment;
  -	String returnValue = null;
  +      public final static int TRAILING = 0;
  +      public final static int RETURN = 1;
  +      public final static int CATCH = 2;
  +
  +	private String codeFragment;
  +	private String returnValue = null;
  +      private Parameter caughtValue = null;
  +      private int type;
  +
  +	BodyPart(String cf) {
  +		codeFragment = cf;
  +            type = TRAILING;
  +	}
   
   	BodyPart(String cf, String rv) {
   		codeFragment = cf;
  -		if (null != rv && !Utils.isSpace(rv))
  +		if (null != rv && !Utils.isSpace(rv)) {
  +                  type = RETURN;
   			returnValue = rv;
  +            } else type = TRAILING;
  +	}
  +
  +	BodyPart(String cf, Parameter cv) {
  +		codeFragment = cf;
  +		caughtValue = cv;
  +            type = CATCH;
   	}
   
   	String getCodeFragment() {
   		return codeFragment;
   	}
   
  +	boolean isTrailing() {
  +		return TRAILING==type;
  +	}
  +
  +	boolean isReturn() {
  +		return RETURN==type;
  +	}
  +
  +	boolean isCatch() {
  +		return CATCH==type;
  +	}
  +
   	String getReturnValue() {
   		if (returnValue != null)
   			return returnValue.trim();
   		else
   			return null;
  +	}
  +
  +	Parameter getCaughtValue() {
  +		return caughtValue;
   	}
   }
  
  
  
  1.7       +1 -0      ws-axis/c/tools/trace/org/apache/axis/tracetool/Exclusions.java
  
  Index: Exclusions.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/Exclusions.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Exclusions.java	4 Nov 2004 14:42:21 -0000	1.6
  +++ Exclusions.java	9 Nov 2004 15:55:26 -0000	1.7
  @@ -44,6 +44,7 @@
   			"Channel.hpp",
   			"Channel.h",
   			"Channel.cpp",
  +			"SoapSerializer.cpp",
   		// Axis.cpp contains a copyright sign (circle with a "C" in it) which 
   		// makes readline throw a MalformedInputException on linux possibly due to 
   		// locale/charset problems.
  
  
  
  1.2       +24 -10    ws-axis/c/tools/trace/org/apache/axis/tracetool/MethodPart.java
  
  Index: MethodPart.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/MethodPart.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MethodPart.java	20 Sep 2004 16:09:58 -0000	1.1
  +++ MethodPart.java	9 Nov 2004 15:55:26 -0000	1.2
  @@ -51,14 +51,28 @@
   
           // Add in trace exit at all the return statements in the method.
   		ArrayList al = new ArrayList();
  -		int idx;
  -		while (-1 != (idx = Utils.indexOf(b, "return"))) {
  -			String frag = b.substring(0, idx);
  -			String rest = b.substring(idx + "return".length());
  -			String retVal = rest.substring(0, Utils.indexOf(rest, ';'));
  -			BodyPart bp = new BodyPart(frag, retVal);
  -			al.add(bp);
  -			b = b.substring(idx + "return".length() + retVal.length() + 1);
  +		int idxR = Utils.indexOf(b, "return");
  +		int idxC = Utils.indexOf(b, "catch");
  +		while (-1 != idxR || -1 != idxC) {
  +                  if (-1 == idxC || (-1 != idxR && idxR < idxC)) {
  +				String frag = b.substring(0, idxR);
  +				String rest = b.substring(idxR + "return".length());
  +				String retVal = rest.substring(0, Utils.indexOf(rest, ';'));
  +				BodyPart bp = new BodyPart(frag, retVal);
  +				al.add(bp);
  +				b = b.substring(idxR + "return".length() + retVal.length() + 1);
  +                  } else {
  +				String frag = b.substring(0, idxC);
  +				String rest = b.substring(idxC);
  +                        int brace = Utils.indexOf(rest, "{");
  +                        Signature signature = new Signature(rest.substring(0,brace));
  +                        frag = frag + rest.substring(0,brace+1);
  +				BodyPart bp = new BodyPart(frag, signature.getParameters()[0]);
  +				al.add(bp);
  +				b = rest.substring(brace+1);
  +                  }
  +		      idxR = Utils.indexOf(b, "return");
  +		      idxC = Utils.indexOf(b, "catch");
   		}
   
           // Add in trace exit before the last } if there are no returns in 
  @@ -82,12 +96,12 @@
   			&& null == signature.getReturnType().getType()) {
   			int last = b.lastIndexOf('}');
   			String b2 = b.substring(0, last);
  -			al.add(new BodyPart(b2, null));
  +			al.add(new BodyPart(b2));
   			b = b.substring(last);
   		}
   
           // The final body part is the last }
  -		al.add(new BodyPart(b, null));
  +		al.add(new BodyPart(b));
   
   		BodyPart[] bps = new BodyPart[al.size()];
   		System.arraycopy(al.toArray(), 0, bps, 0, al.size());
  
  
  
  1.4       +1 -2      ws-axis/c/tools/trace/org/apache/axis/tracetool/Signature.java
  
  Index: Signature.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/tools/trace/org/apache/axis/tracetool/Signature.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Signature.java	4 Nov 2004 14:42:21 -0000	1.3
  +++ Signature.java	9 Nov 2004 15:55:26 -0000	1.4
  @@ -310,8 +310,7 @@
   			}
   			
   			// Copes with void func(void)
  -                  // TODO: Cope with ...
  -			if (!p.isVoid() && !p.isDotDotDot())
  +			if (!p.isVoid())
   				alParams.add(p);
   		}
   
  
  
  
  1.6       +23 -0     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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Tracer.java	2 Nov 2004 13:53:32 -0000	1.5
  +++ Tracer.java	9 Nov 2004 15:55:26 -0000	1.6
  @@ -183,6 +183,26 @@
   		flush();
   	}
   
  +	void traceCatch(Parameter value) throws Exception {
  +		if (!signature.traceable())
  +			return;
  +
  +		String line =
  +			"\n"
  +				+ "\t#ifdef ENABLE_AXISTRACE\n"
  +				+ "\t\tif (g_pAT && g_pAT->isTraceOn())\n"
  +				+ "\t\t\tg_pAT->traceCatch("
  +				+ getClassName()
  +				+ ", \""
  +				+ signature.getMethodName()
  +				+ "\""
  +                        + getTypeParms(value);
  +		line += ");\t" + SIGNATURE + "\n";
  +		line += "\t#endif\n";
  +		write(line);
  +		flush();
  +	}
  +
   	public void write(String s) throws IOException {
   		super.write(s);
   		if (AddEntryAndExitTrace.verbose)
  @@ -193,6 +213,9 @@
   	// TODO cope with pointers to primitives
   	// TODO cope with references
   	private String getTypeParms(Parameter p) {
  +            // copes with catch (...)
  +            if ("...".equals(p.getType())) return " ";
  +
   		String parms = ",\n\t\t\t\t\tAXIS_CPP_NAMESPACE_PREFIX TRACETYPE_";
   		String name = p.getName();
   		if (null == name)