SLING-8116 - ValueMap - implement default methods using OSGI Converter

* removed the double-checked locking construct for creating a Converter
diff --git a/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java b/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
index 43f39fd..066acd3 100644
--- a/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
+++ b/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
@@ -35,37 +35,25 @@
  */
 public final class ObjectConverter {
 
-    private ObjectConverter() {
-    }
+    private static final Converter CONVERTER;
 
-    private static Converter converter;
-
-    private static Converter getConverter() {
-        // TODO at some point it may be practical to have TypeRules as OSGI services to
-        // add more complex conversions much in the way that adaptTo has evolved
-        if (converter == null) {
-            synchronized (ObjectConverter.class) {
-                if (converter == null) {
-                    converter = Converters.newConverterBuilder()
-                            .rule(new TypeRule<String, Calendar>(String.class, Calendar.class,
-                                    ObjectConverter::toCalendar))
-                            .rule(new TypeRule<Date, Calendar>(Date.class, Calendar.class,
-                                    ObjectConverter::toCalendar))
-                            .rule(new TypeRule<String, Date>(String.class, Date.class, ObjectConverter::toDate))
-                            .rule(new TypeRule<Calendar, String>(Calendar.class, String.class,
-                                    ObjectConverter::toString))
-                            .rule(new TypeRule<Date, String>(Date.class, String.class, ObjectConverter::toString))
-                            .rule(new TypeRule<Calendar, Date>(Calendar.class, Date.class,
-                                    ObjectConverter::toDate))
-                            .rule(new TypeRule<>(Calendar.class, ZonedDateTime.class, ObjectConverter::toZonedDateTime))
-                            .rule(new TypeRule<ZonedDateTime, Calendar>(ZonedDateTime.class, Calendar.class, ObjectConverter::toCalendar))
-                            .rule(new TypeRule<ZonedDateTime, String>(ZonedDateTime.class, String.class, ObjectConverter::toString))
-                            .build();
-                }
-            }
-        }
-        return converter;
-    }
+    static {
+        CONVERTER = Converters.newConverterBuilder()
+                .rule(new TypeRule<String, Calendar>(String.class, Calendar.class,
+                        ObjectConverter::toCalendar))
+                .rule(new TypeRule<Date, Calendar>(Date.class, Calendar.class,
+                        ObjectConverter::toCalendar))
+                .rule(new TypeRule<String, Date>(String.class, Date.class, ObjectConverter::toDate))
+                .rule(new TypeRule<Calendar, String>(Calendar.class, String.class,
+                        ObjectConverter::toString))
+                .rule(new TypeRule<Date, String>(Date.class, String.class, ObjectConverter::toString))
+                .rule(new TypeRule<Calendar, Date>(Calendar.class, Date.class,
+                        ObjectConverter::toDate))
+                .rule(new TypeRule<>(Calendar.class, ZonedDateTime.class, ObjectConverter::toZonedDateTime))
+                .rule(new TypeRule<ZonedDateTime, Calendar>(ZonedDateTime.class, Calendar.class, ObjectConverter::toCalendar))
+                .rule(new TypeRule<ZonedDateTime, String>(ZonedDateTime.class, String.class, ObjectConverter::toString))
+                .build();
+}
 
     private static String toString(ZonedDateTime zonedDateTime) {
         return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(zonedDateTime);
@@ -124,7 +112,7 @@
             return null;
         }
         try {
-            return getConverter().convert(obj).to(type);
+            return CONVERTER.convert(obj).to(type);
         } catch (ConversionException ce) {
             return null;
         }