in tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java [1302:1338]
private void createComponentConverterSource(String packageName, ComponentModel model)
throws MojoFailureException {
final String name = model.getJavaType().substring(model.getJavaType().lastIndexOf(".") + 1).replace("Component", "ComponentConverter");
// create converter class and write source
JavaClass javaClass = new JavaClass(getProjectClassLoader());
javaClass.setPackage(packageName);
javaClass.setName(name);
javaClass.getJavaDoc().setFullText("Generated by camel-package-maven-plugin - do not edit this file!");
javaClass.addAnnotation(Configuration.class).setLiteralValue("proxyBeanMethods", "false");
javaClass.addAnnotation("org.springframework.boot.context.properties.ConfigurationPropertiesBinding");
javaClass.addAnnotation("org.springframework.stereotype.Component");
javaClass.addImport("java.util.LinkedHashSet");
javaClass.addImport("java.util.Set");
javaClass.addImport("org.springframework.core.convert.TypeDescriptor");
javaClass.addImport("org.springframework.core.convert.converter.GenericConverter");
javaClass.implementInterface("GenericConverter");
javaClass.addField().setPrivate().setName("applicationContext").setType(loadClass("org.springframework.context.ApplicationContext")).addAnnotation(Autowired.class);
String body = createConverterPairBody(model);
javaClass.addMethod().setName("getConvertibleTypes").setPublic().setReturnType("Set<ConvertiblePair>")
.setBody(body);
body = createConvertBody(model);
javaClass.addMethod().setName("convert").setPublic().setReturnType("Object")
.addParameter("Object", "source")
.addParameter("TypeDescriptor", "sourceType")
.addParameter("TypeDescriptor", "targetType")
.setBody(body);
sortImports(javaClass);
String fileName = packageName.replaceAll("\\.", "\\/") + "/" + name + ".java";
writeSourceIfChanged(javaClass, fileName, false);
writeComponentSpringFactorySource(packageName, name);
}