You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Mathaus Erich Ramos (JIRA)" <ji...@apache.org> on 2018/11/17 21:42:00 UTC
[jira] [Comment Edited] (CXF-7898) Cxf returns 'null' on
MessagePartInfo typeClass in services with multiple portTypes
[ 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)