Pregunta

Tengo algunas clases generadas a partir de archivos WSDL por Axis Framework. En una de estas clases, hay un método generado


public com.initechsystems.www.initech7.initechbo.Organization createOrganization(com.initechsystems.www.initech7.initechbo.Organization org) throws java.rmi.RemoteException {

//(... snip ...)
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
//(... snip ...)
}

El nombre de la variable org en el parámetro del método crea un choque de nombres con el paquete org.apache.axis.client, ya que el compilador no puede diferenciar entre el paquete y la variable. Me doy cuenta de que puedo solucionar esto fácilmente cambiando la organización del nombre de la variable en el método, pero me gustaría evitar esto, porque ralentiza el flujo de trabajo. ¿Hay alguna forma de evitar esto además de modificar el archivo WSDL o las clases generadas?

Error del compilador:


 D:\projects\java\initechdir\target\generated-sources\axistools\wsdl2java\com\initechsystems\www\initech7\initechws\OrganizationManagement\OrganizationManagementSoapStub.java:[1678,29] cannot find symbol
symbol  : variable apache
location: class com.initechsystems.www.initech7.initechbo.Organization
¿Fue útil?

Solución

¿Hay alguna manera de hacer que el código generado tenga declaraciones de importación? Eso evitaría que tenga que tener el nombre completo de la clase.

Entonces, si pudiera agregar:

import org.apache.axis.client.Call;

al archivo, entonces su llamada al método sería:

_call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);

No estoy seguro si Axis tiene una opción para eso. Si no, diría que cambiar el nombre de la variable (tal vez a "organización") sería lo mejor. Recomendaría evitar las ediciones manuales de los archivos generados automáticamente, ya que eso hace que la regeneración sea más difícil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top