Skip to content

Commit eb9d294

Browse files
committed
JsonNode, ArrayNode and ObjectNode extensions
1 parent 4c18e43 commit eb9d294

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ package com.fasterxml.jackson.module.kotlin
33
import com.fasterxml.jackson.core.JsonParser
44
import com.fasterxml.jackson.core.TreeNode
55
import com.fasterxml.jackson.core.type.TypeReference
6-
import com.fasterxml.jackson.databind.JsonMappingException
7-
import com.fasterxml.jackson.databind.MappingIterator
8-
import com.fasterxml.jackson.databind.ObjectMapper
9-
import com.fasterxml.jackson.databind.ObjectReader
10-
import com.fasterxml.jackson.databind.module.SimpleModule
11-
import com.fasterxml.jackson.databind.JsonDeserializer
12-
import com.fasterxml.jackson.databind.JsonSerializer
6+
import com.fasterxml.jackson.databind.*
137
import com.fasterxml.jackson.databind.json.JsonMapper
8+
import com.fasterxml.jackson.databind.module.SimpleModule
9+
import com.fasterxml.jackson.databind.node.ArrayNode
10+
import com.fasterxml.jackson.databind.node.ObjectNode
1411
import java.io.File
1512
import java.io.InputStream
1613
import java.io.Reader
14+
import java.math.BigDecimal
15+
import java.math.BigInteger
1716
import java.net.URL
1817
import java.util.*
1918
import kotlin.reflect.KClass
@@ -54,6 +53,41 @@ inline fun <reified T> ObjectReader.readValueTyped(jp: JsonParser): T = readValu
5453
inline fun <reified T> ObjectReader.readValuesTyped(jp: JsonParser): Iterator<T> = readValues(jp, jacksonTypeRef<T>())
5554
inline fun <reified T> ObjectReader.treeToValue(n: TreeNode): T? = treeToValue(n, T::class.java)
5655

56+
operator fun ArrayNode.plus(element: Boolean) = Unit.apply { add(element) }
57+
operator fun ArrayNode.plus(element: Short) = Unit.apply { add(element) }
58+
operator fun ArrayNode.plus(element: Int) = Unit.apply { add(element) }
59+
operator fun ArrayNode.plus(element: Long) = Unit.apply { add(element) }
60+
operator fun ArrayNode.plus(element: Float) = Unit.apply { add(element) }
61+
operator fun ArrayNode.plus(element: Double) = Unit.apply { add(element) }
62+
operator fun ArrayNode.plus(element: BigDecimal) = Unit.apply { add(element) }
63+
operator fun ArrayNode.plus(element: BigInteger) = Unit.apply { add(element) }
64+
operator fun ArrayNode.plus(element: String) = Unit.apply { add(element) }
65+
operator fun ArrayNode.plus(element: ByteArray) = Unit.apply { add(element) }
66+
operator fun ArrayNode.plus(element: JsonNode) = Unit.apply { add(element) }
67+
operator fun ArrayNode.plus(elements: ArrayNode) = Unit.apply { addAll(elements) }
68+
operator fun ArrayNode.plusAssign(element: Boolean) = Unit.apply { add(element) }
69+
operator fun ArrayNode.plusAssign(element: Short) = Unit.apply { add(element) }
70+
operator fun ArrayNode.plusAssign(element: Int) = Unit.apply { add(element) }
71+
operator fun ArrayNode.plusAssign(element: Long) = Unit.apply { add(element) }
72+
operator fun ArrayNode.plusAssign(element: Float) = Unit.apply { add(element) }
73+
operator fun ArrayNode.plusAssign(element: Double) = Unit.apply { add(element) }
74+
operator fun ArrayNode.plusAssign(element: BigDecimal) = Unit.apply { add(element) }
75+
operator fun ArrayNode.plusAssign(element: BigInteger) = Unit.apply { add(element) }
76+
operator fun ArrayNode.plusAssign(element: String) = Unit.apply { add(element) }
77+
operator fun ArrayNode.plusAssign(element: ByteArray) = Unit.apply { add(element) }
78+
operator fun ArrayNode.plusAssign(element: JsonNode) = Unit.apply { add(element) }
79+
operator fun ArrayNode.plusAssign(elements: ArrayNode) = Unit.apply { addAll(elements) }
80+
operator fun ArrayNode.minus(index: Int) = Unit.apply { remove(index) }
81+
operator fun ArrayNode.minusAssign(index: Int) = Unit.apply { remove(index) }
82+
83+
operator fun ObjectNode.minus(field: String) = Unit.apply { remove(field) }
84+
operator fun ObjectNode.minus(fields: Collection<String>) = Unit.apply { remove(fields) }
85+
operator fun ObjectNode.minusAssign(field: String) = Unit.apply { remove(field) }
86+
operator fun ObjectNode.minusAssign(fields: Collection<String>) = Unit.apply { remove(fields) }
87+
88+
operator fun JsonNode.contains(field: String) = has(field)
89+
operator fun JsonNode.contains(index: Int) = has(index)
90+
5791
internal fun JsonMappingException.wrapWithPath(refFrom: Any?, refFieldName: String) = JsonMappingException.wrapWithPath(this, refFrom, refFieldName)
5892
internal fun JsonMappingException.wrapWithPath(refFrom: Any?, index: Int) = JsonMappingException.wrapWithPath(this, refFrom, index)
5993

0 commit comments

Comments
 (0)