javapoet_ext.kt revision 3f426b1704c8037737ff3657d295ab23d978e9e2
12259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar/*
22259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Copyright (C) 2016 The Android Open Source Project
32259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar *
42259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
52259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * you may not use this file except in compliance with the License.
62259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * You may obtain a copy of the License at
72259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar *
82259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
92259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar *
102259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Unless required by applicable law or agreed to in writing, software
112259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
122259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * See the License for the specific language governing permissions and
142259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * limitations under the License.
152259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar */
162259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar
1764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyarpackage android.arch.persistence.room.ext
182259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar
198e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.ArrayTypeName
208e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.ClassName
218e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.TypeName
228e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport javax.lang.model.type.TypeMirror
238e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport kotlin.reflect.KClass
248e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyar
252259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyarval L = "\$L"
262259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyarval T = "\$T"
278e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarval N = "\$N"
288e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarval S = "\$S"
298e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyar
308e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarfun KClass<*>.typeName() = ClassName.get(this.java)
318e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarfun KClass<*>.arrayTypeName() = ArrayTypeName.of(typeName())
32250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyarfun TypeMirror.typeName() = TypeName.get(this)
33250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyar
34efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarobject SupportDbTypeNames {
3564db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val DB: ClassName = ClassName.get("android.arch.persistence.db", "SupportSQLiteDatabase")
366f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_STMT: ClassName =
3764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteStatement")
386f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_OPEN_HELPER: ClassName =
3964db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper")
406f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_OPEN_HELPER_CALLBACK: ClassName =
4164db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Callback")
426f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_OPEN_HELPER_FACTORY: ClassName =
4364db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Factory")
446f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_OPEN_HELPER_CONFIG: ClassName =
4564db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Configuration")
466f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SQLITE_OPEN_HELPER_CONFIG_BUILDER: ClassName =
4764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db",
4864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar                    "SupportSQLiteOpenHelper.Configuration.Builder")
49de23b91b2c982ef5c93349b16415654ae3fe5ac9Yigit Boyar    val QUERY: ClassName =
50de23b91b2c982ef5c93349b16415654ae3fe5ac9Yigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteQuery")
51efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar}
52efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar
53250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyarobject RoomTypeNames {
5464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val STRING_UTIL: ClassName = ClassName.get("android.arch.persistence.room.util", "StringUtil")
556f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val CURSOR_CONVERTER: ClassName =
5664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "CursorConverter")
576f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val ROOM: ClassName = ClassName.get("android.arch.persistence.room", "Room")
586f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val ROOM_DB: ClassName = ClassName.get("android.arch.persistence.room", "RoomDatabase")
596f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val ROOM_DB_CONFIG: ClassName = ClassName.get("android.arch.persistence.room",
60d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar            "DatabaseConfiguration")
616f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val INSERTION_ADAPTER: ClassName =
6264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "EntityInsertionAdapter")
636f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val DELETE_OR_UPDATE_ADAPTER: ClassName =
6464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "EntityDeletionOrUpdateAdapter")
656f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val SHARED_SQLITE_STMT: ClassName =
6664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "SharedSQLiteStatement")
676f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val INVALIDATION_TRACKER: ClassName =
6864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "InvalidationTracker")
696f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val INVALIDATION_OBSERVER: ClassName =
7064db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.InvalidationTracker", "Observer")
716f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val ROOM_SQL_QUERY: ClassName =
7264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomSQLiteQuery")
736f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val OPEN_HELPER: ClassName =
7464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomOpenHelper")
75a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    val OPEN_HELPER_DELEGATE: ClassName =
7664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomOpenHelper.Delegate")
776f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val TABLE_INFO: ClassName =
7864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo")
796f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val TABLE_INFO_COLUMN: ClassName =
8064db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo.Column")
816f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val TABLE_INFO_FOREIGN_KEY: ClassName =
8264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo.ForeignKey")
836f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val TABLE_INFO_INDEX: ClassName =
842db0875dfb15f3d909e7721bd97e3544d0fe9ae1Yigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo.Index")
856f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val LIMIT_OFFSET_DATA_SOURCE: ClassName =
869fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik            ClassName.get("android.arch.persistence.room.paging", "LimitOffsetDataSource")
879fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik}
889fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik
899fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craikobject ArchTypeNames {
906f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val APP_EXECUTOR: ClassName =
91ae36c8b11a64d3cdc9ba6e37d9f3d1d250fdc4a8Yigit Boyar            ClassName.get("android.arch.core.executor", "ArchTaskExecutor")
929fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik}
939fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik
949fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craikobject PagingTypeNames {
95abd098954d3fe996f336201ccb25884aaa34e07fYigit Boyar    val DATA_SOURCE: ClassName =
96ef346ae131affbba6345e00d833103acc5743c8aChris Craik            ClassName.get("android.arch.paging", "DataSource")
97dc60cacc66972b47f27acdf727332878ce5958aeChris Craik    val POSITIONAL_DATA_SOURCE: ClassName =
98dc60cacc66972b47f27acdf727332878ce5958aeChris Craik            ClassName.get("android.arch.paging", "PositionalDataSource")
99dc60cacc66972b47f27acdf727332878ce5958aeChris Craik    val DATA_SOURCE_FACTORY: ClassName =
100dc60cacc66972b47f27acdf727332878ce5958aeChris Craik            ClassName.get("android.arch.paging", "DataSource.Factory")
101846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar}
102846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar
103846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyarobject LifecyclesTypeNames {
10464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val LIVE_DATA: ClassName = ClassName.get("android.arch.lifecycle", "LiveData")
1056f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val COMPUTABLE_LIVE_DATA: ClassName = ClassName.get("android.arch.lifecycle",
106846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar            "ComputableLiveData")
107efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar}
108efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar
109efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarobject AndroidTypeNames {
1106f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val CURSOR: ClassName = ClassName.get("android.database", "Cursor")
1116f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas    val ARRAY_MAP: ClassName = ClassName.get("android.support.v4.util", "ArrayMap")
1123f426b1704c8037737ff3657d295ab23d978e9e2Yuichi Araki    val BUILD: ClassName = ClassName.get("android.os", "Build")
113092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar}
114092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar
115092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyarobject CommonTypeNames {
116092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar    val LIST = ClassName.get("java.util", "List")
117092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar    val SET = ClassName.get("java.util", "Set")
1183a433f7ddbffa6131883cc3b23fc80edf54add19Yigit Boyar    val STRING = ClassName.get("java.lang", "String")
1199fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik    val INTEGER = ClassName.get("java.lang", "Integer")
120c1fa1f4c9d1d61e344d4310928014132cb4fa4f4Tyson Henning    val OPTIONAL = ClassName.get("java.util", "Optional")
121250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyar}
1223c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
12367ff17da9546803a38f8144b7a466a116e622866Tyson Henningobject GuavaBaseTypeNames {
12467ff17da9546803a38f8144b7a466a116e622866Tyson Henning    val OPTIONAL = ClassName.get("com.google.common.base", "Optional")
12567ff17da9546803a38f8144b7a466a116e622866Tyson Henning}
12667ff17da9546803a38f8144b7a466a116e622866Tyson Henning
127f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henningobject GuavaUtilConcurrentTypeNames {
128f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning    val LISTENABLE_FUTURE = ClassName.get("com.google.common.util.concurrent", "ListenableFuture")
129f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning}
130f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning
1313c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RxJava2TypeNames {
1323c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar    val FLOWABLE = ClassName.get("io.reactivex", "Flowable")
1330cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val MAYBE = ClassName.get("io.reactivex", "Maybe")
1340cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val SINGLE = ClassName.get("io.reactivex", "Single")
1353c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
1363c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
1373c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject ReactiveStreamsTypeNames {
1383c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar    val PUBLISHER = ClassName.get("org.reactivestreams", "Publisher")
1393c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
1403c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
141f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henningobject RoomGuavaTypeNames {
142f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning    val GUAVA_ROOM = ClassName.get("android.arch.persistence.room.guava", "GuavaRoom")
143f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning}
144f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning
1453c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RoomRxJava2TypeNames {
14664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val RX_ROOM = ClassName.get("android.arch.persistence.room", "RxRoom")
1470cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val RX_EMPTY_RESULT_SET_EXCEPTION = ClassName.get("android.arch.persistence.room",
1480cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar            "EmptyResultSetException")
1493c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
150f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar
1516f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikasfun TypeName.defaultValue(): String {
152f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    return if (!isPrimitive) {
153f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "null"
154f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    } else if (this == TypeName.BOOLEAN) {
155f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "false"
156f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    } else {
157f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "0"
158f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    }
159f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar}
160