View Javadoc
1   package org.bremersee.ldaptive.transcoder;
2   
3   import static java.util.Objects.isNull;
4   
5   import java.util.Objects;
6   import org.ldaptive.dn.DefaultRDnNormalizer;
7   import org.ldaptive.dn.Dn;
8   import org.ldaptive.dn.RDnNormalizer;
9   import org.ldaptive.transcode.AbstractStringValueTranscoder;
10  
11  /**
12   * The distinguished name value transcoder.
13   */
14  public class DnValueTranscoder extends AbstractStringValueTranscoder<Dn> {
15  
16    private final RDnNormalizer rdnNormalizer;
17  
18    /**
19     * Instantiates a new distinguished name value transcoder.
20     */
21    public DnValueTranscoder() {
22      this(new DefaultRDnNormalizer());
23    }
24  
25    /**
26     * Instantiates a new distinguished name value transcoder.
27     *
28     * @param rdnNormalizer the rdn normalizer
29     */
30    public DnValueTranscoder(RDnNormalizer rdnNormalizer) {
31      this.rdnNormalizer = Objects.requireNonNullElseGet(rdnNormalizer, DefaultRDnNormalizer::new);
32    }
33  
34    @Override
35    public Dn decodeStringValue(String dn) {
36      if (isNull(dn) || dn.trim().isEmpty()) {
37        return null;
38      }
39      return new Dn(dn.trim());
40    }
41  
42    @Override
43    public String encodeStringValue(Dn dn) {
44      if (isNull(dn) || dn.isEmpty()) {
45        return null;
46      }
47      return dn.format(rdnNormalizer);
48    }
49  
50    @Override
51    public Class<Dn> getType() {
52      return Dn.class;
53    }
54  }