Skip to content

Commit 58d3d2c

Browse files
authored
Merge pull request #484 from vimeo/fixing-parcelable-generation
Making sure parcelable and serializable are both generated
2 parents f3ec86a + e288ba6 commit 58d3d2c

File tree

4 files changed

+37
-31
lines changed

4 files changed

+37
-31
lines changed

example/build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ android {
88

99
defaultConfig {
1010
applicationId "com.vimeo.example"
11-
minSdkVersion 21
11+
minSdkVersion 23
1212
targetSdkVersion 30
1313
versionCode 1
1414
versionName "1.0"
@@ -26,9 +26,8 @@ android {
2626
}
2727

2828
dependencies {
29-
implementation project(':auth')
30-
implementation project(':request')
31-
implementation project(':models')
29+
implementation project(':models-parcelable')
30+
implementation project(':vimeo-networking')
3231

3332
implementation "androidx.appcompat:appcompat:1.2.0"
3433
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

model-generator/plugin/src/main/java/com/vimeo/modelgenerator/GenerateModelsPlugin.kt

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,29 @@ class GenerateModelsPlugin : Plugin<Project> {
1111
val extension =
1212
project.extensions.create(EXTENSION_NAME, GenerateModelsExtension::class.java, project)
1313

14-
// Android projects can also have the JVM plugin applied, so we ensure to only register the task once.
15-
if (project.plugins.findPlugin(KOTLIN_ANDROID) != null) {
16-
// Sets up task on Android based projects.
17-
project.plugins.withId(KOTLIN_ANDROID) {
18-
registerTask(project, extension)
19-
project.tasks.findByName(PRE_BUILD)?.dependsOn(GENERATE_MODELS)
14+
project.pluginManager.withPlugin(KOTLIN_ANDROID) {
15+
registerTask(project, extension)
16+
project.afterEvaluate {
17+
project.tasks.findByName(PRE_BUILD)?.dependsOn(project.tasks.findByName(GENERATE_MODELS))
2018
}
21-
} else {
22-
// Sets up tasks on JVM based projects.
23-
project.plugins.withId(KOTLIN_JVM) {
24-
registerTask(project, extension)
25-
26-
// kaptGenerateStubsKotlin is used as the set up task instead of build
27-
// because kapt code generation happens before build is called and
28-
// we need to generate the models prior to kapt so the Moshi adapters
29-
// can also be generated.
30-
val kaptTask: Task? = project.tasks.findByName(KAPT_GENERATE_STUBS)
31-
32-
// When generating to a module that doesn't use kapt this task will be null
33-
// in that case compileKotlin is the earliest task run when the module is being
34-
// built so we can attach generateModels to that instead.
35-
if (kaptTask != null) {
36-
kaptTask.dependsOn(GENERATE_MODELS)
37-
} else {
38-
project.tasks.findByName(COMPILE_KOTLIN)?.dependsOn(GENERATE_MODELS)
39-
}
19+
}
20+
21+
project.pluginManager.withPlugin(KOTLIN_JVM) {
22+
registerTask(project, extension)
23+
24+
// kaptGenerateStubsKotlin is used as the set up task instead of build
25+
// because kapt code generation happens before build is called and
26+
// we need to generate the models prior to kapt so the Moshi adapters
27+
// can also be generated.
28+
val kaptTask: Task? = project.tasks.findByName(KAPT_GENERATE_STUBS)
29+
30+
// When generating to a module that doesn't use kapt this task will be null
31+
// in that case compileKotlin is the earliest task run when the module is being
32+
// built so we can attach generateModels to that instead.
33+
if (kaptTask != null) {
34+
kaptTask.dependsOn(GENERATE_MODELS)
35+
} else {
36+
project.tasks.findByName(COMPILE_KOTLIN)?.dependsOn(GENERATE_MODELS)
4037
}
4138
}
4239
}

models-parcelable/src/test/java/com/vimeo/networking2/ModelTest.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ class ModelTest {
2525
.getClassesImplementing(PARCELABLE)
2626
.loadClasses()
2727

28+
@Test
29+
fun `models exist`() {
30+
assertThat(models).isNotEmpty
31+
}
32+
2833
@Test
2934
fun `models are Parcelable`() {
3035
models
@@ -64,4 +69,4 @@ class ModelTest {
6469
private const val PACKAGE = "com.vimeo.networking2"
6570
private const val PARCELABLE = "android.os.Parcelable"
6671
}
67-
}
72+
}

models-serializable/src/test/java/com/vimeo/networking2/ModelTest.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ class ModelTest {
2121
.getClassesImplementing(SERIALIZABLE)
2222
.loadClasses()
2323

24+
@Test
25+
fun `models exist`() {
26+
assertThat(models).isNotEmpty
27+
}
28+
2429
@Test
2530
fun `models are Serializable`() {
2631
models
@@ -59,4 +64,4 @@ class ModelTest {
5964
private const val PACKAGE = "com.vimeo.networking2"
6065
private const val SERIALIZABLE = "java.io.Serializable"
6166
}
62-
}
67+
}

0 commit comments

Comments
 (0)