private synchronized ObjectMapper getMapper()

in src/main/java/org/apache/uima/json/jsoncas2/JsonCas2Serializer.java [119:160]


  private synchronized ObjectMapper getMapper() {
    if (cachedMapper == null) {
      SimpleModule module = new SimpleModule("UIMA CAS JSON",
              new Version(1, 0, 0, null, null, null));

      ReferenceCache.Builder refCacheBuilder = ReferenceCache.builder()
              .withIdRefGeneratorSupplier(idRefGeneratorSupplier)
              .withTypeRefGeneratorSupplier(typeRefGeneratorSupplier);
      module.addSerializer(new CasSerializer(refCacheBuilder::build));
      module.addSerializer(new TypeSystemSerializer());
      module.addSerializer(new TypeSerializer());
      module.addSerializer(new FeatureSerializer());
      module.addSerializer(new CommonArrayFSSerializer());

      switch (sofaMode) {
        case AS_PART_OF_VIEW:
          module.addSerializer(new SofaSerializer());
          break;
        case AS_REGULAR_FEATURE_STRUCTURE:
          // Nothing to do
          break;
      }

      module.addSerializer(new FeatureStructureSerializer());

      switch (fsMode) {
        case AS_ARRAY:
          module.addSerializer(new FeatureStructuresAsArraySerializer());
          break;
        case AS_OBJECT:
          module.addSerializer(new FeatureStructuresAsObjectSerializer());
          break;
      }

      module.addSerializer(new ViewsSerializer());

      cachedMapper = new ObjectMapper();
      cachedMapper.registerModule(module);
    }

    return cachedMapper;
  }