diff --git a/algoliasearch/src/main/java/com/algolia/model/ingestion/AuthInputPartial.java b/algoliasearch/src/main/java/com/algolia/model/ingestion/AuthInputPartial.java index 2b9eff3c..093e0d25 100644 --- a/algoliasearch/src/main/java/com/algolia/model/ingestion/AuthInputPartial.java +++ b/algoliasearch/src/main/java/com/algolia/model/ingestion/AuthInputPartial.java @@ -6,14 +6,44 @@ import com.algolia.exceptions.AlgoliaRuntimeException; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.core.*; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.annotation.*; import java.io.IOException; +import java.util.Map; import java.util.logging.Logger; /** AuthInputPartial */ @JsonDeserialize(using = AuthInputPartial.Deserializer.class) public interface AuthInputPartial { + // AuthInputPartial as Map wrapper. + static AuthInputPartial of(Map value) { + return new MapOfStringStringWrapper(value); + } + + // AuthInputPartial as Map wrapper. + @JsonSerialize(using = MapOfStringStringWrapper.Serializer.class) + class MapOfStringStringWrapper implements AuthInputPartial { + + private final Map value; + + MapOfStringStringWrapper(Map value) { + this.value = value; + } + + public Map getValue() { + return value; + } + + static class Serializer extends JsonSerializer { + + @Override + public void serialize(MapOfStringStringWrapper value, JsonGenerator gen, SerializerProvider provider) throws IOException { + gen.writeObject(value.getValue()); + } + } + } + class Deserializer extends JsonDeserializer { private static final Logger LOGGER = Logger.getLogger(Deserializer.class.getName()); @@ -81,6 +111,16 @@ public AuthInputPartial deserialize(JsonParser jp, DeserializationContext ctxt) ); } } + // deserialize Map + if (tree.isObject()) { + try (JsonParser parser = tree.traverse(jp.getCodec())) { + Map value = parser.readValueAs(new TypeReference>() {}); + return new AuthInputPartial.MapOfStringStringWrapper(value); + } catch (Exception e) { + // deserialization failed, continue + LOGGER.finest("Failed to deserialize oneOf Map (error: " + e.getMessage() + ") (type: Map)"); + } + } throw new AlgoliaRuntimeException(String.format("Failed to deserialize json element: %s", tree)); }