javapoet_ext.kt revision abd098954d3fe996f336201ccb25884aaa34e07f
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")
3664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val SQLITE_STMT : ClassName =
3764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteStatement")
38d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar    val SQLITE_OPEN_HELPER : ClassName =
3964db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper")
40d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar    val SQLITE_OPEN_HELPER_CALLBACK : ClassName =
4164db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Callback")
42d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar    val SQLITE_OPEN_HELPER_FACTORY : ClassName =
4364db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Factory")
44d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar    val SQLITE_OPEN_HELPER_CONFIG : ClassName =
4564db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Configuration")
46d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar    val SQLITE_OPEN_HELPER_CONFIG_BUILDER : ClassName =
4764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.db",
4864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar                    "SupportSQLiteOpenHelper.Configuration.Builder")
49efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar}
50efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar
51250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyarobject RoomTypeNames {
5264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val STRING_UTIL: ClassName = ClassName.get("android.arch.persistence.room.util", "StringUtil")
5364db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val CURSOR_CONVERTER : ClassName =
5464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "CursorConverter")
5564db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val ROOM : ClassName = ClassName.get("android.arch.persistence.room", "Room")
5664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val ROOM_DB : ClassName = ClassName.get("android.arch.persistence.room", "RoomDatabase")
5764db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val ROOM_DB_CONFIG : ClassName = ClassName.get("android.arch.persistence.room",
58d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar            "DatabaseConfiguration")
594f0db7db556b473393dfc31bba5ea67def574877Yigit Boyar    val INSERTION_ADAPTER : ClassName =
6064db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "EntityInsertionAdapter")
61958df7dd95c2cecf93cacef6998a4d7e8d39b7efYigit Boyar    val DELETE_OR_UPDATE_ADAPTER : ClassName =
6264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "EntityDeletionOrUpdateAdapter")
633db6d309415576ef0080c29705dc30496636a986Yigit Boyar    val SHARED_SQLITE_STMT : ClassName =
6464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "SharedSQLiteStatement")
6534e5031083f735db3a395b0f6aa430880b072d71Yigit Boyar    val INVALIDATION_TRACKER : ClassName =
6664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "InvalidationTracker")
67846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar    val INVALIDATION_OBSERVER : ClassName =
6864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.InvalidationTracker", "Observer")
69b030dcb5b7a62854c0bfe85bf04eaf60caeb83bbYigit Boyar    val ROOM_SQL_QUERY : ClassName =
7064db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomSQLiteQuery")
71a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    val OPEN_HELPER : ClassName =
7264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomOpenHelper")
73a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    val OPEN_HELPER_DELEGATE: ClassName =
7464db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room", "RoomOpenHelper.Delegate")
753a433f7ddbffa6131883cc3b23fc80edf54add19Yigit Boyar    val TABLE_INFO : ClassName =
7664db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo")
773a433f7ddbffa6131883cc3b23fc80edf54add19Yigit Boyar    val TABLE_INFO_COLUMN : ClassName =
7864db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo.Column")
79ebdeee2c668f632384a7c9b3a098f0cccf88e7cdYigit Boyar    val TABLE_INFO_FOREIGN_KEY : ClassName =
8064db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar            ClassName.get("android.arch.persistence.room.util", "TableInfo.ForeignKey")
819fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik    val LIMIT_OFFSET_DATA_SOURCE : ClassName =
829fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik            ClassName.get("android.arch.persistence.room.paging", "LimitOffsetDataSource")
839fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik}
849fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik
859fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craikobject ArchTypeNames {
869fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik    val APP_EXECUTOR : ClassName =
879fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik            ClassName.get("android.arch.core.executor", "AppToolkitTaskExecutor")
889fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik}
899fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik
909fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craikobject PagingTypeNames {
91abd098954d3fe996f336201ccb25884aaa34e07fYigit Boyar    val DATA_SOURCE: ClassName =
92ef346ae131affbba6345e00d833103acc5743c8aChris Craik            ClassName.get("android.arch.paging", "DataSource")
93abd098954d3fe996f336201ccb25884aaa34e07fYigit Boyar    val TILED_DATA_SOURCE: ClassName =
94abd098954d3fe996f336201ccb25884aaa34e07fYigit Boyar            ClassName.get("android.arch.paging", "TiledDataSource")
9524418e9aafa6ae3128ae47cf7087eda46dae4f5dChris Craik    val LIVE_PAGED_LIST_PROVIDER: ClassName =
96ef346ae131affbba6345e00d833103acc5743c8aChris Craik            ClassName.get("android.arch.paging", "LivePagedListProvider")
979fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik
98846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar}
99846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar
100846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyarobject LifecyclesTypeNames {
10164db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val LIVE_DATA: ClassName = ClassName.get("android.arch.lifecycle", "LiveData")
10264db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val COMPUTABLE_LIVE_DATA : ClassName = ClassName.get("android.arch.lifecycle",
103846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar            "ComputableLiveData")
104efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar}
105efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar
106efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarobject AndroidTypeNames {
107efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar    val CURSOR : ClassName = ClassName.get("android.database", "Cursor")
108092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar    val ARRAY_MAP : ClassName = ClassName.get("android.support.v4.util", "ArrayMap")
109092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar}
110092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar
111092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyarobject CommonTypeNames {
112092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar    val LIST = ClassName.get("java.util", "List")
113092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar    val SET = ClassName.get("java.util", "Set")
1143a433f7ddbffa6131883cc3b23fc80edf54add19Yigit Boyar    val STRING = ClassName.get("java.lang", "String")
1159fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik    val INTEGER = ClassName.get("java.lang", "Integer")
116250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyar}
1173c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
1183c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RxJava2TypeNames {
1193c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar    val FLOWABLE = ClassName.get("io.reactivex", "Flowable")
1200cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val MAYBE = ClassName.get("io.reactivex", "Maybe")
1210cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val SINGLE = ClassName.get("io.reactivex", "Single")
1223c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
1233c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
1243c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject ReactiveStreamsTypeNames {
1253c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar    val PUBLISHER = ClassName.get("org.reactivestreams", "Publisher")
1263c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
1273c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar
1283c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RoomRxJava2TypeNames {
12964db0cc15b78b62a1d44a70fc8b4552e660d952cYigit Boyar    val RX_ROOM = ClassName.get("android.arch.persistence.room", "RxRoom")
1300cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar    val RX_EMPTY_RESULT_SET_EXCEPTION = ClassName.get("android.arch.persistence.room",
1310cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar            "EmptyResultSetException")
1323c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar}
133f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar
134f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyarfun TypeName.defaultValue() : String {
135f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    return if (!isPrimitive) {
136f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "null"
137f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    } else if (this == TypeName.BOOLEAN) {
138f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "false"
139f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    } else {
140f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar        "0"
141f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar    }
142f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar}
143