Skip to content

Commit 0b04e97

Browse files
authored
Merge pull request #196 from domaframework/kotlin-1.1.2
Kotlin 1.1.2 を実験的にサポート
2 parents 26ab6d9 + 100f170 commit 0b04e97

File tree

14 files changed

+220
-29
lines changed

14 files changed

+220
-29
lines changed

docs/sources/annotation-processing.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ doma.expr.functions
5555
``org.seasar.doma.expr.ExpressionFunctions`` のサブタイプでなければいけない。
5656
デフォルトの値は、 ``org.seasar.doma.expr.ExpressionFunctions`` 。
5757

58+
doma.resources.dir
59+
SQLファイルなどリソースファイルの出力先ディレクトリ。
60+
絶対パスで指定する。
61+
指定しない場合はクラスファイルの出力先ディレクトリが使われる。
62+
5863
doma.sql.validation
5964
SQLファイルの存在チェックとSQLコメントの文法チェックを行う場合は ``true`` 。
6065
行わない場合は ``false`` 。
@@ -95,7 +100,7 @@ Gradle
95100
compileJava.options.compilerArgs = ['-Adoma.dao.subpackage=impl', '-Adoma.dao.suffix=Impl']
96101
97102
設定ファイル
98-
==========
103+
==================
99104

100105
デフォルトでは ``main/resources/doma.compile.config`` ファイルにオプションを記述しておくことで、
101106
ビルドツールごとのオプションの設定を利用する必要がなくなります。

docs/sources/kotlin-support.rst

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Kotlin サポート
55
.. contents:: 目次
66
:depth: 3
77

8-
Doma は `Kotlin <https://kotlinlang.org/>`_ 1.0.6を実験的にサポートしています
8+
Doma は `Kotlin <https://kotlinlang.org/>`_ 1.1.2を実験的にサポートしています
99

1010
Kotlin利用のベストプラクティス
1111
================================
@@ -60,16 +60,17 @@ Kotlin利用のベストプラクティス
6060
Daoインタフェース
6161
-------------------
6262
63+
* KotlinではなくJavaで定義する
6364
* 更新処理の戻り値の型は `org.seasar.doma.jdbc.Result` や `org.seasar.doma.jdbc.BatchResult` を使う
6465
6566
.. code-block:: java
6667
67-
@Dao(config = AppConfig::class)
68-
interface PersonDao {
68+
@Dao(config = AppConfig.class)
69+
public interface PersonDao {
6970
@Select
70-
fun selectById(id: Int): Person
71+
Person selectById(Integer id);
7172
@Insert
72-
fun insert(person: Person): Result<Person>
73+
Result<Person> insert(Person person);
7374
}
7475
7576
* 更新処理の戻り値を扱う際は `Destructuring Declarations <https://kotlinlang.org/docs/reference/multi-declarations.html>`_ を使う
@@ -94,10 +95,25 @@ Gradleでビルドする際は、確実な注釈処理が行われるように
9495
9596
Eclispeを利用する場合設定を適切に行えばJavaの注釈処理は自動で行われますが、kapt(Kotlinの注釈処理)はGradleを実行しない限り行われないことに注意してください。
9697

98+
下記はbuild.gradleの抜粋です。コンパイル時にSQLファイルを参照するために下記の設定に特に注意してください。
99+
100+
.. code-block:: groovy
101+
102+
// コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する
103+
compileJava.dependsOn processResources
104+
105+
// SQLファイルなどリソースファイルの出力先ディレクトリをkaptに伝える
106+
kapt {
107+
arguments {
108+
arg("doma.resources.dir", processResources.destinationDir)
109+
}
110+
}
111+
112+
97113
JavaとKotlinの混在
98114
-------------------------
99115

100-
kaptの不確実な挙動を避けるため、Domaに関するコードの全てもしくは一部をJavaで書くことは検討に値します
116+
kaptの不確実な挙動を避けるため、Domaに関するコードの全てをJavaで書くことは検討に値します
101117
Domaの利用において、JavaとKotlinの混在は問題ありません。
102118

103119
サンプルプロジェクト

src/main/java/org/seasar/doma/internal/apt/DaoProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
@SupportedAnnotationTypes({ "org.seasar.doma.Dao" })
5454
@SupportedOptions({ Options.TEST, Options.DEBUG, Options.DAO_PACKAGE,
5555
Options.DAO_SUBPACKAGE, Options.DAO_SUFFIX, Options.EXPR_FUNCTIONS,
56-
Options.SQL_VALIDATION, Options.VERSION_VALIDATION })
56+
Options.SQL_VALIDATION, Options.VERSION_VALIDATION,
57+
Options.RESOURCES_DIR })
5758
public class DaoProcessor extends AbstractGeneratingProcessor<DaoMeta> {
5859

5960
public DaoProcessor() {

src/main/java/org/seasar/doma/internal/apt/DomainConvertersProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* @since 1.25.0
3636
*/
3737
@SupportedAnnotationTypes({ "org.seasar.doma.DomainConverters" })
38-
@SupportedOptions({ Options.TEST, Options.DEBUG })
38+
@SupportedOptions({ Options.RESOURCES_DIR, Options.TEST, Options.DEBUG })
3939
public class DomainConvertersProcessor extends AbstractProcessor {
4040

4141
public DomainConvertersProcessor() {

src/main/java/org/seasar/doma/internal/apt/DomainProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
*
3333
*/
3434
@SupportedAnnotationTypes({ "org.seasar.doma.Domain" })
35-
@SupportedOptions({ Options.VERSION_VALIDATION, Options.LOMBOK_VALUE,
35+
@SupportedOptions({ Options.VERSION_VALIDATION, Options.RESOURCES_DIR,
36+
Options.LOMBOK_VALUE,
3637
Options.TEST, Options.DEBUG })
3738
public class DomainProcessor extends AbstractGeneratingProcessor<DomainMeta> {
3839

src/main/java/org/seasar/doma/internal/apt/EmbeddableProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
*
3434
*/
3535
@SupportedAnnotationTypes({ "org.seasar.doma.Embeddable" })
36-
@SupportedOptions({ Options.VERSION_VALIDATION, Options.LOMBOK_VALUE,
36+
@SupportedOptions({ Options.VERSION_VALIDATION, Options.RESOURCES_DIR,
37+
Options.LOMBOK_VALUE,
3738
Options.LOMBOK_ALL_ARGS_CONSTRUCTOR, Options.TEST, Options.DEBUG })
3839
public class EmbeddableProcessor extends
3940
AbstractGeneratingProcessor<EmbeddableMeta> {

src/main/java/org/seasar/doma/internal/apt/EntityProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
*/
3535
@SupportedAnnotationTypes({ "org.seasar.doma.Entity" })
3636
@SupportedOptions({ Options.ENTITY_FIELD_PREFIX, Options.DOMAIN_CONVERTERS,
37-
Options.VERSION_VALIDATION, Options.LOMBOK_VALUE,
37+
Options.VERSION_VALIDATION, Options.RESOURCES_DIR, Options.LOMBOK_VALUE,
3838
Options.LOMBOK_ALL_ARGS_CONSTRUCTOR, Options.TEST, Options.DEBUG })
3939
public class EntityProcessor extends AbstractGeneratingProcessor<EntityMeta> {
4040

src/main/java/org/seasar/doma/internal/apt/ExternalDomainProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
*
3333
*/
3434
@SupportedAnnotationTypes({ "org.seasar.doma.ExternalDomain" })
35-
@SupportedOptions({ Options.VERSION_VALIDATION, Options.TEST, Options.DEBUG })
35+
@SupportedOptions({ Options.VERSION_VALIDATION, Options.RESOURCES_DIR,
36+
Options.TEST, Options.DEBUG })
3637
public class ExternalDomainProcessor extends
3738
AbstractGeneratingProcessor<ExternalDomainMeta> {
3839

src/main/java/org/seasar/doma/internal/apt/Options.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@
2525
import java.util.Properties;
2626
import java.util.concurrent.ConcurrentHashMap;
2727

28-
import javax.annotation.processing.Filer;
2928
import javax.annotation.processing.ProcessingEnvironment;
3029
import javax.tools.FileObject;
31-
import javax.tools.StandardLocation;
3230

3331
import org.seasar.doma.internal.Artifact;
32+
import org.seasar.doma.internal.apt.util.ResourceUtil;
3433

3534
/**
3635
* @author taedium
@@ -60,6 +59,8 @@ public final class Options {
6059

6160
public static final String CONFIG_PATH = "doma.config.path";
6261

62+
public static final String RESOURCES_DIR = "doma.resources.dir";
63+
6364
public static final String LOMBOK_ALL_ARGS_CONSTRUCTOR = "doma.lombok.AllArgsConstructor";
6465

6566
public static final String LOMBOK_VALUE = "doma.lombok.Value";
@@ -157,7 +158,7 @@ private static String getOption(ProcessingEnvironment env, String key) {
157158

158159
private static Map<String, Map<String, String>> configCache = new ConcurrentHashMap<>();
159160
private static Map<String, String> getConfig(ProcessingEnvironment env) {
160-
FileObject config = getFileObject(env, "", getConfigPath(env));
161+
FileObject config = getFileObject(env, getConfigPath(env));
161162
if (config == null) {
162163
return Collections.emptyMap();
163164
}
@@ -170,11 +171,10 @@ private static Map<String, String> getConfig(ProcessingEnvironment env) {
170171
});
171172
}
172173

173-
private static FileObject getFileObject(ProcessingEnvironment env, String pkg, String relativeName) {
174-
Filer filer = env.getFiler();
175-
174+
private static FileObject getFileObject(ProcessingEnvironment env,
175+
String path) {
176176
try {
177-
return filer.getResource(StandardLocation.CLASS_OUTPUT, pkg, relativeName);
177+
return ResourceUtil.getResource(path, env);
178178
} catch (IOException e) {
179179
return null;
180180
}

src/main/java/org/seasar/doma/internal/apt/SingletonConfigProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
*
3939
*/
4040
@SupportedAnnotationTypes({ "org.seasar.doma.SingletonConfig" })
41-
@SupportedOptions({ Options.TEST, Options.DEBUG })
41+
@SupportedOptions({ Options.RESOURCES_DIR, Options.TEST, Options.DEBUG })
4242
public class SingletonConfigProcessor extends AbstractProcessor {
4343

4444
public SingletonConfigProcessor() {

0 commit comments

Comments
 (0)