Repository: camel Updated Branches: refs/heads/master ed85770f3 -> 1ca7a4260
http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java index 50c3b61..7230dfe 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java @@ -82,6 +82,7 @@ import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.boot.context.properties.DeprecatedConfigurationProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ConditionContext; import org.springframework.context.annotation.Conditional; @@ -1174,18 +1175,15 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { private void createComponentAutoConfigurationSource( String packageName, ComponentModel model, List<String> componentAliases, String overrideComponentName) throws MojoFailureException { - final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); - - int pos = model.getJavaType().lastIndexOf("."); - String name = model.getJavaType().substring(pos + 1); - name = name.replace("Component", "ComponentAutoConfiguration"); - - String configurationName = name.replace("ComponentAutoConfiguration", "ComponentConfiguration"); + final String name = model.getJavaType().substring(model.getJavaType().lastIndexOf(".") + 1).replace("Component", "ComponentAutoConfiguration"); + final String configurationName = name.replace("ComponentAutoConfiguration", "ComponentConfiguration"); + final String componentName = (overrideComponentName != null ? overrideComponentName : model.getScheme()).toLowerCase(Locale.US); - javaClass.setPackage(packageName).setName(name); + final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); - String doc = "Generated by camel-package-maven-plugin - do not edit this file!"; - javaClass.getJavaDoc().setFullText(doc); + javaClass.setPackage(packageName); + javaClass.setName(name); + javaClass.getJavaDoc().setFullText("Generated by camel-package-maven-plugin - do not edit this file!"); javaClass.addAnnotation(Generated.class).setStringValue("value", SpringBootAutoConfigurationMojo.class.getName()); javaClass.addAnnotation(Configuration.class); javaClass.addAnnotation(Conditional.class).setLiteralValue( @@ -1196,10 +1194,9 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { ); javaClass.addImport(HashMap.class); - javaClass.addImport(Map.class); - javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); - javaClass.addImport(model.getJavaType()); javaClass.addImport(List.class); + javaClass.addImport(Map.class); + javaClass.addImport(ApplicationContext.class); javaClass.addImport(ConditionalOnBean.class); javaClass.addImport("org.slf4j.Logger"); javaClass.addImport("org.slf4j.LoggerFactory"); @@ -1209,7 +1206,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { javaClass.addImport("org.apache.camel.spring.boot.ComponentConfigurationProperties"); javaClass.addImport("org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans"); javaClass.addImport("org.apache.camel.spring.boot.util.GroupCondition"); + javaClass.addImport("org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator"); + javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); javaClass.addImport("org.apache.camel.util.ObjectHelper"); + javaClass.addImport("org.apache.camel.spi.HasId"); + javaClass.addImport(model.getJavaType()); javaClass.addField() .setPrivate() @@ -1218,30 +1219,27 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("LOGGER") .setType("Logger") .setLiteralInitializer("LoggerFactory.getLogger(" + name + ".class)"); - javaClass.addField() .setPrivate() - .setName("camelContext") - .setType("CamelContext") + .setName("applicationContext") + .setType("ApplicationContext") .addAnnotation(Autowired.class); - javaClass.addField() .setPrivate() - .setName("customizers") - .setType("List<ComponentCustomizer<" + model.getShortJavaType() + ">>") - .addAnnotation(Autowired.class).setLiteralValue("required", "false"); - - javaClass.addField() - .setPrivate() - .setName("globalConfiguration") - .setType("ComponentConfigurationProperties") + .setName("camelContext") + .setType("CamelContext") .addAnnotation(Autowired.class); - javaClass.addField() .setPrivate() - .setName("componentConfiguration") + .setName("configuration") .setType(configurationName) .addAnnotation(Autowired.class); + javaClass.addField() + .setPrivate() + .setName("customizers") + .setType("List<ComponentCustomizer<" + model.getShortJavaType() + ">>") + .addAnnotation(Autowired.class) + .setLiteralValue("required", "false"); javaClass.addNestedType( Roaster.create(JavaClassSource.class) @@ -1253,12 +1251,12 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("GroupConditions") .setConstructor(true) .setPublic() - .setBody("super(\"camel.component\", \"camel.component." + (overrideComponentName != null ? overrideComponentName : model.getScheme()).toLowerCase(Locale.US) + "\");") + .setBody("super(\"camel.component\", \"camel.component." + componentName + "\");") .getOrigin() ); // add method for auto configure - String body = createComponentBody(model.getShortJavaType()); + String body = createComponentBody(model.getShortJavaType(), componentName); String methodName = "configure" + model.getShortJavaType(); MethodSource<JavaClassSource> method = javaClass.addMethod() @@ -1284,17 +1282,15 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { private void createDataFormatAutoConfigurationSource( String packageName, DataFormatModel model, List<String> dataFormatAliases, String overrideDataFormatName) throws MojoFailureException { - final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); + final String name = model.getJavaType().substring(model.getJavaType().lastIndexOf(".") + 1).replace("DataFormat", "DataFormatAutoConfiguration"); + final String configurationName = name.replace("DataFormatAutoConfiguration", "DataFormatConfiguration"); + final String dataformatName = (overrideDataFormatName != null ? overrideDataFormatName : model.getName()).toLowerCase(Locale.US); - int pos = model.getJavaType().lastIndexOf("."); - String name = model.getJavaType().substring(pos + 1); - name = name.replace("DataFormat", "DataFormatAutoConfiguration"); - - String configurationName = name.replace("DataFormatAutoConfiguration", "DataFormatConfiguration"); - javaClass.setPackage(packageName).setName(name); + final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); - String doc = "Generated by camel-package-maven-plugin - do not edit this file!"; - javaClass.getJavaDoc().setFullText(doc); + javaClass.setPackage(packageName); + javaClass.setName(name); + javaClass.getJavaDoc().setFullText("Generated by camel-package-maven-plugin - do not edit this file!"); javaClass.addAnnotation(Generated.class).setStringValue("value", SpringBootAutoConfigurationMojo.class.getName()); javaClass.addAnnotation(Configuration.class); javaClass.addAnnotation(Conditional.class).setLiteralValue( @@ -1305,10 +1301,9 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { ); javaClass.addImport(HashMap.class); - javaClass.addImport(Map.class); - javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); - javaClass.addImport(model.getJavaType()); javaClass.addImport(List.class); + javaClass.addImport(Map.class); + javaClass.addImport(ApplicationContext.class); javaClass.addImport(ConditionalOnBean.class); javaClass.addImport("org.slf4j.Logger"); javaClass.addImport("org.slf4j.LoggerFactory"); @@ -1318,11 +1313,15 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { javaClass.addImport("org.apache.camel.spring.boot.DataFormatConfigurationProperties"); javaClass.addImport("org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans"); javaClass.addImport("org.apache.camel.spring.boot.util.GroupCondition"); + javaClass.addImport("org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator"); + javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); javaClass.addImport("org.apache.camel.util.ObjectHelper"); javaClass.addImport("org.apache.camel.RuntimeCamelException"); javaClass.addImport("org.apache.camel.spi.DataFormat"); javaClass.addImport("org.apache.camel.spi.DataFormatCustomizer"); javaClass.addImport("org.apache.camel.spi.DataFormatFactory"); + javaClass.addImport("org.apache.camel.spi.HasId"); + javaClass.addImport(model.getJavaType()); javaClass.addField() .setPrivate() @@ -1331,13 +1330,21 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("LOGGER") .setType("Logger") .setLiteralInitializer("LoggerFactory.getLogger(" + name + ".class)"); - + javaClass.addField() + .setPrivate() + .setName("applicationContext") + .setType("ApplicationContext") + .addAnnotation(Autowired.class); javaClass.addField() .setPrivate() .setName("camelContext") .setType("CamelContext") .addAnnotation(Autowired.class); - + javaClass.addField() + .setPrivate() + .setName("configuration") + .setType(configurationName) + .addAnnotation(Autowired.class); javaClass.addField() .setPrivate() .setName("customizers") @@ -1345,18 +1352,6 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .addAnnotation(Autowired.class) .setLiteralValue("required", "false"); - javaClass.addField() - .setPrivate() - .setName("globalConfiguration") - .setType("DataFormatConfigurationProperties") - .addAnnotation(Autowired.class); - - javaClass.addField() - .setPrivate() - .setName("dataformatConfiguration") - .setType(configurationName) - .addAnnotation(Autowired.class); - javaClass.addNestedType( Roaster.create(JavaClassSource.class) .setName("GroupConditions") @@ -1367,12 +1362,12 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("GroupConditions") .setConstructor(true) .setPublic() - .setBody("super(\"camel.dataformat\", \"camel.dataformat." + (overrideDataFormatName != null ? overrideDataFormatName : model.getName()).toLowerCase(Locale.US) + "\");") + .setBody("super(\"camel.dataformat\", \"camel.dataformat." + dataformatName + "\");") .getOrigin() ); - String body = createDataFormatBody(model.getShortJavaType()); + String body = createDataFormatBody(model.getShortJavaType(), dataformatName); String methodName = "configure" + model.getShortJavaType() + "Factory"; MethodSource<JavaClassSource> method = javaClass.addMethod() @@ -1398,18 +1393,15 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { private void createLanguageAutoConfigurationSource( String packageName, LanguageModel model, List<String> languageAliases, String overrideLanguageName) throws MojoFailureException { - final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); - - int pos = model.getJavaType().lastIndexOf("."); - String name = model.getJavaType().substring(pos + 1); - name = name.replace("Language", "LanguageAutoConfiguration"); - - String configurationName = name.replace("LanguageAutoConfiguration", "LanguageConfiguration"); + final String name = model.getJavaType().substring(model.getJavaType().lastIndexOf(".") + 1).replace("Language", "LanguageAutoConfiguration"); + final String configurationName = name.replace("LanguageAutoConfiguration", "LanguageConfiguration"); + final String languageName = (overrideLanguageName != null ? overrideLanguageName : model.getName()).toLowerCase(Locale.US); - javaClass.setPackage(packageName).setName(name); + final JavaClassSource javaClass = Roaster.create(JavaClassSource.class); - String doc = "Generated by camel-package-maven-plugin - do not edit this file!"; - javaClass.getJavaDoc().setFullText(doc); + javaClass.setPackage(packageName); + javaClass.setName(name); + javaClass.getJavaDoc().setFullText("Generated by camel-package-maven-plugin - do not edit this file!"); javaClass.addAnnotation(Generated.class).setStringValue("value", SpringBootAutoConfigurationMojo.class.getName()); javaClass.addAnnotation(Configuration.class); javaClass.addAnnotation(Conditional.class).setLiteralValue( @@ -1418,12 +1410,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { javaClass.addAnnotation(EnableConfigurationProperties.class).setLiteralValue( "{ LanguageConfigurationProperties.class, " + configurationName + ".class }" ); - javaClass.addImport(HashMap.class); - javaClass.addImport(Map.class); - javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); - javaClass.addImport(model.getJavaType()); + javaClass.addImport(HashMap.class); javaClass.addImport(List.class); + javaClass.addImport(Map.class); + javaClass.addImport(ApplicationContext.class); javaClass.addImport(ConditionalOnBean.class); javaClass.addImport(ConfigurableBeanFactory.class); javaClass.addImport("org.slf4j.Logger"); @@ -1434,8 +1425,12 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { javaClass.addImport("org.apache.camel.spring.boot.LanguageConfigurationProperties"); javaClass.addImport("org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans"); javaClass.addImport("org.apache.camel.spring.boot.util.GroupCondition"); + javaClass.addImport("org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator"); + javaClass.addImport("org.apache.camel.util.IntrospectionSupport"); javaClass.addImport("org.apache.camel.util.ObjectHelper"); + javaClass.addImport("org.apache.camel.spi.HasId"); javaClass.addImport("org.apache.camel.spi.LanguageCustomizer"); + javaClass.addImport(model.getJavaType()); javaClass.addField() .setPrivate() @@ -1444,30 +1439,27 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("LOGGER") .setType("Logger") .setLiteralInitializer("LoggerFactory.getLogger(" + name + ".class)"); - javaClass.addField() .setPrivate() - .setName("camelContext") - .setType("CamelContext") + .setName("applicationContext") + .setType("ApplicationContext") .addAnnotation(Autowired.class); - - javaClass.addField() - .setPrivate() - .setName("customizers") - .setType("List<LanguageCustomizer<" + model.getShortJavaType() + ">>") - .addAnnotation(Autowired.class).setLiteralValue("required", "false"); - javaClass.addField() .setPrivate() - .setName("globalConfiguration") - .setType("LanguageConfigurationProperties") + .setName("camelContext") + .setType("CamelContext") .addAnnotation(Autowired.class); - javaClass.addField() .setPrivate() - .setName("languageConfiguration") + .setName("configuration") .setType(configurationName) .addAnnotation(Autowired.class); + javaClass.addField() + .setPrivate() + .setName("customizers") + .setType("List<LanguageCustomizer<" + model.getShortJavaType() + ">>") + .addAnnotation(Autowired.class) + .setLiteralValue("required", "false"); javaClass.addNestedType( Roaster.create(JavaClassSource.class) @@ -1479,11 +1471,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { .setName("GroupConditions") .setConstructor(true) .setPublic() - .setBody("super(\"camel.component\", \"camel.component." + (overrideLanguageName != null ? overrideLanguageName : model.getName()).toLowerCase(Locale.US) + "\");") + .setBody("super(\"camel.component\", \"camel.component." + languageName + "\");") .getOrigin() ); - String body = createLanguageBody(model.getShortJavaType()); + String body = createLanguageBody(model.getShortJavaType(), languageName); String methodName = "configure" + model.getShortJavaType(); MethodSource<JavaClassSource> method = javaClass.addMethod() @@ -1531,13 +1523,13 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { writeComponentSpringFactorySource(packageName, name); } - private static String createComponentBody(String shortJavaType) { + private static String createComponentBody(String shortJavaType, String name) { StringBuilder sb = new StringBuilder(); sb.append(shortJavaType).append(" component = new ").append(shortJavaType).append("();").append("\n"); sb.append("component.setCamelContext(camelContext);\n"); sb.append("\n"); sb.append("Map<String, Object> parameters = new HashMap<>();\n"); - sb.append("IntrospectionSupport.getProperties(componentConfiguration, parameters, null, false);\n"); + sb.append("IntrospectionSupport.getProperties(configuration, parameters, null, false);\n"); sb.append("\n"); sb.append("for (Map.Entry<String, Object> entry : parameters.entrySet()) {\n"); sb.append(" Object value = entry.getValue();\n"); @@ -1558,12 +1550,24 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { sb.append("}\n"); sb.append("IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters);\n"); sb.append("\n"); - sb.append("boolean useCustomizers = globalConfiguration.getCustomizer().isEnabled() && componentConfiguration.getCustomizer().isEnabled();\n"); - sb.append("\n"); - sb.append("if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {\n"); + sb.append("if (ObjectHelper.isNotEmpty(customizers)) {\n"); sb.append(" for (ComponentCustomizer<").append(shortJavaType).append("> customizer : customizers) {\n"); - sb.append(" LOGGER.debug(\"Configure component {}, with customizer {}\", component, customizer);\n"); - sb.append(" customizer.customize(component);\n"); + sb.append("\n"); + sb.append(" boolean useCustomizer = (customizer instanceof HasId)"); + sb.append(" ? HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.component.customizer\",\n"); + sb.append(" \"camel.component.").append(name).append(".customizer\",\n"); + sb.append(" ((HasId)customizer).getId())\n"); + sb.append(" : HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.component.customizer\",\n"); + sb.append(" \"camel.component.").append(name).append(".customizer\");\n"); + sb.append("\n"); + sb.append(" if (useCustomizer) {\n"); + sb.append(" LOGGER.debug(\"Configure component {}, with customizer {}\", component, customizer);\n"); + sb.append(" customizer.customize(component);\n"); + sb.append(" }\n"); sb.append(" }\n"); sb.append("}\n"); sb.append("\n"); @@ -1572,7 +1576,7 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { return sb.toString(); } - private static String createDataFormatBody(String shortJavaType) { + private static String createDataFormatBody(String shortJavaType, String name) { StringBuilder sb = new StringBuilder(); sb.append("return new DataFormatFactory() {\n"); sb.append(" @Override\n"); @@ -1587,28 +1591,41 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { sb.append("\n"); sb.append(" try {\n"); sb.append(" Map<String, Object> parameters = new HashMap<>();\n"); - sb.append(" IntrospectionSupport.getProperties(dataformatConfiguration, parameters, null, false);\n"); + sb.append(" IntrospectionSupport.getProperties(configuration, parameters, null, false);\n"); sb.append(" IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), dataformat, parameters);\n"); sb.append(" } catch (Exception e) {\n"); sb.append(" throw new RuntimeCamelException(e);\n"); sb.append(" }\n"); sb.append("\n"); - sb.append("boolean useCustomizers = globalConfiguration.getCustomizer().isEnabled() && dataformatConfiguration.getCustomizer().isEnabled();\n"); - sb.append("\n"); - sb.append("if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {\n"); + sb.append("if (ObjectHelper.isNotEmpty(customizers)) {\n"); sb.append(" for (DataFormatCustomizer<").append(shortJavaType).append("> customizer : customizers) {\n"); - sb.append(" LOGGER.debug(\"Configure dataformat {}, with customizer {}\", dataformat, customizer);\n"); - sb.append(" customizer.customize(dataformat);\n"); + sb.append("\n"); + sb.append(" boolean useCustomizer = (customizer instanceof HasId)"); + sb.append(" ? HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.dataformat.customizer\",\n"); + sb.append(" \"camel.dataformat.").append(name).append(".customizer\",\n"); + sb.append(" ((HasId)customizer).getId())\n"); + sb.append(" : HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.dataformat.customizer\",\n"); + sb.append(" \"camel.dataformat.").append(name).append(".customizer\");\n"); + sb.append("\n"); + sb.append(" if (useCustomizer) {\n"); + sb.append(" LOGGER.debug(\"Configure dataformat {}, with customizer {}\", dataformat, customizer);\n"); + sb.append(" customizer.customize(dataformat);\n"); + sb.append(" }\n"); sb.append(" }\n"); sb.append("}\n"); sb.append("\n"); sb.append(" return dataformat;\n"); sb.append(" }\n"); sb.append("};\n"); + return sb.toString(); } - private static String createLanguageBody(String shortJavaType) { + private static String createLanguageBody(String shortJavaType, String name) { StringBuilder sb = new StringBuilder(); sb.append(shortJavaType).append(" language = new ").append(shortJavaType).append("();").append("\n"); sb.append("if (CamelContextAware.class.isAssignableFrom(").append(shortJavaType).append(".class)) {\n"); @@ -1619,19 +1636,33 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo { sb.append("}\n"); sb.append("\n"); sb.append("Map<String, Object> parameters = new HashMap<>();\n"); - sb.append("IntrospectionSupport.getProperties(languageConfiguration, parameters, null, false);\n"); + sb.append("IntrospectionSupport.getProperties(configuration, parameters, null, false);\n"); sb.append("IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), language, parameters);\n"); sb.append("\n"); - sb.append("boolean useCustomizers = globalConfiguration.getCustomizer().isEnabled() && languageConfiguration.getCustomizer().isEnabled();\n"); sb.append("\n"); - sb.append("if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {\n"); + sb.append("if (ObjectHelper.isNotEmpty(customizers)) {\n"); sb.append(" for (LanguageCustomizer<").append(shortJavaType).append("> customizer : customizers) {\n"); - sb.append(" LOGGER.debug(\"Configure language {}, with customizer {}\", language, customizer);\n"); - sb.append(" customizer.customize(language);\n"); + sb.append("\n"); + sb.append(" boolean useCustomizer = (customizer instanceof HasId)"); + sb.append(" ? HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.language.customizer\",\n"); + sb.append(" \"camel.language.").append(name).append(".customizer\",\n"); + sb.append(" ((HasId)customizer).getId())\n"); + sb.append(" : HierarchicalPropertiesEvaluator.evaluate(\n"); + sb.append(" applicationContext.getEnvironment(),\n"); + sb.append(" \"camel.language.customizer\",\n"); + sb.append(" \"camel.language.").append(name).append(".customizer\");\n"); + sb.append("\n"); + sb.append(" if (useCustomizer) {\n"); + sb.append(" LOGGER.debug(\"Configure language {}, with customizer {}\", language, customizer);\n"); + sb.append(" customizer.customize(language);\n"); + sb.append(" }\n"); sb.append(" }\n"); sb.append("}\n"); sb.append("\n"); sb.append("return language;"); + return sb.toString(); }