Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-7898

Cxf returns 'null' on MessagePartInfo typeClass in services with multiple portTypes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • JAXB Databinding
    • None
    • Unknown

    Description

      Recently I started using the Apache Cxf lib with the intention of performing the extraction of operation attributes in a WSDL files for SOAP Web Services. That's because before the company where I worked had many problems with the old lib, the Predic8.

      However, recently I tried to extract the attributes of a WSDL operation and I was not able to get the expected result. From what I have analyzed with some tests, it is not able to identify the type of the Class of the attributes that have more than one binding. However with some tests I performed, changing the portType of all bindings to the same I was able to get it to interpret correctly.

      I believe the problem is occurring when there is more and a binding and each uses a different PortType, since it can only extract the type of classes from the attributes in one of the portTypes.

      Please give me a light.

      Code used to extract:

      public class DynClient {
          
          
          public static void main(String[] args) {
              JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
              Client client = factory.createClient("http://intsaprm.hptransportes.com.br:8051/wsConsultaSQL/MEX?wsdl");
              
              for (ServiceInfo service : client.getEndpoint().getService().getServiceInfos()) {
                  for (BindingInfo binding : service.getBindings()) {
                      System.out.println("Binding: " + binding.getName().getLocalPart());
                      binding.getOperations().forEach(operation -> {                    
                          if (operation.getInput() != null) {                        
                              operation.getInput().getMessageParts().forEach(part -> {
                                  System.out.println(part.getName().getLocalPart() + "=>" + part.getTypeClass());
                              });
                          }
                          if (operation.getOutput() != null) {
                              operation.getOutput().getMessageParts().forEach(part -> {
                                  System.out.println(part.getName().getLocalPart() + "=>" + part.getTypeClass());
                              });
                          }
                      });
                  }
              }
              
          }
      }

       

      When executed:

      Output

      Binding: RM_IwsBase
      parameters=>class com.totvs.CheckServiceActivity
      parameters=>class com.totvs.CheckServiceActivityResponse
      parameters=>class com.totvs.AutenticaAcesso
      parameters=>class com.totvs.AutenticaAcessoResponse
      parameters=>class com.totvs.Implements
      parameters=>class com.totvs.ImplementsResponse
      Binding: RM_IwsConsultaSQL
      parameters=>null
      parameters=>null
      parameters=>null
      parameters=>null
      parameters=>null
      parameters=>null
      Binding: RM_IRMSServer
      parameters=>null
      parameters=>null
      parameters=>null
      parameters=>null

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            mathaus.ramos Mathaus Erich Ramos
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: