eed3si9n / scalaxb

scalaxb is an XML data binding tool for Scala.

Home Page:http://scalaxb.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid code generation for rpc style SoapBindings

bofur opened this issue · comments

commented

There is some wsdl snippet for example:

 <wsdl:message name="ProcessTransactionResponse">

      <wsdl:part name="ResponseData" type="impl:ResponseDataType"/>

   </wsdl:message>

Here is generated code:

  trait SoapBindings { this: scalaxb.Soap11ClientsAsync =>
    lazy val targetNamespace: Option[String] = Some("http://example.com")
    lazy val service: com.exmple.Port = new SoapBinding {}
    def baseAddress = new java.net.URI("http://example.com")

    trait SoapBinding extends Port {
      import scalaxb.ElemName._
      def processTransaction(requestData: com.example.RequestDataType)(implicit ec: ExecutionContext): Future[ com.example.ResponseDataType] = 
        soapClient.requestResponse(scala.xml.Elem(targetNamespace map {defaultScope.getPrefix(_)} getOrElse {""}, "ProcessTransaction", scala.xml.Null, defaultScope, true,
          scalaxb.toXML(requestData, Some("http://examl.co"), "equestData", defaultScope): _*),
            Nil, defaultScope, baseAddress, "POST", Some(new java.net.URI("urn:%23ProcessTransaction"))).transform({ case (header, body) => 
            scalaxb.fromXML[com.example.ResponseDataType]((body.head \ "responseData").head, Nil) }, {
              case x => x
            })
    }
  }

We have ResponseData in scheme, but responseData in generated code. So, (body.head \ "responseData") return empty NodeSeq

Camel case conversation have been added in this request.