Skip to content

Commit f836f5e

Browse files
authored
Merge pull request #12746 from TeamNewPipe/kspMigration
Migrate from KAPT to KSP
2 parents 2fadaff + 4826e5b commit f836f5e

File tree

72 files changed

+1833
-2119
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1833
-2119
lines changed

app/build.gradle.kts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
plugins {
77
alias(libs.plugins.android.application)
88
alias(libs.plugins.jetbrains.kotlin.android)
9-
alias(libs.plugins.jetbrains.kotlin.kapt)
9+
alias(libs.plugins.google.ksp)
1010
alias(libs.plugins.jetbrains.kotlin.parcelize)
1111
alias(libs.plugins.sonarqube)
1212
checkstyle
@@ -40,12 +40,6 @@ android {
4040
System.getProperty("versionNameSuffix")?.let { versionNameSuffix = it }
4141

4242
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
43-
44-
javaCompileOptions {
45-
annotationProcessorOptions {
46-
arguments["room.schemaLocation"] = "$projectDir/schemas"
47-
}
48-
}
4943
}
5044

5145
buildTypes {
@@ -124,6 +118,11 @@ android {
124118
}
125119
}
126120

121+
ksp {
122+
arg("room.schemaLocation", "$projectDir/schemas")
123+
}
124+
125+
127126
// Custom dependency configuration for ktlint
128127
val ktlint by configurations.creating
129128

@@ -218,7 +217,7 @@ dependencies {
218217
implementation(libs.androidx.recyclerview)
219218
implementation(libs.androidx.room.runtime)
220219
implementation(libs.androidx.room.rxjava3)
221-
kapt(libs.androidx.room.compiler)
220+
ksp(libs.androidx.room.compiler)
222221
implementation(libs.androidx.swiperefreshlayout)
223222
implementation(libs.androidx.viewpager2)
224223
implementation(libs.androidx.work.runtime)
@@ -229,7 +228,7 @@ dependencies {
229228
/** Third-party libraries **/
230229
implementation(libs.livefront.bridge)
231230
implementation(libs.evernote.statesaver.core)
232-
kapt(libs.evernote.statesaver.compiler)
231+
ksp(libs.evernote.statesaver.compiler)
233232

234233
// HTML parser
235234
implementation(libs.jsoup)
@@ -249,7 +248,7 @@ dependencies {
249248

250249
// Metadata generator for service descriptors
251250
compileOnly(libs.google.autoservice.annotations)
252-
kapt(libs.google.autoservice.compiler)
251+
ksp(libs.google.autoservice.compiler)
253252

254253
// Manager for complex RecyclerView layouts
255254
implementation(libs.lisawray.groupie.core)

app/schemas/org.schabi.newpipe.database.AppDatabase/9.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@
458458
"notNull": true
459459
},
460460
{
461-
"fieldPath": "name",
461+
"fieldPath": "orderingName",
462462
"columnName": "name",
463463
"affinity": "TEXT",
464464
"notNull": false

app/src/androidTest/java/org/schabi/newpipe/database/DatabaseMigrationTest.kt

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ class DatabaseMigrationTest {
129129
)
130130

131131
val migratedDatabaseV3 = getMigratedDatabase()
132-
val listFromDB = migratedDatabaseV3.streamDAO().all.blockingFirst()
132+
val listFromDB = migratedDatabaseV3.streamDAO().getAll().blockingFirst()
133133

134134
// Only expect 2, the one with the null url will be ignored
135135
assertEquals(2, listFromDB.size)
@@ -217,7 +217,7 @@ class DatabaseMigrationTest {
217217
)
218218

219219
val migratedDatabaseV8 = getMigratedDatabase()
220-
val listFromDB = migratedDatabaseV8.searchHistoryDAO().all.blockingFirst()
220+
val listFromDB = migratedDatabaseV8.searchHistoryDAO().getAll().blockingFirst()
221221

222222
assertEquals(2, listFromDB.size)
223223
assertEquals("abc", listFromDB[0].search)
@@ -283,8 +283,8 @@ class DatabaseMigrationTest {
283283
)
284284

285285
val migratedDatabaseV9 = getMigratedDatabase()
286-
var localListFromDB = migratedDatabaseV9.playlistDAO().all.blockingFirst()
287-
var remoteListFromDB = migratedDatabaseV9.playlistRemoteDAO().all.blockingFirst()
286+
var localListFromDB = migratedDatabaseV9.playlistDAO().getAll().blockingFirst()
287+
var remoteListFromDB = migratedDatabaseV9.playlistRemoteDAO().getAll().blockingFirst()
288288

289289
assertEquals(1, localListFromDB.size)
290290
assertEquals(localUid2, localListFromDB[0].uid)
@@ -294,17 +294,27 @@ class DatabaseMigrationTest {
294294
assertEquals(-1, remoteListFromDB[0].displayIndex)
295295

296296
val localUid3 = migratedDatabaseV9.playlistDAO().insert(
297-
PlaylistEntity(DEFAULT_NAME + "3", false, -1, -1)
297+
PlaylistEntity(
298+
name = "${DEFAULT_NAME}3",
299+
isThumbnailPermanent = false,
300+
thumbnailStreamId = -1,
301+
displayIndex = -1
302+
)
298303
)
299304
val remoteUid3 = migratedDatabaseV9.playlistRemoteDAO().insert(
300305
PlaylistRemoteEntity(
301-
DEFAULT_THIRD_SERVICE_ID, DEFAULT_NAME, DEFAULT_THIRD_URL,
302-
DEFAULT_THUMBNAIL, DEFAULT_UPLOADER_NAME, -1, 10
306+
serviceId = DEFAULT_THIRD_SERVICE_ID,
307+
orderingName = DEFAULT_NAME,
308+
url = DEFAULT_THIRD_URL,
309+
thumbnailUrl = DEFAULT_THUMBNAIL,
310+
uploader = DEFAULT_UPLOADER_NAME,
311+
displayIndex = -1,
312+
streamCount = 10
303313
)
304314
)
305315

306-
localListFromDB = migratedDatabaseV9.playlistDAO().all.blockingFirst()
307-
remoteListFromDB = migratedDatabaseV9.playlistRemoteDAO().all.blockingFirst()
316+
localListFromDB = migratedDatabaseV9.playlistDAO().getAll().blockingFirst()
317+
remoteListFromDB = migratedDatabaseV9.playlistRemoteDAO().getAll().blockingFirst()
308318
assertEquals(2, localListFromDB.size)
309319
assertEquals(localUid3, localListFromDB[1].uid)
310320
assertEquals(-1, localListFromDB[1].displayIndex)

app/src/androidTest/java/org/schabi/newpipe/local/history/HistoryRecordManagerTest.kt

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class HistoryRecordManagerTest {
4141
// For some reason the Flowable returned by getAll() never completes, so we can't assert
4242
// that the number of Lists it returns is exactly 1, we can only check if the first List is
4343
// correct. Why on earth has a Flowable been used instead of a Single for getAll()?!?
44-
val entities = database.searchHistoryDAO().all.blockingFirst()
44+
val entities = database.searchHistoryDAO().getAll().blockingFirst()
4545
assertThat(entities).hasSize(1)
4646
assertThat(entities[0].id).isEqualTo(1)
4747
assertThat(entities[0].serviceId).isEqualTo(0)
@@ -51,50 +51,50 @@ class HistoryRecordManagerTest {
5151
@Test
5252
fun deleteSearchHistory() {
5353
val entries = listOf(
54-
SearchHistoryEntry(time.minusSeconds(1), 0, "A"),
55-
SearchHistoryEntry(time.minusSeconds(2), 2, "A"),
56-
SearchHistoryEntry(time.minusSeconds(3), 1, "B"),
57-
SearchHistoryEntry(time.minusSeconds(4), 0, "B"),
54+
SearchHistoryEntry(creationDate = time.minusSeconds(1), serviceId = 0, search = "A"),
55+
SearchHistoryEntry(creationDate = time.minusSeconds(2), serviceId = 2, search = "A"),
56+
SearchHistoryEntry(creationDate = time.minusSeconds(3), serviceId = 1, search = "B"),
57+
SearchHistoryEntry(creationDate = time.minusSeconds(4), serviceId = 0, search = "B"),
5858
)
5959

6060
// make sure all 4 were inserted
6161
database.searchHistoryDAO().insertAll(entries)
62-
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
62+
assertThat(database.searchHistoryDAO().getAll().blockingFirst()).hasSameSizeAs(entries)
6363

6464
// try to delete only "A" entries, "B" entries should be untouched
6565
manager.deleteSearchHistory("A").test().await().assertValue(2)
66-
val entities = database.searchHistoryDAO().all.blockingFirst()
66+
val entities = database.searchHistoryDAO().getAll().blockingFirst()
6767
assertThat(entities).hasSize(2)
6868
assertThat(entities).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
6969
.containsExactly(*entries.subList(2, 4).toTypedArray())
7070

7171
// assert that nothing happens if we delete a search query that does exist in the db
7272
manager.deleteSearchHistory("A").test().await().assertValue(0)
73-
val entities2 = database.searchHistoryDAO().all.blockingFirst()
73+
val entities2 = database.searchHistoryDAO().getAll().blockingFirst()
7474
assertThat(entities2).hasSize(2)
7575
assertThat(entities2).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
7676
.containsExactly(*entries.subList(2, 4).toTypedArray())
7777

7878
// delete all remaining entries
7979
manager.deleteSearchHistory("B").test().await().assertValue(2)
80-
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
80+
assertThat(database.searchHistoryDAO().getAll().blockingFirst()).isEmpty()
8181
}
8282

8383
@Test
8484
fun deleteCompleteSearchHistory() {
8585
val entries = listOf(
86-
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
87-
SearchHistoryEntry(time.minusSeconds(2), 2, "B"),
88-
SearchHistoryEntry(time.minusSeconds(3), 0, "C"),
86+
SearchHistoryEntry(creationDate = time.minusSeconds(1), serviceId = 1, search = "A"),
87+
SearchHistoryEntry(creationDate = time.minusSeconds(2), serviceId = 2, search = "B"),
88+
SearchHistoryEntry(creationDate = time.minusSeconds(3), serviceId = 0, search = "C"),
8989
)
9090

9191
// make sure all 3 were inserted
9292
database.searchHistoryDAO().insertAll(entries)
93-
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
93+
assertThat(database.searchHistoryDAO().getAll().blockingFirst()).hasSameSizeAs(entries)
9494

9595
// should remove everything
9696
manager.deleteCompleteSearchHistory().test().await().assertValue(entries.size)
97-
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
97+
assertThat(database.searchHistoryDAO().getAll().blockingFirst()).isEmpty()
9898
}
9999

100100
private fun insertShuffledRelatedSearches(relatedSearches: Collection<SearchHistoryEntry>) {
@@ -107,7 +107,7 @@ class HistoryRecordManagerTest {
107107
// make sure all entries were inserted
108108
assertEquals(
109109
relatedSearches.size,
110-
database.searchHistoryDAO().all.blockingFirst().size
110+
database.searchHistoryDAO().getAll().blockingFirst().size
111111
)
112112
}
113113

@@ -127,19 +127,18 @@ class HistoryRecordManagerTest {
127127

128128
@Test
129129
fun getRelatedSearches_emptyQuery_manyDuplicates() {
130-
insertShuffledRelatedSearches(
131-
listOf(
132-
SearchHistoryEntry(time.minusSeconds(9), 3, "A"),
133-
SearchHistoryEntry(time.minusSeconds(8), 3, "AB"),
134-
SearchHistoryEntry(time.minusSeconds(7), 3, "A"),
135-
SearchHistoryEntry(time.minusSeconds(6), 3, "A"),
136-
SearchHistoryEntry(time.minusSeconds(5), 3, "BA"),
137-
SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
138-
SearchHistoryEntry(time.minusSeconds(3), 3, "A"),
139-
SearchHistoryEntry(time.minusSeconds(2), 0, "A"),
140-
SearchHistoryEntry(time.minusSeconds(1), 2, "AA"),
141-
)
130+
val relatedSearches = listOf(
131+
SearchHistoryEntry(creationDate = time.minusSeconds(9), serviceId = 3, search = "A"),
132+
SearchHistoryEntry(creationDate = time.minusSeconds(8), serviceId = 3, search = "AB"),
133+
SearchHistoryEntry(creationDate = time.minusSeconds(7), serviceId = 3, search = "A"),
134+
SearchHistoryEntry(creationDate = time.minusSeconds(6), serviceId = 3, search = "A"),
135+
SearchHistoryEntry(creationDate = time.minusSeconds(5), serviceId = 3, search = "BA"),
136+
SearchHistoryEntry(creationDate = time.minusSeconds(4), serviceId = 3, search = "A"),
137+
SearchHistoryEntry(creationDate = time.minusSeconds(3), serviceId = 3, search = "A"),
138+
SearchHistoryEntry(creationDate = time.minusSeconds(2), serviceId = 0, search = "A"),
139+
SearchHistoryEntry(creationDate = time.minusSeconds(1), serviceId = 2, search = "AA"),
142140
)
141+
insertShuffledRelatedSearches(relatedSearches)
143142

144143
val searches = manager.getRelatedSearches("", 9, 3).blockingFirst()
145144
assertThat(searches).containsExactly("AA", "A", "BA")
@@ -166,13 +165,13 @@ class HistoryRecordManagerTest {
166165
private val time = OffsetDateTime.of(LocalDateTime.of(2000, 1, 1, 1, 1), ZoneOffset.UTC)
167166

168167
private val RELATED_SEARCHES_ENTRIES = listOf(
169-
SearchHistoryEntry(time.minusSeconds(7), 2, "AC"),
170-
SearchHistoryEntry(time.minusSeconds(6), 0, "ABC"),
171-
SearchHistoryEntry(time.minusSeconds(5), 1, "BA"),
172-
SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
173-
SearchHistoryEntry(time.minusSeconds(2), 0, "B"),
174-
SearchHistoryEntry(time.minusSeconds(3), 2, "AA"),
175-
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
168+
SearchHistoryEntry(creationDate = time.minusSeconds(7), serviceId = 2, search = "AC"),
169+
SearchHistoryEntry(creationDate = time.minusSeconds(6), serviceId = 0, search = "ABC"),
170+
SearchHistoryEntry(creationDate = time.minusSeconds(5), serviceId = 1, search = "BA"),
171+
SearchHistoryEntry(creationDate = time.minusSeconds(4), serviceId = 3, search = "A"),
172+
SearchHistoryEntry(creationDate = time.minusSeconds(2), serviceId = 0, search = "B"),
173+
SearchHistoryEntry(creationDate = time.minusSeconds(3), serviceId = 2, search = "AA"),
174+
SearchHistoryEntry(creationDate = time.minusSeconds(1), serviceId = 1, search = "A"),
176175
)
177176
}
178177
}

app/src/androidTest/java/org/schabi/newpipe/local/playlist/LocalPlaylistManagerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@ class LocalPlaylistManagerTest {
7272
val result = manager.createPlaylist("name", listOf(stream, upserted))
7373

7474
result.test().await().assertComplete()
75-
database.streamDAO().all.test().awaitCount(1).assertValue(listOf(stream, upserted))
75+
database.streamDAO().getAll().test().awaitCount(1).assertValue(listOf(stream, upserted))
7676
}
7777
}

app/src/main/java/org/schabi/newpipe/NewPipeDatabase.java

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)