diff --git a/braintrust-java-core/src/main/kotlin/com/braintrustdata/api/errors/BraintrustError.kt b/braintrust-java-core/src/main/kotlin/com/braintrustdata/api/errors/BraintrustError.kt index 29925864..87dcc685 100755 --- a/braintrust-java-core/src/main/kotlin/com/braintrustdata/api/errors/BraintrustError.kt +++ b/braintrust-java-core/src/main/kotlin/com/braintrustdata/api/errors/BraintrustError.kt @@ -13,14 +13,12 @@ import java.util.Objects @JsonDeserialize(builder = BraintrustError.Builder::class) @NoAutoDetect class BraintrustError -constructor( - private val additionalProperties: Map, +private constructor( + @JsonAnyGetter + @get:JvmName("additionalProperties") + val additionalProperties: Map, ) { - @JsonAnyGetter fun additionalProperties(): Map = additionalProperties - - fun toBuilder() = Builder() - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -35,6 +33,8 @@ constructor( override fun toString() = "BraintrustError{additionalProperties=$additionalProperties}" + fun toBuilder() = Builder().from(this) + companion object { @JvmStatic fun builder() = Builder() @@ -44,24 +44,31 @@ constructor( private var additionalProperties: MutableMap = mutableMapOf() - fun from(error: BraintrustError) = apply { - additionalProperties(error.additionalProperties) + @JvmSynthetic + internal fun from(braintrustError: BraintrustError) = apply { + additionalProperties = braintrustError.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BraintrustError = BraintrustError(additionalProperties.toImmutable()) } }