All Downloads are FREE. Search and download functionalities are using the official Maven repository.

graphql.nadel.enginekt.transform.result.json.JsonNodePath.kt Maven / Gradle / Ivy

Go to download

Nadel is a Java library that combines multiple GrahpQL services together into one API.

The newest version!
package graphql.nadel.enginekt.transform.result.json

typealias AnyJsonNodePathSegment = JsonNodePathSegment<*>

data class JsonNodePath(
    val segments: List,
) {
    operator fun plus(segment: String): JsonNodePath {
        return copy(segments = segments + JsonNodePathSegment.String(segment))
    }

    operator fun plus(segment: Int): JsonNodePath {
        return copy(segments = segments + JsonNodePathSegment.Int(segment))
    }

    operator fun plus(other: JsonNodePath): JsonNodePath {
        return copy(segments = segments + other.segments)
    }

    operator fun plus(other: AnyJsonNodePathSegment): JsonNodePath {
        return copy(segments = segments + other)
    }

    fun dropLast(n: Int): JsonNodePath {
        return copy(
            segments = segments.subList(0, segments.size - n),
        )
    }

    companion object {
        val root = JsonNodePath(segments = emptyList())
    }
}

sealed class JsonNodePathSegment {
    abstract val value: T

    data class Int(override val value: kotlin.Int) : JsonNodePathSegment()
    data class String(override val value: kotlin.String) : JsonNodePathSegment()

    override fun toString(): kotlin.String {
        return "$value"
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy