Java confronto de nomeação entre a variável método e nomes de pacotes
-
19-08-2019 - |
Pergunta
Eu tenho algumas classes gerados a partir de arquivos WSDL pelo Quadro Axis. Em uma dessas classes, há um método gerado
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 ...)
}
O nome da variável org no parâmetro método cria um conflito de nomes com org.apache.axis.client pacote, como o compilador não pode diferenciar entre o pacote e variável. Sei que posso corrigir isso facilmente, alterando o nome da variável org no método, mas eu gostaria de evitar isso, porque ele diminui o fluxo de trabalho. Existe alguma maneira de contornar isso que não quer modificar o arquivo WSDL ou as classes geradas?
Erro do 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
Solução
Existe uma maneira de fazer com que o código gerado para ter instruções de importação? Isso iria impedi-lo de ter que ter o nome totalmente qualificado da classe.
Então, se você pode adicionar:
import org.apache.axis.client.Call;
para o arquivo, em seguida, a sua chamada de método seria apenas:
_call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
Eu não tenho certeza se Axis tem uma opção para que embora. Se não eu diria renomear a variável (talvez a "organização") seria a melhor coisa. Eu recomendaria evitar edições manuais de arquivos gerados automaticamente, como que faz regenerando-os mais difíceis.