From 932d118a37c084e8f9b3008b8a66be73acada8aa Mon Sep 17 00:00:00 2001 From: Aman Singhal Date: Thu, 31 Jul 2025 17:47:31 +0530 Subject: [PATCH] [Bugfix][VAPI-2447] - Added XML Adapter to parse the enum as an enum string value instead of enum name --- .../sdk/model/CallDirectionEnum.java | 23 +++++++++++++++++-- .../bandwidth/sdk/model/bxml/StartStream.java | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/bandwidth/sdk/model/CallDirectionEnum.java b/src/main/java/com/bandwidth/sdk/model/CallDirectionEnum.java index ddf8bbde..6e6be65f 100644 --- a/src/main/java/com/bandwidth/sdk/model/CallDirectionEnum.java +++ b/src/main/java/com/bandwidth/sdk/model/CallDirectionEnum.java @@ -22,6 +22,7 @@ import com.google.gson.annotations.JsonAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; +import jakarta.xml.bind.annotation.adapters.XmlAdapter; /** * The direction of the call. @@ -33,7 +34,7 @@ public enum CallDirectionEnum { OUTBOUND("outbound"); - private String value; + private final String value; CallDirectionEnum(String value) { this.value = value; @@ -45,7 +46,7 @@ public String getValue() { @Override public String toString() { - return String.valueOf(value); + return value; } public static CallDirectionEnum fromValue(String value) { @@ -70,6 +71,24 @@ public CallDirectionEnum read(final JsonReader jsonReader) throws IOException { } } + public static class XMLAdapter extends XmlAdapter { + @Override + public CallDirectionEnum unmarshal(String v) { + for (CallDirectionEnum e : CallDirectionEnum.values()) { + if (e.toString().equals(v)) { + return e; + } + } + return null; + } + + @Override + public String marshal(CallDirectionEnum v) { + return v.toString(); + } + } + + public static void validateJsonElement(JsonElement jsonElement) throws IOException { String value = jsonElement.getAsString(); CallDirectionEnum.fromValue(value); diff --git a/src/main/java/com/bandwidth/sdk/model/bxml/StartStream.java b/src/main/java/com/bandwidth/sdk/model/bxml/StartStream.java index 2cf1feb1..9d2022d1 100644 --- a/src/main/java/com/bandwidth/sdk/model/bxml/StartStream.java +++ b/src/main/java/com/bandwidth/sdk/model/bxml/StartStream.java @@ -17,6 +17,7 @@ import com.bandwidth.sdk.model.CallDirectionEnum; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Builder.Default; @@ -83,6 +84,7 @@ public class StartStream implements Verb { protected String mode; @XmlAttribute + @XmlJavaTypeAdapter(CallDirectionEnum.XMLAdapter.class) @Default protected CallDirectionEnum tracks = CallDirectionEnum.INBOUND;