【问题标题】:Compilation error in scalaxb generated code (xmlprotocol.scala) - found: Boolean, required: Option[Boolean]scalaxb 生成代码 (xmlprotocol.scala) 中的编译错误 - 发现:布尔值,必需:Option[Boolean]
【发布时间】:2014-04-14 17:04:57
【问题描述】:

我在 xmlprotocol.scala 中遇到一个编译错误,该错误是由大型 WSDL 文件中的最新 scalaxb (1.1.2) 生成的:

[info] Compiling 10 Scala sources to /aw-scalaxb-test/target/scala-2.10/classes...
[error] /aw-scalaxb-test/target/scala-2.10/src_managed/main/sbt-scalaxb/aw/xmlprotocol.scala:630: type mismatch;
[error]  found   : Boolean
[error]  required: Option[Boolean]
[error]         p2.headOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) } getOrElse { scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) },
[error]                                                                                                                                    ^
[error] one error found
[error] (compile:compile) Compilation failed

这是一段对应的代码(错误在第一行“p2.headOption map”):

...
(scalaxb.ElemName(None, "HistoryLastDate"))) ^^ 
    { case p1 ~ p2 ~ p3 ~ p4 ~ p5 ~ p6 ~ p7 ~ p8 ~ p9 ~ p10 => aw.CheckAccountRequestSequence2(p1.nilOption map { scalaxb.fromXML[Int](_, scalaxb.ElemName(node) :: stack) },
    p2.headOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) } getOrElse { scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) },
    p3.nilOption map { scalaxb.fromXML[String](_, scalaxb.ElemName(node) :: stack) },
...

这个错误对我来说似乎很奇怪,因为代码中有几个非常相似的结构。是不是都生成错了?

谁能告诉我这里出了什么问题?

原始 WSDL 和所有代码都在我的 github 项目中:https://github.com/alboko/aw-scalaxb-test

【问题讨论】:

    标签: scala soap scalaxb


    【解决方案1】:

    经过一番调查,我认为这是处理元素中的“default=”属性时的一个错误,例如:

    <xsd:element name="ParseItineraries" type="xsd:boolean" nillable="true" default="false">
    

    scalaxb 生成类似

    的东西
    p2.headOption map { 
          scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) 
    } getOrElse { 
          scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) 
    }
    

    导致编译错误。如果我删除默认属性,它会生成

    p2.nilOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) }
    

    编译没有任何问题。

    在 GitHub 中为 scalaxb 创建了问题 #245。 @eed3si9n 怀疑这是 scalaxb 中的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 2012-06-09
      • 2017-01-30
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多