Чувствительность к регистру в Java-классе - PullRequest
3 голосов
/ 24 июля 2010

В wsdl у меня есть 2 типа, одно и то же имя, разные случаи: LoginResponse и LOGINRESPONSE.

Если я использую xfire для генерации классов Java, он генерирует только один класс, LoginResponse, отбрасывая ЛОГИННЫЙ ОТВЕТ.

Как мне обойти это?

<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>

1 Ответ

1 голос
/ 24 июля 2010

Имена, объявленные в WSDL, действительно чувствительны к регистру, и законно использовать имена, отличающиеся только регистром.Однако это должна быть плохая идея:

  • Конечно, это плохая идея с точки зрения читабельности.(Я имею в виду, что если бы вы писали программу на Java, вы бы не объявили переменные acat и aCat в одном и том же пространстве имен. Не могли бы вы?)

  • Хотя WSDL чувствителен к региструпривязки языка программирования должны будут отображать имена WSDL на нечувствительные к регистру идентификаторы программ (например, в Visual Basic, я полагаю), или они могут искажать их регистр, чтобы сгенерированные идентификаторы соответствовали соглашениям стилей языка программирования.В любом случае имена WSDL, которые отличаются только регистром букв, могут привести к проблемам.

IMO лучшее долговременное решение вашей проблемы - изменить WSDL так, чтобы у вас не былоэлементы, типы и т. д., имена которых отличаются только регистром.

...