in tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java [558:607]
private void executeDataFormats(JarFile componentJar, Map<String, Supplier<String>> jsonFiles)
throws MojoFailureException {
// find the data format names
List<String> dataFormatNames = findDataFormatNames(componentJar);
// create auto configuration for the data formats
if (!dataFormatNames.isEmpty()) {
getLog().debug("Found " + dataFormatNames.size() + " dataformats");
List<DataFormatModel> allModels = new LinkedList<>();
for (String dataFormatName : dataFormatNames) {
String json = loadDataFormatJson(jsonFiles, dataFormatName);
if (json != null) {
DataFormatModel model = JsonMapper.generateDataFormatModel(json);
allModels.add(model);
}
}
// Group the models by implementing classes
Map<String, List<DataFormatModel>> grModels = allModels.stream()
.collect(Collectors.groupingBy(DataFormatModel::getJavaType));
for (String dataFormatClass : grModels.keySet()) {
List<DataFormatModel> dfModels = grModels.get(dataFormatClass);
DataFormatModel model = dfModels.get(0); // They should be
// equivalent
List<String> aliases = dfModels.stream().map(DataFormatModel::getName).sorted()
.collect(Collectors.toList());
// use springboot as sub package name so the code is not in
// normal
// package so the Spring Boot JARs can be optional at runtime
int pos = model.getJavaType().lastIndexOf(".");
String pkg = model.getJavaType().substring(0, pos) + ".springboot";
String overrideDataFormatName = null;
if (aliases.size() > 1) {
// determine component name when there are multiple ones
overrideDataFormatName = model.getArtifactId().replace("camel-", "");
}
boolean complexOptions = model.getOptions().stream().anyMatch(this::isComplexType);
createDataFormatConfigurationSource(pkg, model, overrideDataFormatName);
createDataFormatAutoConfigurationSource(pkg, model, overrideDataFormatName, complexOptions);
if (complexOptions) {
createDataFormatConverterSource(pkg, model);
}
createDataFormatSpringFactorySource(pkg, model);
}
}
}