@Bean(name = "sql-component") @ConditionalOnClass(CamelContext.class) @ConditionalOnMissingBean(SqlComponent.class) public SqlComponent configureSqlComponent( CamelContext camelContext, SqlComponentConfiguration configuration) throws Exception { SqlComponent component = new SqlComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); IntrospectionSupport.getProperties(configuration, parameters, null, false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); if (paramClass.getName().endsWith("NestedConfiguration")) { Class nestedClass = null; try { nestedClass = (Class) paramClass.getDeclaredField("CAMEL_NESTED_CLASS").get(null); HashMap<String, Object> nestedParameters = new HashMap<>(); IntrospectionSupport.getProperties(value, nestedParameters, null, false); Object nestedProperty = nestedClass.newInstance(); IntrospectionSupport.setProperties( camelContext, camelContext.getTypeConverter(), nestedProperty, nestedParameters); entry.setValue(nestedProperty); } catch (NoSuchFieldException e) { } } } IntrospectionSupport.setProperties( camelContext, camelContext.getTypeConverter(), component, parameters); return component; }
@Bean public SqlComponent sqlComponent() { SqlComponent sqlComponent = new SqlComponent(); sqlComponent.setDataSource(xaJdbcDataSource); return sqlComponent; }
@Bean public SqlComponent sql() { SqlComponent sqlComponent = new SqlComponent(); sqlComponent.setDataSource(dataSource()); return sqlComponent; }