in tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java [1327:1392]
private void createComponentAutoConfigurationSource(String packageName, ComponentModel model, String overrideName,
boolean complexOptions) throws MojoFailureException {
final String name = model.getJavaType().substring(model.getJavaType().lastIndexOf(".") + 1).replace("Component",
"ComponentAutoConfiguration");
final String configurationName = name.replace("ComponentAutoConfiguration", "ComponentConfiguration");
final String componentName = camelCaseToDash(overrideName != null ? overrideName : model.getScheme())
.toLowerCase(Locale.US);
final Class<?> configClass = generateDummyClass(packageName + "." + configurationName);
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(Conditional.class)
.setLiteralValue("ConditionalOnCamelContextAndAutoConfigurationBeans.class");
javaClass.addAnnotation(EnableConfigurationProperties.class)
.setLiteralValue("{ComponentConfigurationProperties.class," + configurationName + ".class}");
javaClass.addAnnotation("org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties")
.setStringArrayValue("value", new String[] { "camel.component", "camel.component." + componentName });
if (complexOptions) {
String cn = name.replace("ComponentAutoConfiguration", "ComponentConverter");
javaClass.addAnnotation(AutoConfigureAfter.class)
.setLiteralValue("{CamelAutoConfiguration.class, " + cn + ".class}");
} else {
javaClass.addAnnotation(AutoConfigureAfter.class).setLiteralValue("CamelAutoConfiguration.class");
}
javaClass.addImport(ApplicationContext.class);
javaClass.addImport("org.apache.camel.CamelContext");
javaClass.addImport("org.apache.camel.Component");
javaClass.addImport("org.apache.camel.spi.ComponentCustomizer");
javaClass.addImport("org.apache.camel.spring.boot.CamelAutoConfiguration");
javaClass.addImport("org.apache.camel.spring.boot.ComponentConfigurationProperties");
javaClass.addImport("org.apache.camel.spring.boot.util.CamelPropertiesHelper");
javaClass.addImport("org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans");
javaClass.addImport("org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator");
javaClass.addImport(model.getJavaType());
javaClass.addField().setPrivate().setName("applicationContext").setType(ApplicationContext.class)
.addAnnotation(Autowired.class);
javaClass.addField().setPrivate().setFinal(true).setName("camelContext")
.setType(loadClass("org.apache.camel.CamelContext"));
javaClass.addField().setPrivate().setName("configuration").setType(configClass).addAnnotation(Autowired.class);
Method ctr = javaClass.addMethod().setConstructor(true).setPublic().setName(name)
.addParameter("org.apache.camel.CamelContext", "camelContext");
ctr.setBody("this.camelContext = camelContext;\n");
// add method for auto configure
String body = createComponentBody(model.getShortJavaType(), componentName);
String methodName = "configure" + model.getShortJavaType();
Method method = javaClass.addMethod().setName(methodName).setPublic().setBody(body)
.setReturnType(loadType("org.apache.camel.spi.ComponentCustomizer"));
method.addAnnotation(Lazy.class);
method.addAnnotation(Bean.class);
sortImports(javaClass);
String fileName = packageName.replaceAll("\\.", "\\/") + "/" + name + ".java";
writeSourceIfChanged(javaClass, fileName, false);
}