You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/11/22 11:11:42 UTC

svn commit: r478106 [1/3] - /webservices/axis/trunk/c/src/soap/xsd/

Author: nadiramra
Date: Wed Nov 22 02:11:36 2006
New Revision: 478106

URL: http://svn.apache.org/viewvc?view=rev&rev=478106
Log:
AXISCPP-1008 memory leak in error paths of xsd types

Modified:
    webservices/axis/trunk/c/src/soap/xsd/AnyURI.cpp
    webservices/axis/trunk/c/src/soap/xsd/Base64Binary.cpp
    webservices/axis/trunk/c/src/soap/xsd/Boolean.cpp
    webservices/axis/trunk/c/src/soap/xsd/Date.cpp
    webservices/axis/trunk/c/src/soap/xsd/DateTime.cpp
    webservices/axis/trunk/c/src/soap/xsd/Decimal.cpp
    webservices/axis/trunk/c/src/soap/xsd/Double.cpp
    webservices/axis/trunk/c/src/soap/xsd/Duration.cpp
    webservices/axis/trunk/c/src/soap/xsd/Float.cpp
    webservices/axis/trunk/c/src/soap/xsd/GDay.cpp
    webservices/axis/trunk/c/src/soap/xsd/GMonth.cpp
    webservices/axis/trunk/c/src/soap/xsd/GMonthDay.cpp
    webservices/axis/trunk/c/src/soap/xsd/GYear.cpp
    webservices/axis/trunk/c/src/soap/xsd/GYearMonth.cpp
    webservices/axis/trunk/c/src/soap/xsd/HexBinary.cpp
    webservices/axis/trunk/c/src/soap/xsd/IAnySimpleType.cpp
    webservices/axis/trunk/c/src/soap/xsd/Int.cpp
    webservices/axis/trunk/c/src/soap/xsd/Integer.cpp
    webservices/axis/trunk/c/src/soap/xsd/Long.cpp
    webservices/axis/trunk/c/src/soap/xsd/NOTATION.cpp
    webservices/axis/trunk/c/src/soap/xsd/NonNegativeInteger.cpp
    webservices/axis/trunk/c/src/soap/xsd/Short.cpp
    webservices/axis/trunk/c/src/soap/xsd/String.cpp
    webservices/axis/trunk/c/src/soap/xsd/Time.cpp
    webservices/axis/trunk/c/src/soap/xsd/XSD_QName.cpp

Modified: webservices/axis/trunk/c/src/soap/xsd/AnyURI.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/AnyURI.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/AnyURI.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/AnyURI.cpp Wed Nov 22 02:11:36 2006
@@ -17,142 +17,132 @@
 
 AXIS_CPP_NAMESPACE_START
 
-    AnyURI::AnyURI()
-    {
-    }
-
-    AnyURI::AnyURI(const xsd__anyURI value)
-    {
-        if (value)
-        {
-            setNil(false);            
-            serialize(value);
-        }
-    }
+AnyURI::AnyURI()
+{
+}
+
+AnyURI::AnyURI(const xsd__anyURI value)
+{
+    if (value)
+    {
+        setNil(false);            
+        serialize(value);
+    }
+}
+
+XSDTYPE AnyURI::getType()
+{
+    return XSD_ANYURI;
+}
+
+xsd__anyURI AnyURI::getAnyURI()
+{
+    if (isNil())
+        return NULL;
+    else
+        return deserializeAnyURI(m_Buf);
+}
+
+void * AnyURI::getValue()
+{
+    return (void*) getAnyURI();
+}
+
+AxisChar* AnyURI::serialize(const xsd__anyURI value) throw (AxisSoapException)
+{
+    AxisString exceptionMessage;
+    char lengthAsString[100];
     
-    XSDTYPE AnyURI::getType()
-    {
-        return XSD_ANYURI;
-    }
-
-    xsd__anyURI AnyURI::getAnyURI()
-    {
-        if (isNil())
-        {
-            return NULL;
-        }
-        else
-        {
-            return deserializeAnyURI(m_Buf);
-        }
-    }
-
-    void * AnyURI::getValue()
-    {
-        return (void*) getAnyURI();
-    }
-
-    AxisChar* AnyURI::serialize(const xsd__anyURI value) throw (AxisSoapException)
-    {
-        MinLength* minLength= getMinLength();
-        if (minLength->isSet())
-        {
-            if (strlen(value) < (unsigned int) minLength->getMinLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is shorter than MinLength specified for this type.  Minlength = ";
-                AxisChar* length = new AxisChar[10];
-                sprintf(length, "%d", minLength->getMinLength());
-                exceptionMessage += length;
-                exceptionMessage += ", Length of value = ";
-                sprintf(length, "%d", strlen(value));
-                exceptionMessage += length;
-                exceptionMessage += ".";
-                delete [] length;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete minLength;
-        
-        MaxLength* maxLength = getMaxLength();
-        if (maxLength->isSet())
-        {
-            if (strlen(value) > (unsigned int) maxLength->getMaxLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is longer than MaxLength specified for this type.  Maxlength = ";
-                AxisChar* length = new AxisChar[10];
-                sprintf(length, "%d", maxLength->getMaxLength());
-                exceptionMessage += length;
-                exceptionMessage += ", Length of value = ";
-                sprintf(length, "%d", strlen(value));
-                exceptionMessage += length;
-                exceptionMessage += ".";
-                delete [] length;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete maxLength;
-
-        Length* length = getLength();
-        if (length->isSet())
-        {
-            if (strlen(value) != (unsigned int) length->getLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is not the same as Length specified for this type.  Length = ";
-                AxisChar* lengthAsString = new AxisChar[10];
-                sprintf(lengthAsString, "%d", length->getLength());
-                exceptionMessage += lengthAsString;
-                exceptionMessage += ", Length of value = ";
-                sprintf(lengthAsString, "%d", strlen(value));
-                exceptionMessage += lengthAsString;
-                exceptionMessage += ".";
-                delete [] lengthAsString;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
+    MinLength* minLength= getMinLength();
+    if (minLength->isSet())
+        if (strlen(value) < (unsigned int) minLength->getMinLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is shorter than MinLength specified for this type.  Minlength = ";
+            sprintf(lengthAsString, "%d", minLength->getMinLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", strlen(value));
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
+            
+            delete minLength;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-        delete length;
-             
-		AxisString valueAsString = value;
-		AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
-		
-        IAnySimpleType::serialize(serializedValue);
-
-		return m_Buf;
-    }
+    delete minLength;
+    
+    MaxLength* maxLength = getMaxLength();
+    if (maxLength->isSet())
+        if (strlen(value) > (unsigned int) maxLength->getMaxLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is longer than MaxLength specified for this type.  Maxlength = ";
+            sprintf(lengthAsString, "%d", maxLength->getMaxLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", strlen(value));
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
+            
+            delete maxLength;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+        }
+    delete maxLength;
+
+    Length* length = getLength();
+    if (length->isSet())
+        if (strlen(value) != (unsigned int) length->getLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is not the same as Length specified for this type.  Length = ";
+            sprintf(lengthAsString, "%d", length->getLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", strlen(value));
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
+            
+            delete length;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+        }
+    delete length;
+         
+	AxisString valueAsString = value;
+	AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
 	
-    xsd__anyURI AnyURI::deserializeAnyURI(const AxisChar* valueAsChar) throw (AxisSoapException)
-    {
-        xsd__anyURI value = new char[strlen (valueAsChar) + 1];
-		strcpy (value, valueAsChar);
-		return value;
-    }
+    IAnySimpleType::serialize(serializedValue);
 
-    WhiteSpace* AnyURI::getWhiteSpace()
-    {
-        return new WhiteSpace(REPLACE);
-    }
-
-    MinLength* AnyURI::getMinLength()
-    {
-        return new MinLength();
-    }
-    
-    MaxLength* AnyURI::getMaxLength()
-    {
-        return new MaxLength();
-    }
+	return m_Buf;
+}
 
-    Length* AnyURI::getLength()
-    {
-        return new Length();
-    }
+xsd__anyURI AnyURI::deserializeAnyURI(const AxisChar* valueAsChar) throw (AxisSoapException)
+{
+    xsd__anyURI value = new char[strlen (valueAsChar) + 1];
+	strcpy (value, valueAsChar);
+	return value;
+}
+
+WhiteSpace* AnyURI::getWhiteSpace()
+{
+    return new WhiteSpace(REPLACE);
+}
+
+MinLength* AnyURI::getMinLength()
+{
+    return new MinLength();
+}
+
+MaxLength* AnyURI::getMaxLength()
+{
+    return new MaxLength();
+}
+
+Length* AnyURI::getLength()
+{
+    return new Length();
+}
 
 AXIS_CPP_NAMESPACE_END

Modified: webservices/axis/trunk/c/src/soap/xsd/Base64Binary.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/Base64Binary.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/Base64Binary.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/Base64Binary.cpp Wed Nov 22 02:11:36 2006
@@ -17,156 +17,145 @@
 
 AXIS_CPP_NAMESPACE_START
 
-    Base64Binary::Base64Binary()
-    {
-    }
-    
-    Base64Binary::~Base64Binary()
-    {
-    }
-
-    Base64Binary::Base64Binary(const xsd__base64Binary* value)
-    {
-        if (value)
-        {
-            setNil(false);
-            serialize(value);
-        }
-    }
-
-    XSDTYPE Base64Binary::getType()
-    {
-        return XSD_BASE64BINARY;
-    }
-
-    xsd__base64Binary* Base64Binary::getBase64Binary()
-    {
-        if (isNil())
-        {
-            return NULL;
-        }
-        else
-        {
-            return deserializeBase64Binary(m_Buf);
-        }
-    }
-
-    void * Base64Binary::getValue()
-    {
-        return (void*) getBase64Binary();
-    }
+Base64Binary::Base64Binary()
+{
+}
+
+Base64Binary::~Base64Binary()
+{
+}
+
+Base64Binary::Base64Binary(const xsd__base64Binary* value)
+{
+    if (value)
+    {
+        setNil(false);
+        serialize(value);
+    }
+}
+
+XSDTYPE Base64Binary::getType()
+{
+    return XSD_BASE64BINARY;
+}
+
+xsd__base64Binary* Base64Binary::getBase64Binary()
+{
+    if (isNil())
+        return NULL;
+    else
+        return deserializeBase64Binary(m_Buf);
+}
+
+void * Base64Binary::getValue()
+{
+    return (void*) getBase64Binary();
+}
+
+AxisChar* Base64Binary::serialize(const xsd__base64Binary * value) throw (AxisSoapException)
+{
+    AxisString exceptionMessage;
+    char lengthAsString[100];
     
-    AxisChar* Base64Binary::serialize(const xsd__base64Binary * value) throw (AxisSoapException)
-    {
-        MinLength* minLength= getMinLength();
-        if (minLength->isSet())
-        {
-            if (value->getSize() < minLength->getMinLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is shorter than MinLength specified for this type.  Minlength = ";
-                AxisChar* length = new AxisChar[10];
-                sprintf(length, "%d", minLength->getMinLength());
-                exceptionMessage += length;
-                exceptionMessage += ", Length of value = ";
-                sprintf(length, "%d", value->getSize());
-                exceptionMessage += length;
-                exceptionMessage += ".";
-                delete [] length;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
+    MinLength* minLength= getMinLength();
+    if (minLength->isSet())
+        if (value->getSize() < minLength->getMinLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is shorter than MinLength specified for this type.  Minlength = ";
+            sprintf(lengthAsString, "%d", minLength->getMinLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", value->getSize());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
             
+            delete minLength;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-        delete minLength;
-        
-        MaxLength* maxLength = getMaxLength();
-        if (maxLength->isSet())
-        {
-            if (value->getSize() > maxLength->getMaxLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is longer than MaxLength specified for this type.  Maxlength = ";
-                AxisChar* length = new AxisChar[10];
-                sprintf(length, "%d", maxLength->getMaxLength());
-                exceptionMessage += length;
-                exceptionMessage += ", Length of value = ";
-                sprintf(length, "%d", value->getSize());
-                exceptionMessage += length;
-                exceptionMessage += ".";
-                delete [] length;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete maxLength;
-
-        Length* length= getLength();
-        if (length->isSet())
-        {
-            if (value->getSize() != length->getLength())
-            {
-                AxisString exceptionMessage =
-                "Length of value to be serialized is not the same as Length specified for this type.  Length = ";
-                AxisChar* lengthAsString = new AxisChar[10];
-                sprintf(lengthAsString, "%d", length->getLength());
-                exceptionMessage += lengthAsString;
-                exceptionMessage += ", Length of value = ";
-                sprintf(lengthAsString, "%d", value->getSize());
-                exceptionMessage += lengthAsString;
-                exceptionMessage += ".";
-                delete [] lengthAsString;
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete length;
-     
-	    int len = apr_base64_encode_len (value->getSize());	    
-	    AxisChar* serializedValue = new AxisChar[len + 1];
-		int size = 0;
-		xsd__unsignedByte * pTemp = value->get(size);
-	    len = apr_base64_encode_binary (serializedValue, pTemp, size);
-	    serializedValue[len] = 0;
-	    	    
-        IAnySimpleType::serialize(serializedValue);
-        delete [] serializedValue;        
-		return m_Buf;
-    }
-	
-    xsd__base64Binary * Base64Binary::deserializeBase64Binary(const AxisChar* valueAsChar) throw (AxisSoapException)
-    {
-    	xsd__base64Binary * value = new xsd__base64Binary();
-	    xsd__int size = apr_base64_decode_len (valueAsChar);
-	    xsd__unsignedByte * pTemp = new xsd__unsignedByte[size + 1];
-	    size = apr_base64_decode_binary (pTemp, valueAsChar);
-	    pTemp[size] = 0; // Null terminate so it could be used as a string
-		value->set(pTemp, size);
-		delete [] pTemp;
-	    return value;
-    }
-
-    MinLength* Base64Binary::getMinLength()
-    {
-        return new MinLength();
-    }
+    delete minLength;
     
-    MaxLength* Base64Binary::getMaxLength()
-    {
-        return new MaxLength();
-    }
-
-    Length* Base64Binary::getLength()
-    {
-        return new Length();
-    }
-    
-    WhiteSpace* Base64Binary::getWhiteSpace()
-    {
-        return new WhiteSpace(COLLAPSE);
-    }
+    MaxLength* maxLength = getMaxLength();
+    if (maxLength->isSet())
+        if (value->getSize() > maxLength->getMaxLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is longer than MaxLength specified for this type.  Maxlength = ";
+            sprintf(lengthAsString, "%d", maxLength->getMaxLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", value->getSize());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
+            
+            delete maxLength;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+        }
+    delete maxLength;
+
+    Length* length= getLength();
+    if (length->isSet())
+        if (value->getSize() != length->getLength())
+        {
+            exceptionMessage =
+            "Length of value to be serialized is not the same as Length specified for this type.  Length = ";
+            sprintf(lengthAsString, "%d", length->getLength());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ", Length of value = ";
+            sprintf(lengthAsString, "%d", value->getSize());
+            exceptionMessage += lengthAsString;
+            exceptionMessage += ".";
+
+            delete length;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+        }
+    delete length;
+ 
+    int len = apr_base64_encode_len (value->getSize());	    
+    AxisChar* serializedValue = new AxisChar[len + 1];
+	int size = 0;
+	xsd__unsignedByte * pTemp = value->get(size);
+    len = apr_base64_encode_binary (serializedValue, pTemp, size);
+    serializedValue[len] = 0;
+    	    
+    IAnySimpleType::serialize(serializedValue);
+    delete [] serializedValue;        
+	return m_Buf;
+}
+
+xsd__base64Binary * Base64Binary::deserializeBase64Binary(const AxisChar* valueAsChar) throw (AxisSoapException)
+{
+	xsd__base64Binary * value = new xsd__base64Binary();
+    xsd__int size = apr_base64_decode_len (valueAsChar);
+    xsd__unsignedByte * pTemp = new xsd__unsignedByte[size + 1];
+    size = apr_base64_decode_binary (pTemp, valueAsChar);
+    pTemp[size] = 0; // Null terminate so it could be used as a string
+	value->set(pTemp, size);
+	delete [] pTemp;
+    return value;
+}
+
+MinLength* Base64Binary::getMinLength()
+{
+    return new MinLength();
+}
+
+MaxLength* Base64Binary::getMaxLength()
+{
+    return new MaxLength();
+}
+
+Length* Base64Binary::getLength()
+{
+    return new Length();
+}
+
+WhiteSpace* Base64Binary::getWhiteSpace()
+{
+    return new WhiteSpace(COLLAPSE);
+}
 
 AXIS_CPP_NAMESPACE_END

Modified: webservices/axis/trunk/c/src/soap/xsd/Boolean.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/Boolean.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/Boolean.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/Boolean.cpp Wed Nov 22 02:11:36 2006
@@ -42,13 +42,9 @@
 xsd__boolean* Boolean::getBoolean()
 {
     if (isNil())
-    {
         return NULL;
-    }
     else
-    {
         return deserializeBoolean(m_Buf);
-    }
 }
 
 void * Boolean::getValue()
@@ -63,12 +59,11 @@
  */
 AxisChar* Boolean::serialize(const xsd__boolean * value) throw (AxisSoapException)
 {
-    AxisChar* serializedValue = new char[6];
+    AxisChar serializedValue[6];
 	AxisSprintf (serializedValue, 6, "%s",
             (*((int *) (value)) == false_) ? "false" : "true");
     
     IAnySimpleType::serialize(serializedValue);
-    delete [] serializedValue;        
     return m_Buf;
 }
 
@@ -82,13 +77,9 @@
     xsd__boolean * value = new xsd__boolean;
  
 	if ( 0 == strcmp (valueAsChar, "true") || 0 == strcmp (valueAsChar, "1"))
-	{
 		*value = true_;
-	}
 	else
-	{
 		*value =  false_;
-	}
     
     return value;
 }

Modified: webservices/axis/trunk/c/src/soap/xsd/Date.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/Date.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/Date.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/Date.cpp Wed Nov 22 02:11:36 2006
@@ -17,227 +17,221 @@
 
 AXIS_CPP_NAMESPACE_START
 
-    Date::Date()
+Date::Date()
+{
+}
+
+Date::Date(const xsd__date* value)
+{
+    if (value)
+    {
+        setNil(false);
+        serialize(value);
+    }
+}
+
+XSDTYPE Date::getType()
+{
+    return XSD_DATE;
+}
+
+xsd__date* Date::getDate()
+{
+    if (isNil())
+        return NULL;
+    else
+        return deserializeDate(m_Buf);
+}
+
+void * Date::getValue()
+{
+    return (void*) getDate();
+}
+
+AxisChar* Date::serialize(const xsd__date* value) throw (AxisSoapException)
+{        
+    MinInclusive* minInclusive = getMinInclusive();
+    if (minInclusive->isSet())
     {
-    }
-
-    Date::Date(const xsd__date* value)
-    {
-        if (value)
+        struct tm minInclusiveAsStructTM = minInclusive->getMinInclusiveAsStructTM();
+        if ( 0 > difftime(mktime(&minInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            setNil(false);
-            serialize(value);
+            AxisString exceptionMessage =
+            "Value to be serialized is less than MinInclusive specified for this type.  MinInclusive = ";
+            exceptionMessage += asctime(&minInclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete minInclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
     }
+    delete minInclusive;
 
-    XSDTYPE Date::getType()
+    MinExclusive* minExclusive = getMinExclusive();
+    if (minExclusive->isSet())
     {
-        return XSD_DATE;
-    }
-
-    xsd__date* Date::getDate()
-    {
-        if (isNil())
+        struct tm minExclusiveAsStructTM = minExclusive->getMinExclusiveAsStructTM();
+        if ( 0 >= difftime(mktime(&minExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            return NULL;
-        }
-        else
-        {
-            return deserializeDate(m_Buf);
+            AxisString exceptionMessage =
+            "Value to be serialized is less than or equal to MinExclusive specified for this type.  MinExclusive = ";
+            exceptionMessage += asctime(&minExclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete minExclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
     }
+    delete minExclusive;
 
-    void * Date::getValue()
+    MaxInclusive* maxInclusive = getMaxInclusive();
+    if (maxInclusive->isSet())
     {
-        return (void*) getDate();
-    }
-
-    AxisChar* Date::serialize(const xsd__date* value) throw (AxisSoapException)
-    {
-        MinInclusive* minInclusive = getMinInclusive();
-        if (minInclusive->isSet())
-        {
-            struct tm minInclusiveAsStructTM = minInclusive->getMinInclusiveAsStructTM();
-            if ( 0 > difftime(mktime(&minInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is less than MinInclusive specified for this type.  MinInclusive = ";
-                exceptionMessage += asctime(&minInclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete minInclusive;
-
-        MinExclusive* minExclusive = getMinExclusive();
-        if (minExclusive->isSet())
-        {
-            struct tm minExclusiveAsStructTM = minExclusive->getMinExclusiveAsStructTM();
-            if ( 0 >= difftime(mktime(&minExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is less than or equal to MinExclusive specified for this type.  MinExclusive = ";
-                exceptionMessage += asctime(&minExclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete minExclusive;
-
-        MaxInclusive* maxInclusive = getMaxInclusive();
-        if (maxInclusive->isSet())
-        {
-            struct tm maxInclusiveAsStructTM = maxInclusive->getMaxInclusiveAsStructTM();
-            if ( 0 < difftime(mktime(&maxInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is greater than MaxInclusive specified for this type.  MaxInclusive = ";
-                exceptionMessage += asctime(&maxInclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete maxInclusive;
-
-        MaxExclusive* maxExclusive = getMaxExclusive();
-        if (maxExclusive->isSet())
-        {
-            struct tm maxExclusiveAsStructTM = maxExclusive->getMaxExclusiveAsStructTM();
-            if ( 0 <= difftime(mktime(&maxExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is greater than or equal to MaxExclusive specified for this type.  MaxExclusive = ";
-                exceptionMessage += asctime(&maxExclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete maxExclusive;
-
-        AxisString serializedValue = "";
-        AxisChar* valueAsString = new AxisChar[80];
-        strftime (valueAsString, 80, "%Y-%m-%d", value);
-        serializedValue += valueAsString;
-        delete [] valueAsString;
-
-        // Calculate local timezone offset
-        time_t now = time(NULL);
-        struct tm *temp = gmtime(&now);
-        struct tm utcTime;
-        memcpy(&utcTime, temp, sizeof(struct tm));
-        temp = localtime(&now);
-        struct tm localTime;
-        memcpy(&localTime, temp, sizeof(struct tm));
-
-        long utcTimeInMinutes = (utcTime.tm_year * 60 * 24 * 365)
-            + (utcTime.tm_yday * 60 * 24)
-            + (utcTime.tm_hour * 60)
-            + utcTime.tm_min;
-
-        long localTimeInMinutes = (localTime.tm_year * 60 * 24 * 365)
-            + (localTime.tm_yday * 60 * 24)
-            + (localTime.tm_hour * 60)
-            + localTime.tm_min;
-
-        int timeOffsetInMinutes = localTimeInMinutes - utcTimeInMinutes;
-
-        if (timeOffsetInMinutes == 0)
+        struct tm maxInclusiveAsStructTM = maxInclusive->getMaxInclusiveAsStructTM();
+        if ( 0 < difftime(mktime(&maxInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            serializedValue += "Z";
-        }
-        else
-        {
-            struct tm timeOffset;
-            timeOffset.tm_year = 0;
-            timeOffset.tm_yday = 0;
-            timeOffset.tm_sec = 0;
-            timeOffset.tm_min = timeOffsetInMinutes % 60;
-            timeOffsetInMinutes -= timeOffset.tm_min;
-            timeOffset.tm_hour = (timeOffsetInMinutes % (60 * 24)) / 60;
-            
-            if ( (timeOffset.tm_hour < 0) || (timeOffset.tm_min < 0) )
-            {
-                serializedValue += "-";
-                timeOffset.tm_hour *= -1;
-                timeOffset.tm_min *= -1;
-            }
-            else
-            {
-                serializedValue += "+";
-            }
+            AxisString exceptionMessage =
+            "Value to be serialized is greater than MaxInclusive specified for this type.  MaxInclusive = ";
+            exceptionMessage += asctime(&maxInclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
             
-            AxisChar * offSetString = new AxisChar[6];
-            sprintf(offSetString, "%02i:%02i", timeOffset.tm_hour, timeOffset.tm_min);
-            serializedValue += offSetString;
-            delete [] offSetString;
+            delete maxInclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-
-        
-        IAnySimpleType::serialize(serializedValue.c_str());
-		return m_Buf;
     }
-	
-    xsd__date* Date::deserializeDate(const AxisChar* valueAsChar) throw (AxisSoapException)
+    delete maxInclusive;
+
+    MaxExclusive* maxExclusive = getMaxExclusive();
+    if (maxExclusive->isSet())
     {
-    	struct tm value;
-	    struct tm *pTm;
-        AxisChar *cUtc;
-	    AxisChar *cTemp;
-	    AxisChar *cTemp2;
-
-        // Calculate local timezone offset
-        time_t now = time(NULL);
-        struct tm *temp = gmtime(&now);
-        struct tm utcTime;
-        memcpy(&utcTime, temp, sizeof(struct tm));
-        temp = localtime(&now);
-        struct tm localTime;
-        memcpy(&localTime, temp, sizeof(struct tm));
-
-        long utcTimeInSeconds = (utcTime.tm_year * 60 * 60 * 24 * 365)
-            + (utcTime.tm_yday * 60 * 60 * 24)
-            + (utcTime.tm_hour * 60 * 60)
-            + (utcTime.tm_min * 60);
-
-        long localTimeInSeconds = (localTime.tm_year * 60 * 60 * 24 * 365)
-            + (localTime.tm_yday * 60 * 60 * 24)
-            + (localTime.tm_hour * 60 * 60)
-            + (localTime.tm_min * 60);
-
-        time_t d = utcTimeInSeconds - localTimeInSeconds;
-
-        /* dismantle m_sValue to get tm value;
-         * XSD_DATETIME format is
-         * CCYY(-)MM(-)DDZ OR
-         * CCYY(-)MM(-)DD+/-<UTC TIME DIFFERENCE>
-         */
-        if (sscanf (valueAsChar, "%d-%d-%d", &value.tm_year, 
-            &value.tm_mon, &value.tm_mday) != 3)
+        struct tm maxExclusiveAsStructTM = maxExclusive->getMaxExclusiveAsStructTM();
+        if ( 0 <= difftime(mktime(&maxExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
             AxisString exceptionMessage =
-            "Unable to decompose from string form of DateTime value.  Value =";
-            exceptionMessage += valueAsChar;
+            "Value to be serialized is greater than or equal to MaxExclusive specified for this type.  MaxExclusive = ";
+            exceptionMessage += asctime(&maxExclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
             exceptionMessage += ".";
             
+            delete maxExclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
+    }
+    delete maxExclusive;
+
+    AxisString serializedValue = "";
+    AxisChar valueAsString[80];
+    strftime (valueAsString, 80, "%Y-%m-%d", value);
+    serializedValue += valueAsString;
+
+    // Calculate local timezone offset
+    time_t now = time(NULL);
+    struct tm *temp = gmtime(&now);
+    struct tm utcTime;
+    memcpy(&utcTime, temp, sizeof(struct tm));
+    temp = localtime(&now);
+    struct tm localTime;
+    memcpy(&localTime, temp, sizeof(struct tm));
+
+    long utcTimeInMinutes = (utcTime.tm_year * 60 * 24 * 365)
+        + (utcTime.tm_yday * 60 * 24)
+        + (utcTime.tm_hour * 60)
+        + utcTime.tm_min;
+
+    long localTimeInMinutes = (localTime.tm_year * 60 * 24 * 365)
+        + (localTime.tm_yday * 60 * 24)
+        + (localTime.tm_hour * 60)
+        + localTime.tm_min;
+
+    int timeOffsetInMinutes = localTimeInMinutes - utcTimeInMinutes;
+
+    if (timeOffsetInMinutes == 0)
+        serializedValue += "Z";
+    else
+    {
+        struct tm timeOffset;
+        timeOffset.tm_year = 0;
+        timeOffset.tm_yday = 0;
+        timeOffset.tm_sec = 0;
+        timeOffset.tm_min = timeOffsetInMinutes % 60;
+        timeOffsetInMinutes -= timeOffset.tm_min;
+        timeOffset.tm_hour = (timeOffsetInMinutes % (60 * 24)) / 60;
+        
+        if ( (timeOffset.tm_hour < 0) || (timeOffset.tm_min < 0) )
+        {
+            serializedValue += "-";
+            timeOffset.tm_hour *= -1;
+            timeOffset.tm_min *= -1;
+        }
+        else
+            serializedValue += "+";
+        
+        AxisChar offSetString[6];
+        sprintf(offSetString, "%02i:%02i", timeOffset.tm_hour, timeOffset.tm_min);
+        serializedValue += offSetString;
+    }
+
+    
+    IAnySimpleType::serialize(serializedValue.c_str());
+	return m_Buf;
+}
+
+xsd__date* Date::deserializeDate(const AxisChar* valueAsChar) throw (AxisSoapException)
+{
+	struct tm value;
+    struct tm *pTm;
+    AxisChar *cUtc;
+    AxisChar *cTemp;
+    AxisChar *cTemp2;
+
+    // Calculate local timezone offset
+    time_t now = time(NULL);
+    struct tm *temp = gmtime(&now);
+    struct tm utcTime;
+    memcpy(&utcTime, temp, sizeof(struct tm));
+    temp = localtime(&now);
+    struct tm localTime;
+    memcpy(&localTime, temp, sizeof(struct tm));
+
+    long utcTimeInSeconds = (utcTime.tm_year * 60 * 60 * 24 * 365)
+        + (utcTime.tm_yday * 60 * 60 * 24)
+        + (utcTime.tm_hour * 60 * 60)
+        + (utcTime.tm_min * 60);
+
+    long localTimeInSeconds = (localTime.tm_year * 60 * 60 * 24 * 365)
+        + (localTime.tm_yday * 60 * 60 * 24)
+        + (localTime.tm_hour * 60 * 60)
+        + (localTime.tm_min * 60);
+
+    time_t d = utcTimeInSeconds - localTimeInSeconds;
+
+    /* dismantle m_sValue to get tm value;
+     * XSD_DATETIME format is
+     * CCYY(-)MM(-)DDZ OR
+     * CCYY(-)MM(-)DD+/-<UTC TIME DIFFERENCE>
+     */
+    if (sscanf (valueAsChar, "%d-%d-%d", &value.tm_year, 
+        &value.tm_mon, &value.tm_mday) != 3)
+    {
+        AxisString exceptionMessage =
+        "Unable to decompose from string form of DateTime value.  Value =";
+        exceptionMessage += valueAsChar;
+        exceptionMessage += ".";
+            
+        throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+     }
 
         value.tm_year -= 1900;
         value.tm_mon--;
@@ -251,105 +245,101 @@
 #endif
         cTemp2 = const_cast<char*>(strpbrk (valueAsChar, ":"));
 
-        /* if the timezone is represented adding 'Z' at the end */
-        if ((cTemp = const_cast<char*>(strpbrk (valueAsChar, "Z"))) != NULL)
+    /* if the timezone is represented adding 'Z' at the end */
+    if ((cTemp = const_cast<char*>(strpbrk (valueAsChar, "Z"))) != NULL)
+    {
+        time_t timeInSecs = mktime (&value);
+        if (timeInSecs == -1)
         {
-            time_t timeInSecs = mktime (&value);
-            if (timeInSecs == -1)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            pTm = localtime (&timeInSecs);
-            memcpy (&value, pTm, sizeof (tm));
-            time_t t = mktime (&value);
-            if (t == -1)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            t = labs (t - d);
-            pTm = localtime (&t);
-        }
-        else if (cTemp2 != NULL)
-        {
-            cUtc = const_cast<char*>(strrchr (valueAsChar, '+'));
-            if (cUtc == NULL)
-            {
-                cUtc = const_cast<char*>(strrchr (valueAsChar, '-'));
-            }
-            time_t timeInSecs = mktime (&value);
-            if (timeInSecs == -1)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            
-            int hours = 0;
-            int mins = 0;   
-            if (sscanf (cUtc + 1, "%d:%d", &hours, &mins) != 2)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            
-            int secs = hours * 60 * 60 + mins * 60;
-            if ((cTemp = strpbrk ((cUtc), "+")) != NULL)
-            {
-                timeInSecs -= secs;
-            }
-            else
-            {
-                timeInSecs += secs;
-            }
-            
-            pTm = localtime (&timeInSecs);
-            memcpy (&value, pTm, sizeof (tm));
-            time_t t = mktime (&value);
-            if (t == -1)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            t = labs (t - d);
-            pTm = localtime (&t);
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
         }
-        /*if the zone is not represented in the date */
-        else
+        pTm = localtime (&timeInSecs);
+        memcpy (&value, pTm, sizeof (tm));
+        time_t t = mktime (&value);
+        if (t == -1)
         {
-            /*else it is assumed that the sent time is localtime */
-            time_t timeInSecs = mktime (&value);
-            if (timeInSecs == -1)
-            {
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            pTm = localtime (&timeInSecs);
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
         }
-        
-
-        xsd__date * returnValue = new xsd__date;
-        memcpy (returnValue, pTm, sizeof (tm));
-        return returnValue;
-	}
-
-    MinInclusive* Date::getMinInclusive()
-    {
-        return new MinInclusive();
+        t = labs (t - d);
+        pTm = localtime (&t);
     }
-
-    MinExclusive* Date::getMinExclusive()
+    else if (cTemp2 != NULL)
     {
-        return new MinExclusive();
-    }
-
-    MaxInclusive* Date::getMaxInclusive()
-    {
-        return new MaxInclusive();
-    }
-
-    MaxExclusive* Date::getMaxExclusive()
-    {
-        return new MaxExclusive();
-    }
-
-    WhiteSpace* Date::getWhiteSpace()
-    {
-        return new WhiteSpace(COLLAPSE);
-    }
+        cUtc = const_cast<char*>(strrchr (valueAsChar, '+'));
+        if (cUtc == NULL)
+        {
+            cUtc = const_cast<char*>(strrchr (valueAsChar, '-'));
+        }
+        time_t timeInSecs = mktime (&value);
+        if (timeInSecs == -1)
+        {
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
+        
+        int hours = 0;
+        int mins = 0;   
+        if (sscanf (cUtc + 1, "%d:%d", &hours, &mins) != 2)
+        {
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
+        
+        int secs = hours * 60 * 60 + mins * 60;
+        if ((cTemp = strpbrk ((cUtc), "+")) != NULL)
+            timeInSecs -= secs;
+        else
+            timeInSecs += secs;
+        
+        pTm = localtime (&timeInSecs);
+        memcpy (&value, pTm, sizeof (tm));
+        time_t t = mktime (&value);
+        if (t == -1)
+        {
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
+        t = labs (t - d);
+        pTm = localtime (&t);
+    }
+    /*if the zone is not represented in the date */
+    else
+    {
+        /*else it is assumed that the sent time is localtime */
+        time_t timeInSecs = mktime (&value);
+        if (timeInSecs == -1)
+        {
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
+        pTm = localtime (&timeInSecs);
+    }
+    
+
+    xsd__date * returnValue = new xsd__date;
+    memcpy (returnValue, pTm, sizeof (tm));
+    return returnValue;
+}
+
+MinInclusive* Date::getMinInclusive()
+{
+    return new MinInclusive();
+}
+
+MinExclusive* Date::getMinExclusive()
+{
+    return new MinExclusive();
+}
+
+MaxInclusive* Date::getMaxInclusive()
+{
+    return new MaxInclusive();
+}
+
+MaxExclusive* Date::getMaxExclusive()
+{
+    return new MaxExclusive();
+}
+
+WhiteSpace* Date::getWhiteSpace()
+{
+    return new WhiteSpace(COLLAPSE);
+}
 	
 AXIS_CPP_NAMESPACE_END

Modified: webservices/axis/trunk/c/src/soap/xsd/DateTime.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/DateTime.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/DateTime.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/DateTime.cpp Wed Nov 22 02:11:36 2006
@@ -17,235 +17,229 @@
 
 AXIS_CPP_NAMESPACE_START
 
-    DateTime::DateTime()
-    {
-    }
-
-    DateTime::~DateTime()
+DateTime::DateTime()
+{
+}
+
+DateTime::~DateTime()
+{
+}
+
+DateTime::DateTime(const xsd__dateTime* value)
+{
+    if (value)
+    {
+        setNil(false);
+        serialize(value);
+    }
+}
+
+XSDTYPE DateTime::getType()
+{
+    return XSD_DATETIME;
+}
+
+xsd__dateTime* DateTime::getDateTime()
+{
+    if (isNil())
+        return NULL;
+    else
+        return deserializeDateTime(m_Buf);
+}
+
+void * DateTime::getValue()
+{
+    return (void*) getDateTime();
+}
+
+AxisChar* DateTime::serialize(const xsd__dateTime* value) throw (AxisSoapException)
+{
+    MinInclusive* minInclusive = getMinInclusive();
+    if (minInclusive->isSet())
     {
+        struct tm minInclusiveAsStructTM = minInclusive->getMinInclusiveAsStructTM();
+        if ( 0 > difftime(mktime(&minInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
+        {
+            AxisString exceptionMessage =
+            "Value to be serialized is less than MinInclusive specified for this type.  MinInclusive = ";
+            exceptionMessage += asctime(&minInclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete minInclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
+        }
     }
+    delete minInclusive;
 
-    DateTime::DateTime(const xsd__dateTime* value)
+    MinExclusive* minExclusive = getMinExclusive();
+    if (minExclusive->isSet())
     {
-        if (value)
+        struct tm minExclusiveAsStructTM = minExclusive->getMinExclusiveAsStructTM();
+        if ( 0 >= difftime(mktime(&minExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            setNil(false);
-            serialize(value);
+            AxisString exceptionMessage =
+            "Value to be serialized is less than or equal to MinExclusive specified for this type.  MinExclusive = ";
+            exceptionMessage += asctime(&minExclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete minExclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
     }
-    
-    XSDTYPE DateTime::getType()
-    {
-        return XSD_DATETIME;
-    }
+    delete minExclusive;
 
-    xsd__dateTime* DateTime::getDateTime()
+    MaxInclusive* maxInclusive = getMaxInclusive();
+    if (maxInclusive->isSet())
     {
-        if (isNil())
-        {
-            return NULL;
-        }
-        else
+        struct tm maxInclusiveAsStructTM = maxInclusive->getMaxInclusiveAsStructTM();
+        if ( 0 < difftime(mktime(&maxInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            return deserializeDateTime(m_Buf);
+            AxisString exceptionMessage =
+            "Value to be serialized is greater than MaxInclusive specified for this type.  MaxInclusive = ";
+            exceptionMessage += asctime(&maxInclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete maxInclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
     }
+    delete maxInclusive;
 
-    void * DateTime::getValue()
+    MaxExclusive* maxExclusive = getMaxExclusive();
+    if (maxExclusive->isSet())
     {
-        return (void*) getDateTime();
-    }
-    
-    AxisChar* DateTime::serialize(const xsd__dateTime* value) throw (AxisSoapException)
-    {
-        MinInclusive* minInclusive = getMinInclusive();
-        if (minInclusive->isSet())
+        struct tm maxExclusiveAsStructTM = maxExclusive->getMaxExclusiveAsStructTM();
+        if ( 0 <= difftime(mktime(&maxExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
         {
-            struct tm minInclusiveAsStructTM = minInclusive->getMinInclusiveAsStructTM();
-            if ( 0 > difftime(mktime(&minInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is less than MinInclusive specified for this type.  MinInclusive = ";
-                exceptionMessage += asctime(&minInclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete minInclusive;
-
-        MinExclusive* minExclusive = getMinExclusive();
-        if (minExclusive->isSet())
-        {
-            struct tm minExclusiveAsStructTM = minExclusive->getMinExclusiveAsStructTM();
-            if ( 0 >= difftime(mktime(&minExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is less than or equal to MinExclusive specified for this type.  MinExclusive = ";
-                exceptionMessage += asctime(&minExclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete minExclusive;
-
-        MaxInclusive* maxInclusive = getMaxInclusive();
-        if (maxInclusive->isSet())
-        {
-            struct tm maxInclusiveAsStructTM = maxInclusive->getMaxInclusiveAsStructTM();
-            if ( 0 < difftime(mktime(&maxInclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is greater than MaxInclusive specified for this type.  MaxInclusive = ";
-                exceptionMessage += asctime(&maxInclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
-        }
-        delete maxInclusive;
-
-        MaxExclusive* maxExclusive = getMaxExclusive();
-        if (maxExclusive->isSet())
-        {
-            struct tm maxExclusiveAsStructTM = maxExclusive->getMaxExclusiveAsStructTM();
-            if ( 0 <= difftime(mktime(&maxExclusiveAsStructTM), mktime(const_cast<struct tm*>(value))) )
-            {
-                AxisString exceptionMessage =
-                "Value to be serialized is greater than or equal to MaxExclusive specified for this type.  MaxExclusive = ";
-                exceptionMessage += asctime(&maxExclusiveAsStructTM);
-                exceptionMessage += ", Value = ";
-                exceptionMessage += asctime(value);
-                exceptionMessage += ".";
-                
-                throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
-                    const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
+            AxisString exceptionMessage =
+            "Value to be serialized is greater than or equal to MaxExclusive specified for this type.  MaxExclusive = ";
+            exceptionMessage += asctime(&maxExclusiveAsStructTM);
+            exceptionMessage += ", Value = ";
+            exceptionMessage += asctime(value);
+            exceptionMessage += ".";
+            
+            delete maxExclusive;
+            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+                const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-        delete maxExclusive;
+    }
+    delete maxExclusive;
+    
+    AxisString serializedValue = "";
+	AxisChar valueAsString[80];
+	strftime (valueAsString, 80, "%Y-%m-%dT%H:%M:%S", value);
+    serializedValue += valueAsString;
+
+    // Calculate local timezone offset
+    time_t now = time(NULL);
+    struct tm *temp = gmtime(&now);
+    struct tm utcTime;
+    memcpy(&utcTime, temp, sizeof(struct tm));
+    temp = localtime(&now);
+    struct tm localTime;
+    memcpy(&localTime, temp, sizeof(struct tm));
+
+    long utcTimeInMinutes = (utcTime.tm_year * 60 * 24 * 365)
+        + (utcTime.tm_yday * 60 * 24)
+        + (utcTime.tm_hour * 60)
+        + utcTime.tm_min;
+
+    long localTimeInMinutes = (localTime.tm_year * 60 * 24 * 365)
+        + (localTime.tm_yday * 60 * 24)
+        + (localTime.tm_hour * 60)
+        + localTime.tm_min;
+
+    int timeOffsetInMinutes = (int) (localTimeInMinutes - utcTimeInMinutes);
+
+    if (timeOffsetInMinutes == 0)
+        serializedValue += "Z";
+    else
+    {
+        struct tm timeOffset;
+        timeOffset.tm_year = 0;
+        timeOffset.tm_yday = 0;
+        timeOffset.tm_sec = 0;
+        timeOffset.tm_min = timeOffsetInMinutes % 60;
+        timeOffsetInMinutes -= timeOffset.tm_min;
+        timeOffset.tm_hour = (timeOffsetInMinutes % (60 * 24)) / 60;
         
-        AxisString serializedValue = "";
-    	AxisChar* valueAsString = new AxisChar[80];
-    	strftime (valueAsString, 80, "%Y-%m-%dT%H:%M:%S", value);
-        serializedValue += valueAsString;
-        delete [] valueAsString;
-
-        // Calculate local timezone offset
-        time_t now = time(NULL);
-        struct tm *temp = gmtime(&now);
-        struct tm utcTime;
-        memcpy(&utcTime, temp, sizeof(struct tm));
-        temp = localtime(&now);
-        struct tm localTime;
-        memcpy(&localTime, temp, sizeof(struct tm));
-
-        long utcTimeInMinutes = (utcTime.tm_year * 60 * 24 * 365)
-            + (utcTime.tm_yday * 60 * 24)
-            + (utcTime.tm_hour * 60)
-            + utcTime.tm_min;
-
-        long localTimeInMinutes = (localTime.tm_year * 60 * 24 * 365)
-            + (localTime.tm_yday * 60 * 24)
-            + (localTime.tm_hour * 60)
-            + localTime.tm_min;
-
-        int timeOffsetInMinutes = (int) (localTimeInMinutes - utcTimeInMinutes);
-
-        if (timeOffsetInMinutes == 0)
+        if ( (timeOffset.tm_hour < 0) || (timeOffset.tm_min < 0) )
         {
-            serializedValue += "Z";
+            serializedValue += "-";
+            timeOffset.tm_hour *= -1;
+            timeOffset.tm_min *= -1;
         }
         else
-        {
-            struct tm timeOffset;
-            timeOffset.tm_year = 0;
-            timeOffset.tm_yday = 0;
-            timeOffset.tm_sec = 0;
-            timeOffset.tm_min = timeOffsetInMinutes % 60;
-            timeOffsetInMinutes -= timeOffset.tm_min;
-            timeOffset.tm_hour = (timeOffsetInMinutes % (60 * 24)) / 60;
-            
-            if ( (timeOffset.tm_hour < 0) || (timeOffset.tm_min < 0) )
-            {
-                serializedValue += "-";
-                timeOffset.tm_hour *= -1;
-                timeOffset.tm_min *= -1;
-            }
-            else
-            {
-                serializedValue += "+";
-            }
-            
-            AxisChar * offSetString = new AxisChar[6];
-            sprintf(offSetString, "%02i:%02i", timeOffset.tm_hour, timeOffset.tm_min);
-            serializedValue += offSetString;
-            delete [] offSetString;
-        }
-
+            serializedValue += "+";
         
-        IAnySimpleType::serialize(serializedValue.c_str());
-		return m_Buf;
+        AxisChar offSetString[6];
+        sprintf(offSetString, "%02i:%02i", timeOffset.tm_hour, timeOffset.tm_min);
+        serializedValue += offSetString;
     }
-	
-    xsd__dateTime* DateTime::deserializeDateTime(const AxisChar* valueAsChar) throw (AxisSoapException)
-    {
-    	struct tm value;
-    	struct tm* pTm;
-	    AxisChar *cUtc;
-	    AxisChar *cTemp;
-	    AxisChar *cTemp2;
-	    AxisChar *cTemp3;
-
-        // Calculate local timezone offset
-        time_t now = time(NULL);
-        struct tm *temp = gmtime(&now);
-        struct tm utcTime;
-        memcpy(&utcTime, temp, sizeof(struct tm));
-        temp = localtime(&now);
-        struct tm localTime;
-        memcpy(&localTime, temp, sizeof(struct tm));
-
-        long utcTimeInSeconds = (utcTime.tm_year * 60 * 60 * 24 * 365)
-            + (utcTime.tm_yday * 60 * 60 * 24)
-            + (utcTime.tm_hour * 60 * 60)
-            + (utcTime.tm_min * 60);
-
-        long localTimeInSeconds = (localTime.tm_year * 60 * 60 * 24 * 365)
-            + (localTime.tm_yday * 60 * 60 * 24)
-            + (localTime.tm_hour * 60 * 60)
-            + (localTime.tm_min * 60);
-
-        time_t d = utcTimeInSeconds - localTimeInSeconds;
-
-
-	
-        /* dismantle valueAsChar to get tm value;
-         * XSD_DATETIME format is
-         * CCYY(-)MM(-)DDThh:mm:ss.ss...Z OR
-         * CCYY(-)MM(-)DDThh:mm:ss.ss...+/-<UTC TIME DIFFERENCE>
-         */
-        if (sscanf (valueAsChar, "%d-%d-%dT%d:%d:%d", &value.tm_year,
-            &value.tm_mon, &value.tm_mday, &value.tm_hour, &value.tm_min, 
-			&value.tm_sec) != 6)
-		{
-            AxisString exceptionMessage =
-            "Unable to decompose from string form of DateTime value.  Value =";
-            exceptionMessage += valueAsChar;
-            exceptionMessage += ".";
+
+    
+    IAnySimpleType::serialize(serializedValue.c_str());
+	return m_Buf;
+}
+
+xsd__dateTime* DateTime::deserializeDateTime(const AxisChar* valueAsChar) throw (AxisSoapException)
+{
+	struct tm value;
+	struct tm* pTm;
+    AxisChar *cUtc;
+    AxisChar *cTemp;
+    AxisChar *cTemp2;
+    AxisChar *cTemp3;
+
+    // Calculate local timezone offset
+    time_t now = time(NULL);
+    struct tm *temp = gmtime(&now);
+    struct tm utcTime;
+    memcpy(&utcTime, temp, sizeof(struct tm));
+    temp = localtime(&now);
+    struct tm localTime;
+    memcpy(&localTime, temp, sizeof(struct tm));
+
+    long utcTimeInSeconds = (utcTime.tm_year * 60 * 60 * 24 * 365)
+        + (utcTime.tm_yday * 60 * 60 * 24)
+        + (utcTime.tm_hour * 60 * 60)
+        + (utcTime.tm_min * 60);
+
+    long localTimeInSeconds = (localTime.tm_year * 60 * 60 * 24 * 365)
+        + (localTime.tm_yday * 60 * 60 * 24)
+        + (localTime.tm_hour * 60 * 60)
+        + (localTime.tm_min * 60);
+
+    time_t d = utcTimeInSeconds - localTimeInSeconds;
+
+
+
+    /* dismantle valueAsChar to get tm value;
+     * XSD_DATETIME format is
+     * CCYY(-)MM(-)DDThh:mm:ss.ss...Z OR
+     * CCYY(-)MM(-)DDThh:mm:ss.ss...+/-<UTC TIME DIFFERENCE>
+     */
+    if (sscanf (valueAsChar, "%d-%d-%dT%d:%d:%d", &value.tm_year,
+        &value.tm_mon, &value.tm_mday, &value.tm_hour, &value.tm_min, 
+		&value.tm_sec) != 6)
+	{
+        AxisString exceptionMessage =
+        "Unable to decompose from string form of DateTime value.  Value =";
+        exceptionMessage += valueAsChar;
+        exceptionMessage += ".";
             
-            throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
+        throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
-            }
+     }
 
         value.tm_year -= 1900;
         value.tm_mon--;
@@ -255,115 +249,109 @@
         value.tm_gmtoff = -1;
 #endif
         cTemp2 = const_cast<char*>(strpbrk (valueAsChar, "T"));
-        cTemp3 = strrchr (cTemp2, ':');
-        cTemp3[0] = '\0';
-        unsigned long len = strlen (cTemp2);
-        cTemp3[0] = ':';
-
-        /*if the timezone is represented adding 'Z' at the end */
-        if ((cTemp = const_cast<char*>(strpbrk (valueAsChar, "Z"))) != NULL)
-        {
-            time_t tempmktime = mktime (&value); // convert tm object to seconds
-            if (tempmktime == -1)
-            {
-            	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            pTm = localtime (&tempmktime); // construct tm object from seconds
-            memcpy (&value, pTm, sizeof (tm));
-            time_t t = mktime (&value);
-            if (t == -1)
-            {
-              throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-
-            t = labs (t - d);
-            pTm = localtime (&t);
-        }
-        /*if the timezone is represented using +/-hh:mm format */
-        else if (len > (sizeof (char) * 6))
-        {
-            cUtc = strpbrk (cTemp2, "+");
-            if (cUtc == NULL)
-            {
-                cUtc = strpbrk (cTemp2, "-");
-            }
-            
-            time_t timeInSecs = mktime (&value);
-            if (timeInSecs == -1)
-            {
-            	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            
-            int hours = 0;
-            int minutes = 0;
-
-            if (sscanf (cUtc + 1, "%d:%d", &hours, &minutes) != 2)
-            {
-            	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-
-            int secs = hours * 60 * 60 + minutes * 60;
-            if ((cTemp = strpbrk ((cUtc), "+")) != NULL)
-            {
-                timeInSecs -= secs;
-            }
-            else
-            {
-                timeInSecs += secs;
-            }
-
-            pTm = localtime (&timeInSecs);
-            memcpy (&value, pTm, sizeof (tm));
-            time_t t = mktime (&value);
-            if (t == -1)
-            {
-            	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
+    cTemp3 = strrchr (cTemp2, ':');
+    cTemp3[0] = '\0';
+    unsigned long len = strlen (cTemp2);
+    cTemp3[0] = ':';
 
-            t = labs (t - d);
-            pTm = localtime (&t);
+    /*if the timezone is represented adding 'Z' at the end */
+    if ((cTemp = const_cast<char*>(strpbrk (valueAsChar, "Z"))) != NULL)
+    {
+        time_t tempmktime = mktime (&value); // convert tm object to seconds
+        if (tempmktime == -1)
+        {
+        	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
         }
-        /*if the zone is not represented in the date */
-        else
+        pTm = localtime (&tempmktime); // construct tm object from seconds
+        memcpy (&value, pTm, sizeof (tm));
+        time_t t = mktime (&value);
+        if (t == -1)
         {
-            /*else it is assumed that the sent time is localtime */
-            time_t timeInSecs = mktime (&value);
-            if (timeInSecs == -1)
-            {
-		    	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
-            }
-            pTm = localtime (&timeInSecs);
+          throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
         }
+
+        t = labs (t - d);
+        pTm = localtime (&t);
+    }
+    /*if the timezone is represented using +/-hh:mm format */
+    else if (len > (sizeof (char) * 6))
+    {
+        cUtc = strpbrk (cTemp2, "+");
+        if (cUtc == NULL)
+            cUtc = strpbrk (cTemp2, "-");
         
-        xsd__dateTime * returnValue = new xsd__dateTime;
-        memcpy (returnValue, pTm, sizeof (tm));
+        time_t timeInSecs = mktime (&value);
+        if (timeInSecs == -1)
+        {
+        	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
         
-        return returnValue;
-    }
+        int hours = 0;
+        int minutes = 0;
 
-    MinInclusive* DateTime::getMinInclusive()
-    {
-        return new MinInclusive();
-    }
+        if (sscanf (cUtc + 1, "%d:%d", &hours, &minutes) != 2)
+        {
+        	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
 
-    MinExclusive* DateTime::getMinExclusive()
-    {
-        return new MinExclusive();
-    }
+        int secs = hours * 60 * 60 + minutes * 60;
+        if ((cTemp = strpbrk ((cUtc), "+")) != NULL)
+            timeInSecs -= secs;
+        else
+            timeInSecs += secs;
 
-    MaxInclusive* DateTime::getMaxInclusive()
-    {
-        return new MaxInclusive();
-    }
+        pTm = localtime (&timeInSecs);
+        memcpy (&value, pTm, sizeof (tm));
+        time_t t = mktime (&value);
+        if (t == -1)
+        {
+        	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
 
-    MaxExclusive* DateTime::getMaxExclusive()
-    {
-        return new MaxExclusive();
+        t = labs (t - d);
+        pTm = localtime (&t);
     }
-
-    WhiteSpace* DateTime::getWhiteSpace()
+    /*if the zone is not represented in the date */
+    else
     {
-        return new WhiteSpace(COLLAPSE);
+        /*else it is assumed that the sent time is localtime */
+        time_t timeInSecs = mktime (&value);
+        if (timeInSecs == -1)
+        {
+	    	throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR);
+        }
+        pTm = localtime (&timeInSecs);
     }
+    
+    xsd__dateTime * returnValue = new xsd__dateTime;
+    memcpy (returnValue, pTm, sizeof (tm));
+    
+    return returnValue;
+}
+
+MinInclusive* DateTime::getMinInclusive()
+{
+    return new MinInclusive();
+}
+
+MinExclusive* DateTime::getMinExclusive()
+{
+    return new MinExclusive();
+}
+
+MaxInclusive* DateTime::getMaxInclusive()
+{
+    return new MaxInclusive();
+}
+
+MaxExclusive* DateTime::getMaxExclusive()
+{
+    return new MaxExclusive();
+}
+
+WhiteSpace* DateTime::getWhiteSpace()
+{
+    return new WhiteSpace(COLLAPSE);
+}
 
 AXIS_CPP_NAMESPACE_END

Modified: webservices/axis/trunk/c/src/soap/xsd/Decimal.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/Decimal.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/Decimal.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/Decimal.cpp Wed Nov 22 02:11:36 2006
@@ -42,13 +42,9 @@
 xsd__decimal* Decimal::getDecimal()
 {
     if (isNil())
-    {
         return NULL;
-    }
     else
-    {
         return deserializeDecimal(m_Buf);
-    }
 }
 
 void * Decimal::getValue()
@@ -60,91 +56,83 @@
 {
     MinInclusive* minInclusive = getMinInclusive();
     if (minInclusive->isSet())
-    {
         if ( *value < minInclusive->getMinInclusiveAsDouble() )
         {
             AxisString exceptionMessage =
             "Value to be serialized is less than MinInclusive specified for this type.  MinInclusive = ";
-            AxisChar* length = new AxisChar[25];
+            AxisChar length[100];
             sprintf(length, "%f", minInclusive->getMinInclusiveAsDouble());
             exceptionMessage += length;
             exceptionMessage += ", Value = ";
             sprintf(length, "%f", *value);
             exceptionMessage += length;
             exceptionMessage += ".";
-            delete [] length;
             
+            delete minInclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete minInclusive;
 
     MinExclusive* minExclusive = getMinExclusive();
     if (minExclusive->isSet())
-    {
         if ( *value <= minExclusive->getMinExclusiveAsDouble() )
         {
             AxisString exceptionMessage =
             "Value to be serialized is less than or equal to MinExclusive specified for this type.  MinExclusive = ";
-            AxisChar* length = new AxisChar[25];
+            AxisChar length[100];
             sprintf(length, "%f", minExclusive->getMinExclusiveAsDouble());
             exceptionMessage += length;
             exceptionMessage += ", Value = ";
             sprintf(length, "%f", *value);
             exceptionMessage += length;
             exceptionMessage += ".";
-            delete [] length;
             
+            delete minExclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete minExclusive;
 
 
     MaxInclusive* maxInclusive = getMaxInclusive();
     if (maxInclusive->isSet())
-    {
         if ( *value > maxInclusive->getMaxInclusiveAsDouble() )
         {
             AxisString exceptionMessage =
             "Value to be serialized is greater than MaxInclusive specified for this type.  MaxInclusive = ";
-            AxisChar* length = new AxisChar[25];
+            AxisChar length[100];
             sprintf(length, "%f", maxInclusive->getMaxInclusiveAsDouble());
             exceptionMessage += length;
             exceptionMessage += ", Value = ";
             sprintf(length, "%f", *value);
             exceptionMessage += length;
             exceptionMessage += ".";
-            delete [] length;
             
+            delete maxInclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete maxInclusive;
 
     MaxExclusive* maxExclusive = getMaxExclusive();
     if (maxExclusive->isSet())
-    {
         if ( *value >= maxExclusive->getMaxExclusiveAsDouble() )
         {
             AxisString exceptionMessage =
             "Value to be serialized is greater than or equal to MaxExclusive specified for this type.  MaxExclusive = ";
-            AxisChar* length = new AxisChar[25];
+            AxisChar length[100];
             sprintf(length, "%f", maxExclusive->getMaxExclusiveAsDouble());
             exceptionMessage += length;
             exceptionMessage += ", Value = ";
             sprintf(length, "%f", *value);
             exceptionMessage += length;
             exceptionMessage += ".";
-            delete [] length;
             
+            delete maxExclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete maxExclusive;
 
 
@@ -155,10 +143,9 @@
     if (totalDigits->isSet())
     {
         valueSize = totalDigits->getTotalDigits() + 1;
-        AxisChar* digits = new char[10];
+        AxisChar digits[100];
         AxisSprintf (digits, 10, "%i", totalDigits->getTotalDigits());
         formatSpecifier += digits;
-        delete [] digits;
     }
     delete totalDigits;
     
@@ -166,10 +153,9 @@
     if (fractionDigits->isSet())
     {
         formatSpecifier += ".";
-        AxisChar* digits = new char[10];
+        AxisChar digits[100];
         AxisSprintf (digits, 10, "%i", fractionDigits->getFractionDigits());
         formatSpecifier += digits;
-        delete [] digits;
     }
     delete fractionDigits;
     

Modified: webservices/axis/trunk/c/src/soap/xsd/Double.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/soap/xsd/Double.cpp?view=diff&rev=478106&r1=478105&r2=478106
==============================================================================
--- webservices/axis/trunk/c/src/soap/xsd/Double.cpp (original)
+++ webservices/axis/trunk/c/src/soap/xsd/Double.cpp Wed Nov 22 02:11:36 2006
@@ -56,7 +56,6 @@
 {
     MinInclusive* minInclusive = getMinInclusive();
     if (minInclusive->isSet())
-    {
         if ( *value < minInclusive->getMinInclusiveAsDouble() )
         {
             AxisString exceptionMessage =
@@ -69,18 +68,14 @@
             exceptionMessage += length;
             exceptionMessage += ".";
             
-            if (minInclusive)
-                delete minInclusive;
-            
+            delete minInclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete minInclusive;
 
     MinExclusive* minExclusive = getMinExclusive();
     if (minExclusive->isSet())
-    {
         if ( *value <= minExclusive->getMinExclusiveAsDouble() )
         {
             AxisString exceptionMessage =
@@ -93,19 +88,15 @@
             exceptionMessage += length;
             exceptionMessage += ".";
             
-            if (minExclusive)
-                delete minExclusive;
-            
+            delete minExclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete minExclusive;
  
 
     MaxInclusive* maxInclusive = getMaxInclusive();
     if (maxInclusive->isSet())
-    {
         if ( *value > maxInclusive->getMaxInclusiveAsDouble() )
         {
             AxisString exceptionMessage =
@@ -117,19 +108,15 @@
             sprintf(length, "%f", *value);
             exceptionMessage += length;
             exceptionMessage += ".";
-            
-            if (maxInclusive)
-                delete maxInclusive;
-            
+           
+            delete maxInclusive;
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete maxInclusive;
 
     MaxExclusive* maxExclusive = getMaxExclusive();
     if (maxExclusive->isSet())
-    {
         if ( *value >= maxExclusive->getMaxExclusiveAsDouble() )
         {
             AxisString exceptionMessage =
@@ -142,13 +129,11 @@
             exceptionMessage += length;
             exceptionMessage += ".";
             
-            if (maxExclusive)
-                delete maxExclusive;
+            delete maxExclusive;
             
             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
                 const_cast<AxisChar*>(exceptionMessage.c_str()));
         }
-    }
     delete maxExclusive;
 
  



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org