axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edi Obradovic (JIRA)" <>
Subject [jira] [Commented] (AXIS2-5919) Java classes generated from WSDL with custom faults are missing parameters when calling toOM method (axis2-codegen with axis2-jaxbri)
Date Wed, 08 Aug 2018 14:02:00 GMT


Edi Obradovic commented on AXIS2-5919:

Same issue occurs if you use default axis2 files:
 * Extracted axis2-1.7.7 to folder
 * Copied axis2-1.7.7\samples\faulthandling\bank.wsdl
 * Set java classpath to axis2-1.7.7\lib jars
 * Generated server and client code using "org.apache.axis2.wsdl.WSDL2Java -d jaxbri" from
 * Error in generated code: The method toOM(AccountNotExistFault, boolean, QName) in the
type BankServiceMessageReceiverInOut is not applicable for the arguments (AccountNotExistFault,


> Java classes generated from WSDL with custom faults are missing parameters when calling
toOM method (axis2-codegen with axis2-jaxbri)
> -------------------------------------------------------------------------------------------------------------------------------------
>                 Key: AXIS2-5919
>                 URL:
>             Project: Axis2
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.7.7
>            Reporter: Edi Obradovic
>            Priority: Blocker
>         Attachments: HelloService.wsdl,, WSDL2Java
> We are currently unable to use newer version of axis2 because the Java classes generated
by axis2-codegen and axis2-jaxbri have missing parameter errors.
> When you generate Java classes from WSDL that uses custom faults you get errors in the
newly generated classes: "The method toOM(TestFaultStruct, boolean, QName) in the type <class>
is not applicable for the arguments (TestFaultStruct, boolean)". The reason you get that is
because the QName parameter is missing when calling toOM in faults.
> +The error happens because:+
>  - all toOM methods code is generated using JaxbRIDatabindingTemplate.xsl (axis2-jaxbri)
and they all have QName parameter defined
>  - all custom faults code is generated using MessageReceiverTemplate.xsl (axis2-codegen)
and if you look at the xsl code you can see that QName parameter is not there:
> {code:xml}
>         <xsl:for-each select="fault-list/fault">
>             <xsl:if test="position()=1">}</xsl:if> catch (<xsl:value-of
select="@name"/> e) {
>             msgContext.setProperty(org.apache.axis2.Constants.FAULT_NAME,"<xsl:value-of
>             org.apache.axis2.AxisFault f = createAxisFault(e);
>             if (e.getFaultMessage() != null){
>                 f.setDetail(toOM(e.getFaultMessage(),false));
>             }
>             throw f;
>             }
>         </xsl:for-each>
> {code}
> You can find the WSDL test file and generated class in the attachment.
> Java call for WSDL2Java is also in the attachment.
> Versions used:
> axis2-jaxbri: 1.7.7
> axis2-codegen: 1.7.7
> Classpath with all versions can be found in [WSDL2Java call|]
> *Note:* Migrating code from axis2 1.4 version

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message