[ 
https://issues.apache.org/jira/browse/CXF-7898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16690706#comment-16690706
 ] 

Mathaus Erich Ramos edited comment on CXF-7898 at 11/17/18 9:41 PM:
--------------------------------------------------------------------

Using the below code I can get the type name by MessagePart.getTypeQName(), but 
I need the class Type to my program:

 
{code:java}
for (ServiceInfo service : client.getEndpoint().getService().getServiceInfos()) 
{
            for (BindingInfo binding : service.getBindings()) {
                System.out.println("Binding: " + 
binding.getName().getLocalPart());
                binding.getOperations().forEach(operation -> {
                    
                    MessageInfo input = null, output = null;
                    
                    if (operation.isUnwrapped()) {
                        operation = operation.getWrappedOperation();
                    }
                    
                    if (operation.isUnwrappedCapable()) {
                        input = 
operation.getWrappedOperation().getOperationInfo().getInput();
                        output = 
operation.getWrappedOperation().getOperationInfo().getOutput();
                    } else {
                        input = operation.getOperationInfo().getInput();
                        output = operation.getOperationInfo().getOutput();
                    }
                    
                    if (input != null) {                        
                        input.getMessageParts().forEach(part -> {
                            String className = part.getTypeClass() != null ? 
part.getTypeClass().toString() : part.getTypeQName().getLocalPart();
                            System.out.println(part.getName().getLocalPart() + 
" => " + className);
                        });
                    }
                    if (output != null) {
                        output.getMessageParts().forEach(part -> {
                            String className = part.getTypeClass() != null ? 
part.getTypeClass().toString() : part.getTypeQName().getLocalPart();
                            System.out.println(part.getName().getLocalPart() + 
"=>" + className);
                        });
                    }
                });
            }
        }
{code}


was (Author: mathaus.ramos):
Using the below code I can get the type name by MessagePart.getTypeQName(), but 
I need the class Type to my program:

 
{code:java}
final MessageInfo input;
    
if (operation.isUnwrappedCapable()) {
    input = operation.getWrappedOperation().getOperationInfo().getInput();
} else {
    input = operation.getOperationInfo().getInput();
}
{code}

> Cxf returns 'null' on MessagePartInfo typeClass in services with multiple 
> portTypes
> -----------------------------------------------------------------------------------
>
>                 Key: CXF-7898
>                 URL: https://issues.apache.org/jira/browse/CXF-7898
>             Project: CXF
>          Issue Type: Bug
>          Components: JAXB Databinding
>            Reporter: Mathaus Erich Ramos
>            Priority: Major
>
> 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:*
> {code:java}
> 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());
>                         });
>                     }
>                 });
>             }
>         }
>         
>     }
> }{code}
>  
> *When executed:*
> {panel:title=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
> {panel}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to