WSDL Java Clase Case Sensitivity
Pregunta
En el WSDL tengo 2 tipos, el mismo nombre, casos diferentes: LoginResponse y LoginResponse.
Si uso Xfire para generar las clases de Java, solo genera una clase, LoginResponse, Desechando el LOGINRESPONSE.
¿Cómo puedo encontrar esto?
<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>
Solución
Los nombres declarados en WSDL son de hecho distingue entre mayúsculas y minúsculas, y es Legal para usar nombres que difieran solo en su caso.Sin embargo, tiene que ser una mala idea:
-
Seguramente, es una mala idea desde la perspectiva de la legibilidad.(Quiero decir, si estaba escribiendo un programa de Java, no declararía las variables
acat
yaCat
en el mismo espacio de nombres. ¿Lo harías?) -
Mientras WSDL distingue entre mayúsculas y minúsculas, las enlaces del lenguaje de programación deberán asignar nombres WSDL a los identificadores de programas insensibles a mayúsculas (por ejemplo, en Visual Basic I CREERAME), o pueden cambiarlos de manera para que los identificadores generados se ajusten a la programación.Convenciones de estilo del idioma.En cualquier caso, los nombres de WSDL que difieren solo en caso de letras pueden llevar a problemas.
imo La mejor solución a largo plazo para su problema es cambiar el WSDL para que no tenga elementos, tipos, etc. cuyos nombres difieran solo por caso.