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
13
14 public class DnValueTranscoder extends AbstractStringValueTranscoder<Dn> {
15
16 private final RDnNormalizer rdnNormalizer;
17
18
19
20
21 public DnValueTranscoder() {
22 this(new DefaultRDnNormalizer());
23 }
24
25
26
27
28
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 }