Ryan,

For #2, can you give me a simple WSDL that recreates problem instead of 
having me try to recreate WSDL?  I think I know what the problem is, but I 
need to verify against a WSDL.



Nadir Amra

"McCullough, Ryan" <[EMAIL PROTECTED]> wrote on 05/23/2008 11:22:37 
AM:

> Here are a list of issues I encountered with the generated soap objects.
> 
> 
> 
> 2) I also think I found a problem with XSD_DOUBLE and XSD_DATETIME.
> 
> I have this in my schema xsd:
> <xs:complexType name="ac_value">
>     <xs:choice>
>         <xs:element name="cval"      minOccurs="0" nillable="true"
> type="currency" />
>         <xs:element name="dval"      minOccurs="0" nillable="true"
> type="xs:double" />
>         <xs:element name="ival"      minOccurs="0" nillable="true"
> type="xs:long" />
>         <xs:element name="sval"      minOccurs="0" nillable="true"
> type="xs:string" />
>         <xs:element name="tval"      minOccurs="0" nillable="true"
> type="dttm" />
>     </xs:choice>
> </xs:complexType>
> 
> It was generating this code in the "Serialize sub-elements." section:
> else if(param->dval)
> {
>    if (param->dval != NULL)
>    pSZ->serializeAsElement("dval", Axis_URI_Ac_value,
> (void*)(*(param->dval)), XSD_DOUBLE);
> }
> // snipped irrelevant code
> else if(param->tval)
> {
>    if (param->tval != NULL)
>    pSZ->serializeAsElement("tval", Axis_URI_Ac_value,
> (void*)(*(param->tval)), XSD_DATETIME);
> }
> 
> When I tried to compile this file, I received these 2 errors:
> error C2440: 'type cast' : cannot convert from 'double' to 'void *'
> error C2440: 'type cast' : cannot convert from 'struct tm' to 'void *'
> 
> If I removed the de-reference * from param, the compile errors went 
away.
> pSZ->serializeAsElement("dval", Axis_URI_Ac_value, (void*)(param->dval),
> XSD_DOUBLE);
> pSZ->serializeAsElement("tval", Axis_URI_Ac_value, (void*)(param->tval),
> XSD_DATETIME);
> 
> 
> 
> 3) I received warnings all over the place about peekedElementName not 
being
> used (unreferenced). So, I removed the lines:
> // We always use this...
> writer.write("\tconst char* peekedElementName;\n");
> 
> And then where peekedElementName is used, I added this code:
> // We only peek for elements, not element attributes!
> if (attribs[i].isOptional() && !attribs[i].isAttribute())
> {
>     writer.write(tab1 + "\tconst char* peekedElementName" + soapTagName 
+
> ";\n");
>     writer.write(tab1 + "peekedElementName" + soapTagName + " =
> pIWSDZ->peekNextElementName();\n");
>     writer.write(tab1 + "if (strcmp(peekedElementName" + soapTagName + 
",
> \"" + soapTagName + "\") == 0)\n");
>     writer.write(tab1 + "{\n");
>     tab2 += "\t";
> }
> 
> if (attribs[i].isOptional())
> {
>     writer.write(tab1 + "\tconst char* peekedElementName" + soapTagName 
+
> ";\n");
>     writer.write(tab1 + "peekedElementName" + soapTagName + " =
> pIWSDZ->peekNextElementName();\n");
>     writer.write(tab1 + "if (strcmp(peekedElementName" + soapTagName + 
",
> \"" + soapTagName + "\") == 0)\n");
>     tab2 += "\t";
> }
> 
> I had to append the soapTagName to the peekedElementName, otherwise I 
got
> re-definition errors.
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to