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); }
private Configuration findConfiguration(List<MappingFileData> mappingFileDataList) { Configuration globalConfiguration = null; for (MappingFileData mappingFileData : mappingFileDataList) { if (mappingFileData.getConfiguration() != null) { // Only allow 1 global configuration if (globalConfiguration != null) { MappingUtils.throwMappingException( "More than one global configuration found. " + "Only one global configuration block (<configuration></configuration>) can be specified across all mapping files. " + "You need to consolidate all global configuration blocks into a single one."); } globalConfiguration = mappingFileData.getConfiguration(); } } // If global configuration was not specified, use defaults if (globalConfiguration == null) { globalConfiguration = new Configuration(); } return globalConfiguration; }