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
18
19 public class LdaptiveObjectMapperModule extends SimpleModule {
20
21 @Serial
22 private static final long serialVersionUID = 1L;
23
24
25
26
27 public static final String TYPE_ID = LdaptiveObjectMapperModule.class.getName();
28
29
30
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 }