http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java b/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java index 59767c4..b879db6 100644 --- a/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java +++ b/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java @@ -44,6 +44,26 @@ public class MQTTComponentAutoConfiguration { 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;
http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentAutoConfiguration.java b/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentAutoConfiguration.java index 491f2e1..760879e 100644 --- a/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentAutoConfiguration.java +++ b/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentAutoConfiguration.java @@ -44,6 +44,26 @@ public class MsvComponentAutoConfiguration { 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; http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentConfiguration.java b/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentConfiguration.java index 71454bd..f8712c2 100644 --- a/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentConfiguration.java +++ b/components-starter/camel-msv-starter/src/main/java/org/apache/camel/component/validator/msv/springboot/MsvComponentConfiguration.java @@ -19,6 +19,7 @@ package org.apache.camel.component.validator.msv.springboot; import javax.xml.validation.SchemaFactory; import org.apache.camel.component.validator.ValidatorResourceResolverFactory; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * Validates the payload of a message using the MSV Library. @@ -36,6 +37,7 @@ public class MsvComponentConfiguration { * To use a custom LSResourceResolver which depends on a dynamic endpoint * resource URI */ + @NestedConfigurationProperty private ValidatorResourceResolverFactory resourceResolverFactory; public SchemaFactory getSchemaFactory() { http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentAutoConfiguration.java b/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentAutoConfiguration.java index ae06419..a33cb1c 100644 --- a/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentAutoConfiguration.java +++ b/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentAutoConfiguration.java @@ -45,6 +45,26 @@ public class MustacheComponentAutoConfiguration { 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; http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentConfiguration.java b/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentConfiguration.java index 2f789e3..cc28b40 100644 --- a/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentConfiguration.java +++ b/components-starter/camel-mustache-starter/src/main/java/org/apache/camel/component/mustache/springboot/MustacheComponentConfiguration.java @@ -18,6 +18,7 @@ package org.apache.camel.component.mustache.springboot; import com.github.mustachejava.MustacheFactory; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * Transforms the message using a Mustache template. @@ -30,6 +31,7 @@ public class MustacheComponentConfiguration { /** * To use a custom MustacheFactory */ + @NestedConfigurationProperty private MustacheFactory mustacheFactory; public MustacheFactory getMustacheFactory() { http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentAutoConfiguration.java b/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentAutoConfiguration.java index d30be73..9be5da8 100644 --- a/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentAutoConfiguration.java +++ b/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentAutoConfiguration.java @@ -45,6 +45,26 @@ public class MyBatisComponentAutoConfiguration { 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; http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentConfiguration.java b/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentConfiguration.java index 2c3fee8..2c37b8d 100644 --- a/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentConfiguration.java +++ b/components-starter/camel-mybatis-starter/src/main/java/org/apache/camel/component/mybatis/springboot/MyBatisComponentConfiguration.java @@ -18,6 +18,7 @@ package org.apache.camel.component.mybatis.springboot; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * Performs a query poll insert update or delete in a relational database using @@ -31,6 +32,7 @@ public class MyBatisComponentConfiguration { /** * To use the SqlSessionFactory */ + @NestedConfigurationProperty private SqlSessionFactory sqlSessionFactory; /** * Location of MyBatis xml configuration file. The default value is: http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentAutoConfiguration.java b/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentAutoConfiguration.java index cf6ab90..6021d12 100644 --- a/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentAutoConfiguration.java +++ b/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentAutoConfiguration.java @@ -44,6 +44,26 @@ public class NagiosComponentAutoConfiguration { 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; http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java b/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java index afc8604..e984a80 100644 --- a/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java +++ b/components-starter/camel-nagios-starter/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java @@ -16,8 +16,10 @@ */ package org.apache.camel.component.nagios.springboot; -import org.apache.camel.component.nagios.NagiosConfiguration; +import com.googlecode.jsendnsca.core.NagiosSettings; +import org.apache.camel.component.nagios.NagiosEncryptionMethod; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * To send passive checks to Nagios using JSendNSCA. @@ -30,13 +32,100 @@ public class NagiosComponentConfiguration { /** * To use a shared NagiosConfiguration */ - private NagiosConfiguration configuration; + private NagiosConfigurationNestedConfiguration configuration; - public NagiosConfiguration getConfiguration() { + public NagiosConfigurationNestedConfiguration getConfiguration() { return configuration; } - public void setConfiguration(NagiosConfiguration configuration) { + public void setConfiguration( + NagiosConfigurationNestedConfiguration configuration) { this.configuration = configuration; } + + public static class NagiosConfigurationNestedConfiguration { + public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.nagios.NagiosConfiguration.class; + @NestedConfigurationProperty + private NagiosSettings nagiosSettings; + /** + * This is the address of the Nagios host where checks should be send. + */ + private String host; + /** + * The port number of the host. + */ + private Integer port; + /** + * Connection timeout in millis. + */ + private Integer connectionTimeout; + /** + * Sending timeout in millis. + */ + private Integer timeout; + /** + * Password to be authenticated when sending checks to Nagios. + */ + private String password; + /** + * To specify an encryption method. + */ + private NagiosEncryptionMethod encryptionMethod; + + public NagiosSettings getNagiosSettings() { + return nagiosSettings; + } + + public void setNagiosSettings(NagiosSettings nagiosSettings) { + this.nagiosSettings = nagiosSettings; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public Integer getConnectionTimeout() { + return connectionTimeout; + } + + public void setConnectionTimeout(Integer connectionTimeout) { + this.connectionTimeout = connectionTimeout; + } + + public Integer getTimeout() { + return timeout; + } + + public void setTimeout(Integer timeout) { + this.timeout = timeout; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public NagiosEncryptionMethod getEncryptionMethod() { + return encryptionMethod; + } + + public void setEncryptionMethod(NagiosEncryptionMethod encryptionMethod) { + this.encryptionMethod = encryptionMethod; + } + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentAutoConfiguration.java b/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentAutoConfiguration.java index 8fee1e5..cf7f6f6 100644 --- a/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentAutoConfiguration.java +++ b/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentAutoConfiguration.java @@ -45,6 +45,26 @@ public class NettyHttpComponentAutoConfiguration { 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; http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java b/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java index 1415e63..5082b77 100644 --- a/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java +++ b/components-starter/camel-netty-http-starter/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java @@ -16,23 +16,14 @@ */ package org.apache.camel.component.netty.http.springboot; -import java.util.List; -import java.util.Map; import org.apache.camel.LoggingLevel; -import org.apache.camel.component.netty.ClientPipelineFactory; import org.apache.camel.component.netty.NettyConfiguration; -import org.apache.camel.component.netty.NettyServerBootstrapFactory; -import org.apache.camel.component.netty.ServerPipelineFactory; import org.apache.camel.component.netty.http.NettyHttpBinding; -import org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration; +import org.apache.camel.component.netty.http.SecurityAuthenticator; +import org.apache.camel.component.netty.http.SecurityConstraint; import org.apache.camel.spi.HeaderFilterStrategy; -import org.apache.camel.util.jsse.SSLContextParameters; -import org.jboss.netty.channel.ChannelHandler; -import org.jboss.netty.channel.group.ChannelGroup; -import org.jboss.netty.channel.socket.nio.BossPool; -import org.jboss.netty.channel.socket.nio.WorkerPool; -import org.jboss.netty.handler.ssl.SslHandler; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * Netty HTTP server and client using the Netty 3.x library. @@ -46,307 +37,30 @@ public class NettyHttpComponentConfiguration { * To use a custom org.apache.camel.component.netty.http.NettyHttpBinding * for binding to/from Netty and Camel Message API. */ + @NestedConfigurationProperty private NettyHttpBinding nettyHttpBinding; /** * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter * headers. */ + @NestedConfigurationProperty private HeaderFilterStrategy headerFilterStrategy; /** * Refers to a * org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for * configuring secure web resources. */ - private NettyHttpSecurityConfiguration securityConfiguration; + private NettyHttpSecurityConfigurationNestedConfiguration securityConfiguration; /** * To use the NettyConfiguration as configuration when creating endpoints. - * Properties of the shared configuration can also be set individually. */ + @NestedConfigurationProperty private NettyConfiguration configuration; /** * The core pool size for the ordered thread pool if its in use. The default * value is 16. */ private Integer maximumPoolSize; - /** - * Whether to use ordered thread pool to ensure events are processed orderly - * on the same channel. See details at the netty javadoc of - * org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor - * for more details. - */ - private Boolean orderedThreadPoolExecutor; - /** - * Sets the cap on the number of objects that can be allocated by the pool - * (checked out to clients or idle awaiting checkout) at a given time. Use a - * negative value for no limit. - */ - private Integer producerPoolMaxActive; - /** - * Sets the minimum number of instances allowed in the producer pool before - * the evictor thread (if active) spawns new objects. - */ - private Integer producerPoolMinIdle; - /** - * Sets the cap on the number of idle instances in the pool. - */ - private Integer producerPoolMaxIdle; - /** - * Sets the minimum amount of time (value in millis) an object may sit idle - * in the pool before it is eligible for eviction by the idle object - * evictor. - */ - private long producerPoolMinEvictableIdle; - /** - * Whether producer pool is enabled or not. Important: Do not turn this off - * as the pooling is needed for handling concurrency and reliable - * request/reply. - */ - private Boolean producerPoolEnabled; - /** - * If the useChannelBuffer is true netty producer will turn the message body - * into ChannelBuffer before sending it out. - */ - private Boolean useChannelBuffer; - /** - * The maximum total size of the queued events per channel when using - * orderedThreadPoolExecutor. Specify 0 to disable. - */ - private long maxChannelMemorySize; - /** - * The maximum total size of the queued events for this pool when using - * orderedThreadPoolExecutor. Specify 0 to disable. - */ - private long maxTotalMemorySize; - /** - * The protocol to use which can be tcp or udp. - */ - private String protocol; - /** - * The hostname. For the consumer the hostname is localhost or 0.0.0.0 For - * the producer the hostname is the remote host to connect to - */ - private String host; - /** - * The host port number - */ - private Integer port; - /** - * The TCP/UDP buffer sizes to be used during outbound communication. Size - * is bytes. - */ - private long sendBufferSize; - /** - * The TCP/UDP buffer sizes to be used during inbound communication. Size is - * bytes. - */ - private long receiveBufferSize; - /** - * Configures the buffer size predictor. See details at Jetty documentation - * and this mail thread. - */ - private Integer receiveBufferSizePredictor; - /** - * When netty works on nio mode it uses default workerCount parameter from - * Netty which is cpu_core_threads2. User can use this operation to override - * the default workerCount from Netty - */ - private Integer workerCount; - /** - * When netty works on nio mode it uses default bossCount parameter from - * Netty which is 1. User can use this operation to override the default - * bossCount from Netty - */ - private Integer bossCount; - /** - * Setting to ensure socket is not closed due to inactivity - */ - private Boolean keepAlive; - /** - * Setting to improve TCP protocol performance - */ - private Boolean tcpNoDelay; - /** - * Setting to facilitate socket multiplexing - */ - private Boolean reuseAddress; - /** - * Time to wait for a socket connection to be available. Value is in millis. - */ - private long connectTimeout; - /** - * Allows to configure a backlog for netty consumer (server). Note the - * backlog is just a best effort depending on the OS. Setting this option to - * a value such as 200 500 or 1000 tells the TCP stack how long the accept - * queue can be If this option is not configured then the backlog depends on - * OS setting. - */ - private Integer backlog; - /** - * Setting to specify whether SSL encryption is applied to this endpoint - */ - private Boolean ssl; - /** - * When enabled and in SSL mode then the Netty consumer will enrich the - * Camel Message with headers having information about the client - * certificate such as subject name issuer name serial number and the valid - * date range. - */ - private Boolean sslClientCertHeaders; - /** - * Reference to a class that could be used to return an SSL Handler - */ - private SslHandler sslHandler; - /** - * To configure security using SSLContextParameters - */ - private SSLContextParameters sslContextParameters; - /** - * Configures whether the server needs client authentication when using SSL. - */ - private Boolean needClientAuth; - /** - * Client side certificate keystore to be used for encryption. Is loaded by - * default from classpath but you can prefix with classpath: file: or http: - * to load the resource from different systems. - */ - private String keyStoreResource; - /** - * Server side certificate keystore to be used for encryption. Is loaded by - * default from classpath but you can prefix with classpath: file: or http: - * to load the resource from different systems. - */ - private String trustStoreResource; - /** - * Keystore format to be used for payload encryption. Defaults to JKS if not - * set - */ - private String keyStoreFormat; - /** - * Security provider to be used for payload encryption. Defaults to SunX509 - * if not set. - */ - private String securityProvider; - /** - * Password setting to use in order to encrypt/decrypt payloads sent using - * SSH - */ - private String passphrase; - /** - * To use a custom ServerPipelineFactory - */ - private ServerPipelineFactory serverPipelineFactory; - /** - * Allows to use a timeout for the Netty producer when calling a remote - * server. By default no timeout is in use. The value is in milli seconds so - * eg 30000 is 30 seconds. The requestTimeout is using Netty's - * ReadTimeoutHandler to trigger the timeout. - */ - private long requestTimeout; - /** - * To use a custom NettyServerBootstrapFactory - */ - private NettyServerBootstrapFactory nettyServerBootstrapFactory; - /** - * Setting to set endpoint as one-way or request-response - */ - private Boolean sync; - /** - * Allows to configure additional netty options using option. as prefix. For - * example option.child.keepAlive=false to set the netty option - * child.keepAlive=false. See the Netty documentation for possible options - * that can be used. - */ - private Map<String, Object> options; - /** - * To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss - * thread pool. For example to share a thread pool with multiple consumers. - * By default each consumer has their own boss pool with 1 core thread. - */ - private BossPool bossPool; - /** - * To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the - * worker thread pool. For example to share a thread pool with multiple - * consumers. By default each consumer has their own worker pool with 2 x - * cpu count core threads. - */ - private WorkerPool workerPool; - /** - * To use a explicit ChannelGroup. - */ - private ChannelGroup channelGroup; - /** - * A list of decoders to be used. You can use a String which have values - * separated by comma and have the values be looked up in the Registry. Just - * remember to prefix the value with so Camel knows it should lookup. - */ - private List<ChannelHandler> decoders; - /** - * Which protocols to enable when using SSL - */ - private String enabledProtocols; - /** - * A list of encoders to be used. You can use a String which have values - * separated by comma and have the values be looked up in the Registry. Just - * remember to prefix the value with so Camel knows it should lookup. - */ - private List<ChannelHandler> encoders; - /** - * A custom ChannelHandler class that can be used to perform special - * marshalling of outbound payloads. Must override - * org.jboss.netty.channel.ChannelDownStreamHandler. - */ - private ChannelHandler encoder; - /** - * A custom ChannelHandler class that can be used to perform special - * marshalling of inbound payloads. Must override - * org.jboss.netty.channel.ChannelUpStreamHandler. - */ - private ChannelHandler decoder; - /** - * Whether or not to disconnect(close) from Netty Channel right after use. - * Can be used for both consumer and producer. - */ - private Boolean disconnect; - /** - * Channels can be lazily created to avoid exceptions if the remote server - * is not up and running when the Camel producer is started. - */ - private Boolean lazyChannelCreation; - /** - * Only used for TCP. You can transfer the exchange over the wire instead of - * just the body. The following fields are transferred: In body Out body - * fault body In headers Out headers fault headers exchange properties - * exchange exception. This requires that the objects are serializable. - * Camel will exclude any non-serializable objects and log it at WARN level. - */ - private Boolean transferExchange; - /** - * If sync is enabled then this option dictates NettyConsumer if it should - * disconnect where there is no reply to send back. - */ - private Boolean disconnectOnNoReply; - /** - * If sync is enabled this option dictates NettyConsumer which logging level - * to use when logging a there is no reply to send back. - */ - private LoggingLevel noReplyLogLevel; - /** - * If the server (NettyConsumer) catches an exception then its logged using - * this logging level. - */ - private LoggingLevel serverExceptionCaughtLogLevel; - /** - * If the server (NettyConsumer) catches an - * java.nio.channels.ClosedChannelException then its logged using this - * logging level. This is used to avoid logging the closed channel - * exceptions as clients can disconnect abruptly and then cause a flood of - * closed exceptions in the Netty server. - */ - private LoggingLevel serverClosedChannelExceptionCaughtLogLevel; - /** - * To use a custom ClientPipelineFactory - */ - private ClientPipelineFactory clientPipelineFactory; public NettyHttpBinding getNettyHttpBinding() { return nettyHttpBinding; @@ -365,12 +79,12 @@ public class NettyHttpComponentConfiguration { this.headerFilterStrategy = headerFilterStrategy; } - public NettyHttpSecurityConfiguration getSecurityConfiguration() { + public NettyHttpSecurityConfigurationNestedConfiguration getSecurityConfiguration() { return securityConfiguration; } public void setSecurityConfiguration( - NettyHttpSecurityConfiguration securityConfiguration) { + NettyHttpSecurityConfigurationNestedConfiguration securityConfiguration) { this.securityConfiguration = securityConfiguration; } @@ -390,434 +104,104 @@ public class NettyHttpComponentConfiguration { this.maximumPoolSize = maximumPoolSize; } - public Boolean getOrderedThreadPoolExecutor() { - return orderedThreadPoolExecutor; - } - - public void setOrderedThreadPoolExecutor(Boolean orderedThreadPoolExecutor) { - this.orderedThreadPoolExecutor = orderedThreadPoolExecutor; - } - - public Integer getProducerPoolMaxActive() { - return producerPoolMaxActive; - } - - public void setProducerPoolMaxActive(Integer producerPoolMaxActive) { - this.producerPoolMaxActive = producerPoolMaxActive; - } - - public Integer getProducerPoolMinIdle() { - return producerPoolMinIdle; - } - - public void setProducerPoolMinIdle(Integer producerPoolMinIdle) { - this.producerPoolMinIdle = producerPoolMinIdle; - } - - public Integer getProducerPoolMaxIdle() { - return producerPoolMaxIdle; - } - - public void setProducerPoolMaxIdle(Integer producerPoolMaxIdle) { - this.producerPoolMaxIdle = producerPoolMaxIdle; - } - - public long getProducerPoolMinEvictableIdle() { - return producerPoolMinEvictableIdle; - } - - public void setProducerPoolMinEvictableIdle( - long producerPoolMinEvictableIdle) { - this.producerPoolMinEvictableIdle = producerPoolMinEvictableIdle; - } - - public Boolean getProducerPoolEnabled() { - return producerPoolEnabled; - } - - public void setProducerPoolEnabled(Boolean producerPoolEnabled) { - this.producerPoolEnabled = producerPoolEnabled; - } - - public Boolean getUseChannelBuffer() { - return useChannelBuffer; - } - - public void setUseChannelBuffer(Boolean useChannelBuffer) { - this.useChannelBuffer = useChannelBuffer; - } - - public long getMaxChannelMemorySize() { - return maxChannelMemorySize; - } - - public void setMaxChannelMemorySize(long maxChannelMemorySize) { - this.maxChannelMemorySize = maxChannelMemorySize; - } - - public long getMaxTotalMemorySize() { - return maxTotalMemorySize; - } - - public void setMaxTotalMemorySize(long maxTotalMemorySize) { - this.maxTotalMemorySize = maxTotalMemorySize; - } - - public String getProtocol() { - return protocol; - } - - public void setProtocol(String protocol) { - this.protocol = protocol; - } - - public String getHost() { - return host; - } - - public void setHost(String host) { - this.host = host; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public long getSendBufferSize() { - return sendBufferSize; - } - - public void setSendBufferSize(long sendBufferSize) { - this.sendBufferSize = sendBufferSize; - } - - public long getReceiveBufferSize() { - return receiveBufferSize; - } - - public void setReceiveBufferSize(long receiveBufferSize) { - this.receiveBufferSize = receiveBufferSize; - } - - public Integer getReceiveBufferSizePredictor() { - return receiveBufferSizePredictor; - } - - public void setReceiveBufferSizePredictor(Integer receiveBufferSizePredictor) { - this.receiveBufferSizePredictor = receiveBufferSizePredictor; - } - - public Integer getWorkerCount() { - return workerCount; - } - - public void setWorkerCount(Integer workerCount) { - this.workerCount = workerCount; - } - - public Integer getBossCount() { - return bossCount; - } - - public void setBossCount(Integer bossCount) { - this.bossCount = bossCount; - } - - public Boolean getKeepAlive() { - return keepAlive; - } - - public void setKeepAlive(Boolean keepAlive) { - this.keepAlive = keepAlive; - } - - public Boolean getTcpNoDelay() { - return tcpNoDelay; - } - - public void setTcpNoDelay(Boolean tcpNoDelay) { - this.tcpNoDelay = tcpNoDelay; - } - - public Boolean getReuseAddress() { - return reuseAddress; - } - - public void setReuseAddress(Boolean reuseAddress) { - this.reuseAddress = reuseAddress; - } - - public long getConnectTimeout() { - return connectTimeout; - } - - public void setConnectTimeout(long connectTimeout) { - this.connectTimeout = connectTimeout; - } - - public Integer getBacklog() { - return backlog; - } - - public void setBacklog(Integer backlog) { - this.backlog = backlog; - } - - public Boolean getSsl() { - return ssl; - } - - public void setSsl(Boolean ssl) { - this.ssl = ssl; - } - - public Boolean getSslClientCertHeaders() { - return sslClientCertHeaders; - } - - public void setSslClientCertHeaders(Boolean sslClientCertHeaders) { - this.sslClientCertHeaders = sslClientCertHeaders; - } - - public SslHandler getSslHandler() { - return sslHandler; - } - - public void setSslHandler(SslHandler sslHandler) { - this.sslHandler = sslHandler; - } - - public SSLContextParameters getSslContextParameters() { - return sslContextParameters; - } - - public void setSslContextParameters( - SSLContextParameters sslContextParameters) { - this.sslContextParameters = sslContextParameters; - } - - public Boolean getNeedClientAuth() { - return needClientAuth; - } - - public void setNeedClientAuth(Boolean needClientAuth) { - this.needClientAuth = needClientAuth; - } - - public String getKeyStoreResource() { - return keyStoreResource; - } - - public void setKeyStoreResource(String keyStoreResource) { - this.keyStoreResource = keyStoreResource; - } - - public String getTrustStoreResource() { - return trustStoreResource; - } - - public void setTrustStoreResource(String trustStoreResource) { - this.trustStoreResource = trustStoreResource; - } - - public String getKeyStoreFormat() { - return keyStoreFormat; - } - - public void setKeyStoreFormat(String keyStoreFormat) { - this.keyStoreFormat = keyStoreFormat; - } - - public String getSecurityProvider() { - return securityProvider; - } - - public void setSecurityProvider(String securityProvider) { - this.securityProvider = securityProvider; - } - - public String getPassphrase() { - return passphrase; - } - - public void setPassphrase(String passphrase) { - this.passphrase = passphrase; - } - - public ServerPipelineFactory getServerPipelineFactory() { - return serverPipelineFactory; - } - - public void setServerPipelineFactory( - ServerPipelineFactory serverPipelineFactory) { - this.serverPipelineFactory = serverPipelineFactory; - } - - public long getRequestTimeout() { - return requestTimeout; - } - - public void setRequestTimeout(long requestTimeout) { - this.requestTimeout = requestTimeout; - } - - public NettyServerBootstrapFactory getNettyServerBootstrapFactory() { - return nettyServerBootstrapFactory; - } - - public void setNettyServerBootstrapFactory( - NettyServerBootstrapFactory nettyServerBootstrapFactory) { - this.nettyServerBootstrapFactory = nettyServerBootstrapFactory; - } - - public Boolean getSync() { - return sync; - } - - public void setSync(Boolean sync) { - this.sync = sync; - } - - public Map<String, Object> getOptions() { - return options; - } - - public void setOptions(Map<String, Object> options) { - this.options = options; - } - - public BossPool getBossPool() { - return bossPool; - } - - public void setBossPool(BossPool bossPool) { - this.bossPool = bossPool; - } - - public WorkerPool getWorkerPool() { - return workerPool; - } - - public void setWorkerPool(WorkerPool workerPool) { - this.workerPool = workerPool; - } - - public ChannelGroup getChannelGroup() { - return channelGroup; - } - - public void setChannelGroup(ChannelGroup channelGroup) { - this.channelGroup = channelGroup; - } - - public List<ChannelHandler> getDecoders() { - return decoders; - } - - public void setDecoders(List<ChannelHandler> decoders) { - this.decoders = decoders; - } - - public String getEnabledProtocols() { - return enabledProtocols; - } - - public void setEnabledProtocols(String enabledProtocols) { - this.enabledProtocols = enabledProtocols; - } - - public List<ChannelHandler> getEncoders() { - return encoders; - } - - public void setEncoders(List<ChannelHandler> encoders) { - this.encoders = encoders; - } - - public ChannelHandler getEncoder() { - return encoder; - } - - public void setEncoder(ChannelHandler encoder) { - this.encoder = encoder; - } - - public ChannelHandler getDecoder() { - return decoder; - } - - public void setDecoder(ChannelHandler decoder) { - this.decoder = decoder; - } - - public Boolean getDisconnect() { - return disconnect; - } - - public void setDisconnect(Boolean disconnect) { - this.disconnect = disconnect; - } - - public Boolean getLazyChannelCreation() { - return lazyChannelCreation; - } - - public void setLazyChannelCreation(Boolean lazyChannelCreation) { - this.lazyChannelCreation = lazyChannelCreation; - } - - public Boolean getTransferExchange() { - return transferExchange; - } - - public void setTransferExchange(Boolean transferExchange) { - this.transferExchange = transferExchange; - } - - public Boolean getDisconnectOnNoReply() { - return disconnectOnNoReply; - } - - public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) { - this.disconnectOnNoReply = disconnectOnNoReply; - } - - public LoggingLevel getNoReplyLogLevel() { - return noReplyLogLevel; - } - - public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) { - this.noReplyLogLevel = noReplyLogLevel; - } - - public LoggingLevel getServerExceptionCaughtLogLevel() { - return serverExceptionCaughtLogLevel; - } - - public void setServerExceptionCaughtLogLevel( - LoggingLevel serverExceptionCaughtLogLevel) { - this.serverExceptionCaughtLogLevel = serverExceptionCaughtLogLevel; - } - - public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() { - return serverClosedChannelExceptionCaughtLogLevel; - } - - public void setServerClosedChannelExceptionCaughtLogLevel( - LoggingLevel serverClosedChannelExceptionCaughtLogLevel) { - this.serverClosedChannelExceptionCaughtLogLevel = serverClosedChannelExceptionCaughtLogLevel; - } - - public ClientPipelineFactory getClientPipelineFactory() { - return clientPipelineFactory; - } - - public void setClientPipelineFactory( - ClientPipelineFactory clientPipelineFactory) { - this.clientPipelineFactory = clientPipelineFactory; + public static class NettyHttpSecurityConfigurationNestedConfiguration { + public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration.class; + /** + * Whether to enable authentication + * <p/> + * This is by default enabled. + */ + private Boolean authenticate; + /** + * The supported restricted. + * <p/> + * Currently only Basic is supported. + */ + private String constraint; + /** + * Sets the name of the realm to use. + */ + private String realm; + /** + * Sets a {@link SecurityConstraint} to use for checking if a web + * resource is restricted or not + * <p/> + * By default this is <tt>null</tt>, which means all resources is + * restricted. + */ + @NestedConfigurationProperty + private SecurityConstraint securityConstraint; + /** + * Sets the {@link SecurityAuthenticator} to use for authenticating the + * {@link HttpPrincipal} . + */ + @NestedConfigurationProperty + private SecurityAuthenticator securityAuthenticator; + /** + * Sets a logging level to use for logging denied login attempts (incl + * stacktraces) + * <p/> + * This level is by default DEBUG. + */ + private LoggingLevel loginDeniedLoggingLevel; + private String roleClassName; + + public Boolean getAuthenticate() { + return authenticate; + } + + public void setAuthenticate(Boolean authenticate) { + this.authenticate = authenticate; + } + + public String getConstraint() { + return constraint; + } + + public void setConstraint(String constraint) { + this.constraint = constraint; + } + + public String getRealm() { + return realm; + } + + public void setRealm(String realm) { + this.realm = realm; + } + + public SecurityConstraint getSecurityConstraint() { + return securityConstraint; + } + + public void setSecurityConstraint(SecurityConstraint securityConstraint) { + this.securityConstraint = securityConstraint; + } + + public SecurityAuthenticator getSecurityAuthenticator() { + return securityAuthenticator; + } + + public void setSecurityAuthenticator( + SecurityAuthenticator securityAuthenticator) { + this.securityAuthenticator = securityAuthenticator; + } + + public LoggingLevel getLoginDeniedLoggingLevel() { + return loginDeniedLoggingLevel; + } + + public void setLoginDeniedLoggingLevel( + LoggingLevel loginDeniedLoggingLevel) { + this.loginDeniedLoggingLevel = loginDeniedLoggingLevel; + } + + public String getRoleClassName() { + return roleClassName; + } + + public void setRoleClassName(String roleClassName) { + this.roleClassName = roleClassName; + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentAutoConfiguration.java b/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentAutoConfiguration.java index 938f958..6aa5c7e 100644 --- a/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentAutoConfiguration.java +++ b/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentAutoConfiguration.java @@ -44,6 +44,26 @@ public class NettyComponentAutoConfiguration { 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;