Skip to content

Commit 12e2bd1

Browse files
committed
Add null-safety to swap NPE for MissingValueException
1 parent 0ccc849 commit 12e2bd1

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

src/main/kotlin/com/github/gradle/node/PackageJsonExtension.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,30 @@ open class PackageJsonExtension(project: Project) {
2323
node.set(project.provider { project.file("package.json").let(ObjectMapper()::readTree) })
2424
}
2525

26-
val name = project.provider { node.get().get("name").asText() }
26+
val name = project.provider { node.get().get("name")?.asText() }
2727

28-
val version = project.provider { node.get().get("version").asText() }
28+
val version = project.provider { node.get().get("version")?.asText() }
2929

30-
val description = project.provider { node.get().get("description").asText() }
30+
val description = project.provider { node.get().get("description")?.asText() }
3131

32-
val homepage = project.provider { node.get().get("homepage").asText() }
32+
val homepage = project.provider { node.get().get("homepage")?.asText() }
3333

34-
val license = project.provider { node.get().get("license").asText() }
34+
val license = project.provider { node.get().get("license")?.asText() }
3535

36-
val private = project.provider { node.get().get("private").asBoolean() }
36+
val private = project.provider { node.get().get("private")?.asBoolean() }
3737

3838
/**
3939
* Get the text value of a given field
4040
*/
41-
fun get(name: String): String {
42-
return node.get().get(name).asText()
41+
fun get(name: String): String? {
42+
return node.get().get(name)?.asText()
4343
}
4444

4545
/**
4646
* Get the boolean value of a given field
4747
*/
48-
fun getBoolean(name: String): Boolean {
49-
return node.get().get(name).asBoolean()
48+
fun getBoolean(name: String): Boolean? {
49+
return node.get().get(name)?.asBoolean()
5050
}
5151

5252
/**

src/test/groovy/com/github/gradle/node/PackageJsonExtensionTest.groovy

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
package com.github.gradle.node
33

44
import com.github.gradle.AbstractProjectTest
5+
import org.gradle.api.internal.provider.MissingValueException
56

67
class PackageJsonExtensionTest extends AbstractProjectTest {
78
def 'check standard attributes'() {
@@ -19,6 +20,20 @@ class PackageJsonExtensionTest extends AbstractProjectTest {
1920
ext.private.get() == false
2021
}
2122

23+
def 'get missing attribute'() {
24+
when:
25+
temporaryFolder.newFile("package.json") << """
26+
{ "name": "test", "version": "1.10.2", "private": false }
27+
"""
28+
project.apply plugin: 'com.github.node-gradle.node'
29+
project.evaluate()
30+
def ext = project.extensions.getByName('package.json') as PackageJsonExtension
31+
ext.homepage.get() == null
32+
33+
then:
34+
thrown(MissingValueException)
35+
}
36+
2237
def 'get raw attributes'() {
2338
when:
2439
temporaryFolder.newFile("package.json") << """

0 commit comments

Comments
 (0)