首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scalaxb生成的代码(xmlprotocol.scala)中的编译错误-找到:布尔值,必需: Option[Boolean]

scalaxb生成的代码(xmlprotocol.scala)中的编译错误-找到:布尔值,必需: Option[Boolean]
EN

Stack Overflow用户
提问于 2014-04-14 17:04:57
回答 1查看 430关注 0票数 0

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

代码语言:javascript
复制
[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.head on map”行上):

代码语言:javascript
复制
...
(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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 00:58:20

经过一些调查后,我认为这是处理元素中的"default=“属性的一个缺陷,如:

代码语言:javascript
复制
<xsd:element name="ParseItineraries" type="xsd:boolean" nillable="true" default="false">

头皮产生的东西

代码语言:javascript
复制
p2.headOption map { 
      scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) 
} getOrElse { 
      scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) 
}

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

代码语言:javascript
复制
p2.nilOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) }

编译时没有任何问题。

#245中为scalaxb创建了问题GitHub。@eed3si9n怀疑这是头皮上的一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23066038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档