scalaxb 1.5.0

互換性の無い変更点

  • 型クラスのインスタンスの名前衝突をパケージ名をプレフィックスすることで修正した。 #385 by @anatoliykmetyuk
  • 可変長引数 (varargs) をデフォルトで使わないように変更した。
  • sbt-scalaxb を auto plugin 化した。

バグフィックス

  • 複数の implicit ヘッダを用いる SOAP operation の修正。 #380 by @joshlreese
  • SOAP ヘッダの値が合成された場合の修正。 #381 by @coutoPL
  • SOAP ヘッダパーツに関連したコード生成の修正。 #400 by @jankeesvanandel
  • enum の名前の衝突の修正。 #386 by @anatoliykmetyuk
  • enum のパーシングを修正して、例えば xsd:byte 型による 00 を取り扱えるようになった。 #388 by @anatoliykmetyuk

機能改善点

  • 可変 (mutable) case class を生成するための --mutable オプションを追加した。詳細は後ほど。
  • type 属性を用いた xs:any の変換。 #389 by @anatoliykmetyuk
  • パッケージ名を自動で選択する --autopackages オプションの追加。 #391 by @anatoliykmetyuk
  • 生成された case class を走査するための Visito を生成する --visitor オプションの追加。 #392 by @anatoliykmetyuk

sbt-scalaxb への変更

scalaxb 1.5.0 より sbt-scalaxb は auto plugin 化される。
scalaxbSettings 追加して、sourceGenerators in Compile する代わりに、ScalaxbPlugin を有効化するだけでよくなった。
他の全てのセッティングやタスクは "scalaxb" とプレフィックスされる。
例えば、以前の packageName というキーは scalaxbPackageName に変更された。

Before:

import ScalaxbKeys._
lazy val root = (project in file(".")).
  settings(
    name := "foo-project").
  settings(scalaxbSettings).
  settings(
    sourceGenerators in Compile += (scalaxb in Compile).taskValue,
    packageName in (Compile, scalaxb) := "generated"
    // packageNames in (Compile, scalaxb) := Map(uri("http://something/") -> "something"),
    // logLevel in (Compile, scalaxb) := Level.Debug
  )

After:

lazy val root = (project in file(".")).
  enablePlugins(ScalaxbPlugin).
  settings(
    name := "foo-project",
    scalaxbPackageName in (Compile, scalaxb) := "generated"
    // scalaxbAutoPackages in (Compile, scalaxb) := true
  )

#405 by @eed3si9n

可変 (mutable) case class

scalaxb 1.5.0 は可変な case class を生成するオプションを追加する。

case class Address(var name: String,
  var street: String,
  var city: String)

sbt-scalaxb では以下のように有効化できる:

lazy val root = (project in file(".")).
  enablePlugins(ScalaxbPlugin).
  settings(
    name := "foo-project",
    scalaxbPackageName in (Compile, scalaxb) := "generated",
    scalaxbGenerateMutable in (Compile, scalaxb) := true
  )

#390 by @AndreVanDelft

コントリビューター

バグ報告や pull request によって scalaxb の改善にお手伝いしていただいた皆さんにこの場を借りてお礼します。

git shortlog -sn --no-merges 1.4.1..release/1.5.0 によると今回のリリースでは以下の方々にコントリビュートしてもらった (敬称略): Anatoliy Kmetyuk (@anatoliykmetyuk), Eugene Yokota (@eed3si9n), Andre Van Delft (@AndreVanDelft), Jan-Kees van Andel (@jankeesvanandel), Joshua Reese (@joshlreese), and Mateusz Kołodziejczyk (@coutoPL).