Skip to content

kdwsdl2cpp generates invalid class name #210

Description

@skostenkov

kdwsdl2cpp generates an invalid class name
when wsdl contains a namespace with a prefix.
For example, the code

    class AGREGAT.GETAGGREGATES__GetAggregates
    {
    public:
        void setLaunchId( qint64 _launchId );
        qint64 launchId() const;
        KDSoapValue serialize( const QString& valueName ) const;
        void deserialize( const KDSoapValue& mainValue );
        AGREGAT.GETAGGREGATES__GetAggregates();
        ~AGREGAT.GETAGGREGATES__GetAggregates();

    public:
        AGREGAT.GETAGGREGATES__GetAggregates( const AGREGAT.GETAGGREGATES__GetAggregates& );
        AGREGAT.GETAGGREGATES__GetAggregates &operator=( const AGREGAT.GETAGGREGATES__GetAggregates& );

    private:
        class PrivateDPtr;
        QSharedDataPointer<PrivateDPtr> d_ptr;
    };
} // namespace end

is generated from

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:PandaRt="http://nicetu.spb.ru/panda/ws/rt/methods"
   xmlns:agregat.getAggregates="http://nicetu.spb.ru/panda/types/vti/agregat/getAggregates/methods"
   name="PandaRtService" targetNamespace="http://nicetu.spb.ru/panda/ws/rt">

   <wsdl:types>
       <xsd:schema targetNamespace="http://nicetu.spb.ru/panda/ws/rt" elementFormDefault="qualified">
   	    <xsd:import namespace="http://nicetu.spb.ru/panda/types/vti/agregat/getAggregates/methods" schemaLocation="../xsd/vti/agregat.getAggregates.methods.xsd" />
           <xsd:import namespace="http://nicetu.spb.ru/panda/ws/rt/methods" schemaLocation="../xsd/PandaRt.methods.xsd" />
       </xsd:schema>
   </wsdl:types>

   <wsdl:message name="getAggregatesRequest">
       <wsdl:part name="parameters" element="agregat.getAggregates:getAggregates" />
   </wsdl:message>
   <wsdl:message name="getAggregatesResponse">
       <wsdl:part name="parameters" element="agregat.getAggregates:getAggregatesResponse" />
   </wsdl:message>
 
   <wsdl:portType name="PandaRt">
       <wsdl:documentation>Сервис для ПК РМВ</wsdl:documentation>
       <wsdl:operation name="getAggregates">
           <wsdl:documentation>Возвращает состав агрегатов изделия на пуске</wsdl:documentation>
           <wsdl:input message="tns:getAggregatesRequest" />
           <wsdl:output message="tns:getAggregatesResponse" />
       </wsdl:operation>
   </wsdl:portType>

   <wsdl:binding name="PandaRtPortBinding" type="tns:PandaRt">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
       <wsdl:operation name="getAggregates">
           <soap:operation soapAction="http://nicetu.spb.ru/panda/ws/rt/getAggregates" />
           <wsdl:input>
               <soap:body use="literal" />
           </wsdl:input>
           <wsdl:output>
               <soap:body use="literal" />
           </wsdl:output>
       </wsdl:operation>
   </wsdl:binding>

   <wsdl:service name="PandaRtService">
       <wsdl:documentation>Сервис для ПК РМВ</wsdl:documentation>
       <wsdl:port name="PandaRtPort" binding="tns:PandaRtPortBinding">
           <soap:address location="http://as.panda.nicetu.spb.ru:9080/panda-server/ws/contract/PandaRt" />
       </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

The problem is that according to Namespaces in XML and XML xmlns : prefix may contain "." and other chars.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions