Solve my own problem.  Once I put the <simpleType inside the <schema

The stub generated fine.

<definitions name="Tax" targetNamespace="http://soap.vindicia.com/Tax";
xmlns="http://schemas.xmlsoap.org/wsdl/";
xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:tns="http://soap.vindicia.com/Tax";
xmlns:vin="http://soap.vindicia.com/Vindicia";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsdl="http://soap.vindicia.com/Tax"; >
  <documentation>WSDL Specification for Tax</documentation>
  <types>
    <xsd:schema targetNamespace="http://soap.vindicia.com/Tax";>
      <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <xsd:import namespace="http://soap.vindicia.com/Vindicia";
schemaLocation="./Vindicia.xsd" />
  <xsd:simpleType name="ScoreControlTests">
     <xsd:restriction base="xsd:string">
       <xsd:enumeration value="firstTimeCardMerchant" />
       <xsd:enumeration value="firstTimeCardSku" />
       <xsd:enumeration value="firstTimeShippingAddressMerchant" />
       <xsd:enumeration value="firstTimeShippingAddressSku" />
       <xsd:enumeration value="firstTimeBillingAddressMerchant" />
       <xsd:enumeration value="firstTimeBillingAddressSku" />
       <xsd:enumeration value="firstTimeCardAffiliate" />
     </xsd:restriction>
   </xsd:simpleType>
    </xsd:schema>
 </types>
.
.
.
.
.
.
=================================
The output is like this.
----------------

enum XX2__ScoreControlTests
{
        XX2__ScoreControlTests__firstTimeCardMerchant,  ///< xs:string
value="firstTimeCardMerchant"
        XX2__ScoreControlTests__firstTimeCardSku,       ///< xs:string
value="firstTimeCardSku"
        XX2__ScoreControlTests__firstTimeShippingAddressMerchant,      
///< xs:string value="firstTimeShippingAddressMerchant"
        XX2__ScoreControlTests__firstTimeShippingAddressSku,    ///<
xs:string value="firstTimeShippingAddressSku"
        XX2__ScoreControlTests__firstTimeBillingAddressMerchant,       
///< xs:string value="firstTimeBillingAddressMerchant"
        XX2__ScoreControlTests__firstTimeBillingAddressSku,     ///<
xs:string value="firstTimeBillingAddressSku"
        XX2__ScoreControlTests__firstTimeCardAffiliate, ///< xs:string
value="firstTimeCardAffiliate"
};



















> See a similar question posted a year ago but no answer to that.
> http://marc.theaimsgroup.com/?l=axis-c-dev&m=111992809528479&w=2
>
> I am posting mine with more details to the problem.
>
> I ran stub generations using Axis 1_3 for Java and C++, the Java stubs are
> all perfect and the C++ are almost prefect except all the Emeration values
> are gone.
>
> Here are the input and output data.
>
> Please let me know if there is a way to get around it.  Thanks.
>
> ============================================================
> The wsdl looks like this
> -----------------------------------------------------
> <definitions>
>   <message name="dummy">
>     <part name="ScoreControlTests" type="vin:ScoreControlTests" />
>   </message>
> .
> .
> .
> </definitions>
> ============================================================
> The wsdl looks like this
> -----------------------------------------------------
>  <xsd:simpleType name="ScoreControlTests">
>     <xsd:restriction base="xsd:string">
>       <xsd:enumeration value="firstTimeCardMerchant" />
>       <xsd:enumeration value="firstTimeCardSku" />
>       <xsd:enumeration value="firstTimeShippingAddressMerchant" />
>       <xsd:enumeration value="firstTimeShippingAddressSku" />
>       <xsd:enumeration value="firstTimeBillingAddressMerchant" />
>       <xsd:enumeration value="firstTimeBillingAddressSku" />
>       <xsd:enumeration value="firstTimeCardAffiliate" />
>     </xsd:restriction>
>   </xsd:simpleType>
> ============================================================
> The Java looks good with the followings.  The enum values are showing.
> -----------------------------------------------------
>     public static final java.lang.String _firstTimeCardMerchant =
> "firstTimeCardMerchant";
>     public static final java.lang.String _firstTimeCardSku =
> "firstTimeCardSku";
>     public static final java.lang.String _firstTimeShippingAddressMerchant
> = "firstTimeShippingAddressMerchant";
>     public static final java.lang.String _firstTimeShippingAddressSku =
> "firstTimeShippingAddressSku";
>     public static final java.lang.String _firstTimeBillingAddressMerchant
> = "firstTimeBillingAddressMerchant";
>     public static final java.lang.String _firstTimeBillingAddressSku =
> "firstTimeBillingAddressSku";
>     public static final java.lang.String _firstTimeCardAffiliate =
> "firstTimeCardAffiliate";
>
> ============================================================
> The C++ header/body stub generated is like this.  All the enum values are
> gone.  Looks like Axis thinks it is just an array declartion.  It is
> un-usable by the Client program.
>
> At the end, I am attaching the stub created by gSoap which shows the
> enum values.
> -----------------------------------------------------
> ScoreControlTests.hpp
> #if !defined(__SCORECONTROLTESTS_PARAM_H__INCLUDED_)
> #define __SCORECONTROLTESTS_PARAM_H__INCLUDED_
>
> #include <axis/AxisUserAPI.hpp>
> #include <axis/AxisUserAPIArrays.hpp>
> AXIS_CPP_NAMESPACE_USE
>
> /*Local name and the URI for the type*/
> static const char* Axis_URI_ScoreControlTests =
> "http://soap.vindicia.com/Vindicia";;
> static const char* Axis_TypeName_ScoreControlTests = "ScoreControlTests";
>
> class ScoreControlTests
> {
> public:
>         ScoreControlTests();
>         void reset();
>         virtual ~ScoreControlTests();
> };
>
> #endif /* !defined(__SCORECONTROLTESTS_PARAM_H__INCLUDED_)*/
>
> -----------------------------------------------------
> ScoreControlTests.cpp
> #include "ScoreControlTests.hpp"
> #include <axis/AxisWrapperAPI.hpp>
> #include <axis/Axis.hpp>
>
> /*
>  * This static method serialize a ScoreControlTests type of object
>  */
> int Axis_Serialize_ScoreControlTests(ScoreControlTests* param,
> IWrapperSoapSerializer* pSZ, bool bArray = false)
> {
>         }
>
> /*
>  * This static method deserialize a ScoreControlTests type of object
>  */
> int Axis_DeSerialize_ScoreControlTests(ScoreControlTests* param,
> IWrapperSoapDeSerializer* pIWSDZ)
> {
>         }
>
> void * Axis_Create_ScoreControlTests( ScoreControlTests * pObj, bool
> bArray = false, int nSize = 0)
> {
>         if( bArray && (nSize > 0))
>         {
>                 if( pObj)
>                 {
>                         ScoreControlTests * pNew = new
> ScoreControlTests[nSize];
>
>                         size_t i = nSize / 2;
>
>                         for( int ii = 0; ii < (int) i; ++ii)
>                         {
>                                 pNew[ii] = pObj[ii];
>                                 pObj[ii].reset();
>                         }
>
>                         delete [] pObj;
>
>                         return pNew;
>                 }
>                 else
>                 {
>                         return new ScoreControlTests[nSize];
>                 }
>         }
>         else
>         {
>                 return new ScoreControlTests;
>         }
> }
>
> /*
>  * This static method delete a ScoreControlTests type of object
>  */
> void Axis_Delete_ScoreControlTests(ScoreControlTests* param, bool bArray =
> false, int nSize=0)
> {
>         if (bArray)
>         {
>                 if (nSize > 0)
>                 {
>                         for (int count = 0 ; count < nSize ; count++ )
>                         {
>                                 if ( (( ScoreControlTests ** )
> param)[count])
>                                 {
>                                         delete (( ScoreControlTests ** )
> param)[count];
>                                         (( ScoreControlTests ** )
> param)[count] = NULL;
>                                 }
>                         }
>                         delete [] ( ScoreControlTests ** ) param;
>                 }
>         }
>         else
>         {
>                 delete param;
>         }
>         param = NULL;
> }
> /*
>  * This static method gives the size of ScoreControlTests type of object
>  */
> int Axis_GetSize_ScoreControlTests()
> {
>         return sizeof(ScoreControlTests);
> }
>
> ScoreControlTests::ScoreControlTests()
> {
>          reset();
> }
>
> void ScoreControlTests::reset()
> {
>         /*do not allocate memory to any pointer members here
>          because deserializer will allocate memory anyway. */
> }
>
> ScoreControlTests::~ScoreControlTests()
> {
>         /*delete any pointer and array members here*/
> }
>
>
>
>
> ============================================================
> In comparsion, here is what the gSoap generates
> -----------------------------------------------------
> /// "http://soap.vindicia.com/Vindicia":ScoreControlTests is a simpleType
> restriction of xs:string.
> /// Note: enum values are prefixed with 'ns1__ScoreControlTests' to avoid
> name clashes, please use wsdl2h option -e to omit this prefix
> enum ns1__ScoreControlTests
> {
>         ns1__ScoreControlTests__firstTimeCardMerchant,        ///<
> xs:string
> value="firstTimeCardMerchant"
>         ns1__ScoreControlTests__firstTimeCardSku,        ///< xs:string
> value="firstTimeCardSku"
>         ns1__ScoreControlTests__firstTimeShippingAddressMerchant,
> ///< xs:string
> value="firstTimeShippingAddressMerchant"
>         ns1__ScoreControlTests__firstTimeShippingAddressSku,        ///<
> xs:string
> value="firstTimeShippingAddressSku"
>         ns1__ScoreControlTests__firstTimeBillingAddressMerchant,
> ///< xs:string
> value="firstTimeBillingAddressMerchant"
>         ns1__ScoreControlTests__firstTimeBillingAddressSku,        ///<
> xs:string
> value="firstTimeBillingAddressSku"
>         ns1__ScoreControlTests__firstTimeCardAffiliate,        ///<
> xs:string
> value="firstTimeCardAffiliate"
> };
>
>

Reply via email to