Fixed
Status Update
Comments
yb...@google.com <yb...@google.com>
st...@gmail.com <st...@gmail.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
https://android-review.googlesource.com/1123258
https://goto.google.com/android-sha1/b90079595f33f58fece04026a97faa0d243acdb1
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
Description
Version used: 2.0.0
Devices/Android versions reproduced on: Compile time error
@Dao
@TypeConverters(ControllerTypeConverters::class)
interface JobDao {
...
@Query("SELECT * FROM Job WHERE service IN (:services)")
fun getActiveJobs(services: List<Service>): LiveData<List<Job>>
}
object ControllerTypeConverters {
...
@TypeConverter
@JvmStatic
fun stringToOrderStatus(data: String?): Service? {
return if (data != null) Service.valueOf(data) else null
}
@TypeConverter
@JvmStatic
fun orderStatusToString(service: Service?): String? {
return service?.name
}
}
Fails when trying to run unit tests with
D:\...\JobDao.java:17: error: Query method parameters should either be a type that can be converted into a database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
java.util.List<? extends com.magentatechnology.emiratescontroller.model.Service> services);
If I replace the list with a single object, if works fine:
@Query("SELECT * FROM Job WHERE service = (:services)")
fun getActiveJobs(services: Service): LiveData<List<Job>>