[ https://issues.apache.org/jira/browse/TUSCANY-978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luciano Resende reassigned TUSCANY-978: --------------------------------------- Assignee: Luciano Resende > Tuscany WSDL2Java can't handle WSDL fault messages > -------------------------------------------------- > > Key: TUSCANY-978 > URL: https://issues.apache.org/jira/browse/TUSCANY-978 > Project: Tuscany > Issue Type: Bug > Components: Java SCA Tools > Affects Versions: Java-SCA-M2 > Environment: Tuscany Java-M2 and current trunk > Reporter: Matthew Sykes > Assignee: Luciano Resende > Fix For: Java-SCA-Next > > Attachments: AccountService.wsdl > > > I've been playing with the BigBank sample and have added a fault to the > AccountService's withdraw operation. After changing the AccountService.wsdl > (attached), the Tuscany WSDL2Java no longer works: > [INFO] Generating Java service interfaces from > /home/sykesm/oss-code/tuscany/sca-java-M2/samples/applications/bigbank/account/src/main/resources/wsdl/AccountService.wsdl > [INFO] > ------------------------------------------------------------------------ > [ERROR] FATAL ERROR > [INFO] > ------------------------------------------------------------------------ > [INFO] org.apache.axis2.wsdl.codegen.CodeGenerationException: > org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was mapped > to the name insufficientFundsFault with namespace > http://www.bigbank.com/account > [INFO] > ------------------------------------------------------------------------ > [INFO] Trace > java.lang.IllegalArgumentException: > org.apache.axis2.wsdl.codegen.CodeGenerationException: > org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was mapped > to the name insufficientFundsFault with namespace > http://www.bigbank.com/account > at > org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:244) > at > org.apache.tuscany.tools.wsdl2java.plugin.WSDL2JavaGeneratorMojo.execute(WSDL2JavaGeneratorMojo.java:134) > at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:256) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:615) > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at > org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > Caused by: org.apache.axis2.wsdl.codegen.CodeGenerationException: > org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was mapped > to the name insufficientFundsFault with namespace > http://www.bigbank.com/account > at > org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceGenerator.generate(JavaInterfaceGenerator.java:178) > at > org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:242) > ... 19 more > Caused by: org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type > was mapped to the name insufficientFundsFault with namespace > http://www.bigbank.com/account > at > org.apache.axis2.wsdl.databinding.TypeMappingAdapter.getTypeMappingName(TypeMappingAdapter.java:73) > at > org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultParamElements(AxisServiceBasedMultiLanguageEmitter.java:1958) > at > org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultElement(AxisServiceBasedMultiLanguageEmitter.java:1867) > at > org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.generateMethodElement(AxisServiceBasedMultiLanguageEmitter.java:1618) > at > org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.loadOperations(AxisServiceBasedMultiLanguageEmitter.java:1533) > at > org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.createDOMDocumentForInterface(AxisServiceBasedMultiLanguageEmitter.java:740) > at > org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceEmitter.writeInterface(JavaInterfaceEmitter.java:196) > at > org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceGenerator.generate(JavaInterfaceGenerator.java:174) > ... 20 more > The updated WSDL: > <?xml version="1.0" encoding="UTF-8"?> > <!-- > * Licensed to the Apache Software Foundation (ASF) under one > * or more contributor license agreements. See the NOTICE file > * distributed with this work for additional information > * regarding copyright ownership. The ASF licenses this file > * to you under the Apache License, Version 2.0 (the > * "License"); you may not use this file except in compliance > * with the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, > * software distributed under the License is distributed on an > * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > * KIND, either express or implied. See the License for the > * specific language governing permissions and limitations > * under the License. > --> > <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:account="http://www.bigbank.com/account" > targetNamespace="http://www.bigbank.com/account" > name="AccountService"> > <wsdl:types> > <xsd:schema targetNamespace="http://www.bigbank.com/account" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:account="http://www.bigbank.com/account" > > > <!-- xmlns:sdojava="commonj.sdo/java" > sdojava:package="org.apache.tuscany.samples.bigbank.account" --> > > > <!-- <xsd:complexType name="DataGraphRoot"> > <xsd:sequence> > <xsd:element name="customerProfileData" > type="account:CustomerProfileData" maxOccurs="unbounded" minOccurs="0" /> > <xsd:element name="StockSummaries" type="account:StockSummary" > maxOccurs="unbounded" minOccurs="0" /> > <xsd:element name="AccountSummaries" > type="account:AccountSummary" maxOccurs="unbounded" minOccurs="0" /> > <xsd:element name="StockLogEntries" type="account:StockLogEntry" > maxOccurs="unbounded" minOccurs="0" /> > <xsd:element name="AccountLogEntries" > type="account:AccountLogEntry" maxOccurs="unbounded" minOccurs="0" /> > </xsd:sequence> > </xsd:complexType>--> > > <xsd:element name="getAccountReport"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="customerID" > type="xsd:int" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="getAccountReportResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="accountReport" > > type="account:AccountReport" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:complexType name="AccountReport"> > <xsd:sequence> > <xsd:element name="accountSummaries" > type="account:AccountSummary" > maxOccurs="unbounded" /> > <xsd:element name="stockSummaries" > type="account:StockSummary" > maxOccurs="unbounded" /> > > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="AccountSummary"> > <xsd:attribute name="accountNumber" > type="xsd:string" /> > <xsd:attribute name="accountType" > type="xsd:string" /> > <xsd:attribute name="balance" type="xsd:float" > /> > </xsd:complexType> > <xsd:complexType name="StockSummary"> > <!-- xsd:attribute name="id" type="xsd:int" / --> > <xsd:attribute name="purchaseLotNumber" > type="xsd:int" /> > <!-- unique id for this purchase --> > <xsd:attribute name="symbol" type="xsd:string" > /> > <xsd:attribute name="quantity" type="xsd:int" /> > <xsd:attribute name="purchaseDate" > type="xsd:dateTime" /> > <xsd:attribute name="purchasePrice" > type="xsd:float" /> > <xsd:attribute name="currentPrice" > type="xsd:float" /> > <xsd:attribute name="company" type="xsd:string" > /> > <xsd:attribute name="highPrice" > type="xsd:float" /> > <xsd:attribute name="lowPrice" type="xsd:float" > /> > > </xsd:complexType> > <!-- Profile in data base --> > <xsd:element name="getCustomerProfile"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="loginID" > type="xsd:string" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:complexType name="CustomerProfileData"> > <xsd:sequence> > <xsd:element name="firstName" > type="xsd:string" /> > <xsd:element name="lastName" > type="xsd:string" /> > <xsd:element name="address" > type="xsd:string" /> > <xsd:element name="email" > type="xsd:string" /> > <xsd:element name="loginID" > type="xsd:string" /> > <xsd:element name="password" > type="xsd:string" /> > <xsd:element name="id" type="xsd:int" /> > </xsd:sequence> > </xsd:complexType> > <xsd:element name="getCustomerProfileResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="customerProfile" > > type="account:CustomerProfileData" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="withdraw"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="accountNumber" > type="xsd:string" /> > <xsd:element name="amount" > type="xsd:float" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="withdrawResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="balance" > type="xsd:float" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <!-- @start added fault --> > <xsd:element name="insufficientFundsFault"> > <xsd:complexType name="insufficientFundsFault"> > <xsd:sequence> > <xsd:element name="message" > type="xsd:string"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <!-- @end added fault --> > <xsd:element name="deposit"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="accountNumber" > type="xsd:string" /> > <xsd:element name="amount" > type="xsd:float" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="depositResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="balance" > type="xsd:float" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="purchaseStock"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="id" > type="xsd:int" /> > <xsd:element name="stock" > type="account:StockSummary" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="purchaseStockResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="purchaseSummary" > > type="account:StockSummary" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="sellStock"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="purchaseLotNumber" > type="xsd:int" /><!-- > unique id for this purchase --> > <xsd:element name="quantity" > type="xsd:int" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="createAccount"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="customerProfile" > > type="account:CustomerProfileData" /> > <xsd:element name="createSavings" > type="xsd:boolean" /> > <xsd:element name="createCheckings" > type="xsd:boolean" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="createAccountResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element > name="customerProfile" > > type="account:CustomerProfileData" /> > </xsd:sequence> > </xsd:complexType> > > </xsd:element> > <xsd:element name="getAccountLog"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="customerID" > type="xsd:int" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="getAccountLogResponse"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="accountLog" > > type="account:AccountLog" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:complexType name="AccountLog"> > <xsd:sequence> > <xsd:element name="accountLogEntries" > type="account:AccountLogEntry" > maxOccurs="unbounded" /> > <xsd:element name="stockLogEntries" > type="account:StockLogEntry" > maxOccurs="unbounded" /> > > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="AccountLogEntry"> > <xsd:attribute name="logSeqNo" type="xsd:int" /> > <xsd:attribute name="id" type="xsd:int" /> > <xsd:attribute name="accountNumber" > type="xsd:string" /> > <xsd:attribute name="actionType" > type="xsd:string" /> > <xsd:attribute name="amount" type="xsd:float" /> > </xsd:complexType> > <xsd:complexType name="StockLogEntry"> > <xsd:attribute name="logSeqNo" type="xsd:int" /> > <xsd:attribute name="id" type="xsd:int" /> > <xsd:attribute name="symbol" type="xsd:string" > /> > <xsd:attribute name="quantity" type="xsd:int" /> > <xsd:attribute name="actionType" > type="xsd:string" /> > <xsd:attribute name="purchaseLotNumber" > type="xsd:int" /> > </xsd:complexType> > </xsd:schema> > </wsdl:types> > <wsdl:message name="getAccountReportRequest"> > <wsdl:part element="account:getAccountReport" > name="getAccountReportRequest" /> > </wsdl:message> > <wsdl:message name="getAccountReportResponse"> > <wsdl:part element="account:getAccountReportResponse" > name="getAccountReportResponse" /> > </wsdl:message> > <wsdl:message name="getCustomerProfileRequest"> > <wsdl:part element="account:getCustomerProfile" > name="getCustomerProfile" /> > </wsdl:message> > <wsdl:message name="getCustomerProfileResponse"> > <wsdl:part element="account:getCustomerProfileResponse" > name="getCustomerProfileResponse" /> > </wsdl:message> > <wsdl:message name="withdrawRequest"> > <wsdl:part element="account:withdraw" name="withdrawRequest" /> > </wsdl:message> > <wsdl:message name="withdrawResponse"> > <wsdl:part element="account:withdrawResponse" > name="withdrawResponse" /> > </wsdl:message> > <!-- @start added fault --> > <wsdl:message name="insufficientFundsFault"> > <wsdl:part element="account:insufficientFundsFault" > name="insufficientFundsFault" /> > </wsdl:message> > <!-- @end added fault --> > <wsdl:message name="depositRequest"> > <wsdl:part element="account:deposit" name="depositRequest" /> > </wsdl:message> > <wsdl:message name="depositResponse"> > <wsdl:part element="account:depositResponse" > name="depositResponse" /> > </wsdl:message> > <wsdl:message name="purchaseStockRequest"> > <wsdl:part element="account:purchaseStock" > name="purchaseStockRequest" /> > </wsdl:message> > <wsdl:message name="purchaseStockResponse"> > <wsdl:part element="account:purchaseStockResponse" > name="purchaseStockResponse" /> > </wsdl:message> > <wsdl:message name="sellStockRequest"> > <wsdl:part element="account:sellStock" name="sellStockRequest" > /> > </wsdl:message> > > <wsdl:message name="createAccountRequest"> > <wsdl:part element="account:createAccount" > name="createAccountRequest" /> > </wsdl:message> > <wsdl:message name="createAccountResponse"> > <wsdl:part element="account:createAccountResponse" > name="createAccountResponse" /> > </wsdl:message> > <wsdl:message name="getAccountLogRequest"> > <wsdl:part element="account:getAccountLog" > name="getAccountLogRequest" /> > </wsdl:message> > > <wsdl:message name="getAccountLogResponse"> > <wsdl:part element="account:getAccountLogResponse" > name="getAccountLogResponse" /> > </wsdl:message> > <wsdl:portType name="AccountService"> > <wsdl:operation name="getAccountReport"> > <wsdl:input message="account:getAccountReportRequest" /> > <wsdl:output message="account:getAccountReportResponse" > /> > </wsdl:operation> > <wsdl:operation name="getCustomerProfile"> > <wsdl:input message="account:getCustomerProfileRequest" > /> > <wsdl:output > message="account:getCustomerProfileResponse" /> > </wsdl:operation> > <wsdl:operation name="withdraw"> > <wsdl:input message="account:withdrawRequest" /> > <wsdl:output message="account:withdrawResponse" /> > <!-- @start added fault --> > <wsdl:fault message="account:insufficientFundsFault" > name="insufficientFundsFault"/> > <!-- @end added fault --> > </wsdl:operation> > <wsdl:operation name="deposit"> > <wsdl:input message="account:depositRequest" /> > <wsdl:output message="account:depositResponse" /> > </wsdl:operation> > <wsdl:operation name="purchaseStock"> > <wsdl:input message="account:purchaseStockRequest" /> > <wsdl:output message="account:purchaseStockResponse" /> > </wsdl:operation> > <wsdl:operation name="sellStock"> > <wsdl:input message="account:sellStockRequest" /> > <wsdl:output message="account:purchaseStockResponse" /> > </wsdl:operation> > <wsdl:operation name="createAccount"> > <wsdl:input message="account:createAccountRequest" /> > <wsdl:output message="account:createAccountResponse" /> > </wsdl:operation> > <wsdl:operation name="getAccountLog"> > <wsdl:input message="account:getAccountLogRequest" /> > <wsdl:output message="account:getAccountLogResponse" /> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="AccountServiceSOAP" type="account:AccountService"> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http" /> > <wsdl:operation name="getAccountReport"> > <soap:operation > > soapAction="http://www.bigbank.com/account/getAccountReport" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="getCustomerProfile"> > <soap:operation > > soapAction="http://www.bigbank.com/account/getCustomerProfile" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="withdraw"> > <soap:operation > > soapAction="http://www.bigbank.com/account/withdraw" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > <!-- @start added fault --> > <wsdl:fault name="insufficientFundsFault"> > <soap:fault name="insufficientFundsFault" > use="literal"/> > </wsdl:fault> > <!-- @end added fault --> > </wsdl:operation> > <wsdl:operation name="deposit"> > <soap:operation > > soapAction="http://www.bigbank.com/account/deposit" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="purchaseStock"> > <soap:operation > > soapAction="http://www.bigbank.com/account/purchaseStock" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="sellStock"> > <soap:operation > > soapAction="http://www.bigbank.com/account/sellStock" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="createAccount"> > <soap:operation > > soapAction="http://www.bigbank.com/account/createAccount" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="getAccountLog"> > <soap:operation > > soapAction="http://www.bigbank.com/account/getAccountLog" /> > <wsdl:input> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="AccountService"> > <wsdl:port binding="account:AccountServiceSOAP" > name="AccountServiceSOAP"> > <soap:address > > location="http://localhost:8080/sample-bigbank-account/services/AccountService" > /> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]