JacksonDnDeserializer.java

package org.bremersee.ldaptive.converter;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;
import java.io.Serial;
import org.bremersee.ldaptive.transcoder.ValueTranscoderFactory;
import org.ldaptive.dn.Dn;

/**
 * The jackson distinguished name deserializer.
 */
public class JacksonDnDeserializer extends StdDeserializer<Dn> {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * Instantiates a new jackson distinguished name deserializer.
   */
  public JacksonDnDeserializer() {
    super(Dn.class);
  }

  @Override
  public Dn deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
      throws IOException {

    String source = jsonParser.readValueAs(String.class);
    return ValueTranscoderFactory.getDnValueTranscoder().decodeStringValue(source);
  }
}