View Javadoc
1   package org.bremersee.ldaptive;
2   
3   import com.fasterxml.jackson.core.Version;
4   import com.fasterxml.jackson.databind.module.SimpleModule;
5   import java.io.Serial;
6   import java.util.List;
7   import java.util.Map;
8   import java.util.regex.Pattern;
9   import org.bremersee.ldaptive.converter.JacksonDnDeserializer;
10  import org.bremersee.ldaptive.converter.JacksonDnSerializer;
11  import org.bremersee.ldaptive.converter.JacksonLdapEntryDeserializer;
12  import org.bremersee.ldaptive.converter.JacksonLdapEntrySerializer;
13  import org.ldaptive.LdapEntry;
14  import org.ldaptive.dn.Dn;
15  
16  /**
17   * The ldaptive object mapper module.
18   */
19  public class LdaptiveObjectMapperModule extends SimpleModule {
20  
21    @Serial
22    private static final long serialVersionUID = 1L;
23  
24    /**
25     * The constant TYPE_ID.
26     */
27    public static final String TYPE_ID = LdaptiveObjectMapperModule.class.getName();
28  
29    /**
30     * Instantiates a new ldaptive object mapper module.
31     */
32    public LdaptiveObjectMapperModule() {
33      super(
34          TYPE_ID,
35          getVersion(),
36          Map.of(
37              Dn.class, new JacksonDnDeserializer(),
38              LdapEntry.class, new JacksonLdapEntryDeserializer()),
39          List.of(new JacksonDnSerializer(), new JacksonLdapEntrySerializer()));
40    }
41  
42    private static Version getVersion() {
43  
44      int defaultMajor = 5;
45      int defaultMinor = 0;
46      int defaultPatchLevel = 0;
47      String defaultSnapshotInfo = "SNAPSHOT";
48  
49      int major = defaultMajor;
50      int minor = defaultMinor;
51      int patchLevel = defaultPatchLevel;
52      String snapshotInfo = defaultSnapshotInfo;
53  
54      String version = LdaptiveObjectMapperModule.class.getPackage().getImplementationVersion();
55      if (version != null) {
56        try {
57          int i = version.indexOf('-');
58          if (i < 0) {
59            snapshotInfo = null;
60          } else {
61            snapshotInfo = version.substring(i + 1);
62            String[] a = version.substring(0, i).split(Pattern.quote("."));
63            major = Integer.parseInt(a[0]);
64            minor = Integer.parseInt(a[1]);
65            patchLevel = Integer.parseInt(a[2]);
66          }
67  
68        } catch (RuntimeException e) {
69          major = defaultMajor;
70          minor = defaultMinor;
71          snapshotInfo = defaultSnapshotInfo;
72        }
73      }
74  
75      return new Version(major, minor, patchLevel, snapshotInfo, "org.bremersee",
76          "spring-integration-ldaptive");
77    }
78  
79  }