private void addDefaultCustomConverters(Configuration globalConfiguration) {
   if (globalConfiguration.getCustomConverters() != null
       && globalConfiguration.getCustomConverters().findConverter(UUID.class, UUID.class)
           == null) {
     CustomConverterDescription defaultUUIDConverter = new CustomConverterDescription();
     defaultUUIDConverter.setClassA(UUID.class);
     defaultUUIDConverter.setClassB(UUID.class);
     defaultUUIDConverter.setType(ByReferenceConverter.class);
     globalConfiguration.getCustomConverters().addConverter(defaultUUIDConverter);
   }
 }
  public LoadMappingsResult load(List<MappingFileData> mappings) {

    Configuration globalConfiguration = findConfiguration(mappings);

    ClassMappings customMappings = new ClassMappings();
    // Decorate the raw ClassMap objects and create ClassMap "prime" instances
    for (MappingFileData mappingFileData : mappings) {
      List<ClassMap> classMaps = mappingFileData.getClassMaps();
      ClassMappings customMappingsPrime =
          mappingsParser.processMappings(classMaps, globalConfiguration);
      customMappings.addAll(customMappingsPrime);
    }

    // Add default mappings using matching property names if wildcard policy
    // is true. The addDefaultFieldMappings will check the wildcard policy of each classmap
    ClassMapBuilder.addDefaultFieldMappings(customMappings, globalConfiguration);

    Set<CustomConverterDescription> customConverterDescriptions =
        new LinkedHashSet<CustomConverterDescription>();

    // build up custom converter description objects
    if (globalConfiguration.getCustomConverters() != null
        && globalConfiguration.getCustomConverters().getConverters() != null) {
      for (CustomConverterDescription cc :
          globalConfiguration.getCustomConverters().getConverters()) {
        customConverterDescriptions.add(cc);
      }
    }

    // iterate through the classmaps and set all of the custom converters on them
    for (Entry<CacheKeyFactory.CacheKey, ClassMap> entry : customMappings.getAll().entrySet()) {
      ClassMap classMap = entry.getValue();
      if (classMap.getCustomConverters() != null) {
        classMap
            .getCustomConverters()
            .setConverters(new ArrayList<CustomConverterDescription>(customConverterDescriptions));
      } else {
        classMap.setCustomConverters(new CustomConverterContainer());
        classMap
            .getCustomConverters()
            .setConverters(new ArrayList<CustomConverterDescription>(customConverterDescriptions));
      }
    }

    addDefaultCustomConverters(globalConfiguration);

    return new LoadMappingsResult(customMappings, globalConfiguration);
  }