Islands in the byte stream

Technical notes by a software engineer

Orma v0.22.0でKotlinに対応した

環境: Kotlin 1.0.0-beta-4584, Orma v0.22.0, JDK 1.8.0_66

Kotlin*1自体はJava Annotation Processingにも対応しているので、JavaからKotlinのコードを呼べるようにするだけでよかった。

Ormaは生成したコードからモデルであるクラスを参照するので、JavaからKotlinを特別に工夫することなく呼び出せるようにする必要がある。

具体的には、KotlinのプロパティはJavaからみるとプライベートフィールドとgetter / setterメソッドの組み合わせになるので、Ormaの @Column フィールドを定義したときに常に対応するgetter / setterがあるかどうかを検索して、それらしきものがあればそれを使う、というようにすればよい。これはv0.22.0より前は該当のメソッドに @Getter@Setter で注釈する必要があった。

Guess getters and setters by gfx · Pull Request #106 · gfx/Android-Orma · GitHub

この修正だけでKotlinから使うことができた。

[WIP] add Kotlin example by gfx · Pull Request #107 · gfx/Android-Orma · GitHub

ただし、kapt自体はまだ不安定で、ビルドは通ったり通らなかったりするし、 kapt project(':processor') も動かない。サンプルをマージするのはまだ先のことになるだろう。

*1:JetBrains社の開発するJVM言語で、最近Javaの代替として注目されつつある。