Pergunta

No wsdl tenho 2 tipos, mesmo nome, casos diferentes:LoginResponse e LOGINRESPONSE.

Se eu usar o XFire para gerar as classes Java, ele gera apenas uma classe, LoginResponse, descartando o LoginResponse.

Como faço para contornar isso?

<s:element name="LoginResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="LoginResult" type="tns:LOGINRESPONSE" />
      </s:sequence>
    </s:complexType>
  </s:element>

  <s:complexType name="LOGINRESPONSE">
    <s:attribute name="Message" type="s:string" />
    <s:attribute name="Token" type="s:string" />
    <s:attribute name="DataFormat" type="s:string" />
    <s:attribute name="Header" type="s:boolean" use="required" />
    <s:attribute name="Suffix" type="s:boolean" use="required" />
  </s:complexType>
Foi útil?

Solução

Os nomes declarados em WSDL diferenciam maiúsculas de minúsculas e é jurídico usar nomes que diferem apenas em seu caso.No entanto, deve ser uma má ideia:

  • Certamente, é uma má ideia do ponto de vista da legibilidade.(Quero dizer, se você estivesse escrevendo um programa Java você não declararia variáveis acat e aCat no mesmo espaço para nome.Você iria?)

  • Embora o WSDL faça distinção entre maiúsculas e minúsculas, as ligações da linguagem de programação precisarão mapear nomes WSDL para identificadores de programa que não diferenciam maiúsculas de minúsculas (por exemplo,em Visual Basic, acredito), ou eles podem confundi-los para que os identificadores gerados estejam em conformidade com as convenções de estilo da linguagem de programação.Em ambos os casos, nomes WSDL que diferem apenas em letras maiúsculas podem causar problemas.

IMO, a melhor solução de longo prazo para o seu problema é alterar o WSDL para que você não tenha elementos, tipos, etc., cujos nomes diferem apenas por caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top