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/NettyComponentConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java b/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java index 79e95db..4627381 100644 --- a/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java +++ b/components-starter/camel-netty-starter/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java @@ -16,11 +16,12 @@ */ package org.apache.camel.component.netty.springboot; +import java.io.File; 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.NettyComponent; import org.apache.camel.component.netty.NettyServerBootstrapFactory; import org.apache.camel.component.netty.ServerPipelineFactory; import org.apache.camel.component.netty.TextLineDelimiter; @@ -31,6 +32,8 @@ 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.DeprecatedConfigurationProperty; +import org.springframework.boot.context.properties.NestedConfigurationProperty; /** * Socket level networking using TCP or UDP with the Netty 3.x library. @@ -42,351 +45,20 @@ public class NettyComponentConfiguration { /** * To use the NettyConfiguration as configuration when creating endpoints. - * Properties of the shared configuration can also be set individually. */ - private NettyConfiguration configuration; + private NettyConfigurationNestedConfiguration 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; - /** - * This option supports connection less udp sending which is a real fire and - * forget. A connected udp send receive the PortUnreachableException if no - * one is listen on the receiving port. - */ - private Boolean udpConnectionlessSending; - /** - * If the clientMode is true netty consumer will connect the address as a - * TCP client. - */ - private Boolean clientMode; - /** - * 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; - /** - * Setting to choose Multicast over UDP - */ - private Boolean broadcast; - /** - * 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; - /** - * Only used for TCP. If no codec is specified you can use this flag to - * indicate a text line based codec; if not specified or the value is false - * then Object Serialization is assumed over TCP. - */ - private Boolean textline; - /** - * 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; - /** - * The max line length to use for the textline codec. - */ - private Integer decoderMaxLineLength; - /** - * 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; - /** - * The delimiter to use for the textline codec. Possible values are LINE and - * NULL. - */ - private TextLineDelimiter delimiter; - /** - * Whether or not to auto append missing end delimiter when sending using - * the textline codec. - */ - private Boolean autoAppendDelimiter; - /** - * 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; - /** - * The encoding (a charset name) to use for the textline codec. If not - * provided Camel will use the JVM default Charset. - */ - private String encoding; - /** - * When using UDP then this option can be used to specify a network - * interface by its name such as eth0 to join a multicast group. - */ - private String networkInterface; - /** - * 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; - /** - * The netty component installs a default codec if both encoder/deocder is - * null and textline is false. Setting allowDefaultCodec to false prevents - * the netty component from installing a default codec as the first element - * in the filter chain. - */ - private Boolean allowDefaultCodec; - /** - * To use a custom ClientPipelineFactory - */ - private ClientPipelineFactory clientPipelineFactory; - public NettyConfiguration getConfiguration() { + public NettyConfigurationNestedConfiguration getConfiguration() { return configuration; } - public void setConfiguration(NettyConfiguration configuration) { + public void setConfiguration( + NettyConfigurationNestedConfiguration configuration) { this.configuration = configuration; } @@ -398,514 +70,919 @@ public class NettyComponentConfiguration { 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 getUdpConnectionlessSending() { - return udpConnectionlessSending; - } - - public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) { - this.udpConnectionlessSending = udpConnectionlessSending; - } - - public Boolean getClientMode() { - return clientMode; - } - - public void setClientMode(Boolean clientMode) { - this.clientMode = clientMode; - } - - 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 Boolean getBroadcast() { - return broadcast; - } - - public void setBroadcast(Boolean broadcast) { - this.broadcast = broadcast; - } - - 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 Boolean getTextline() { - return textline; - } - - public void setTextline(Boolean textline) { - this.textline = textline; - } - - public Map<String, Object> getOptions() { - return options; - } - - public void setOptions(Map<String, Object> options) { - this.options = options; - } - - public Integer getDecoderMaxLineLength() { - return decoderMaxLineLength; - } - - public void setDecoderMaxLineLength(Integer decoderMaxLineLength) { - this.decoderMaxLineLength = decoderMaxLineLength; - } - - public BossPool getBossPool() { - return bossPool; - } - - public void setBossPool(BossPool bossPool) { - this.bossPool = bossPool; - } - - public TextLineDelimiter getDelimiter() { - return delimiter; - } - - public void setDelimiter(TextLineDelimiter delimiter) { - this.delimiter = delimiter; - } - - public Boolean getAutoAppendDelimiter() { - return autoAppendDelimiter; - } - - public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) { - this.autoAppendDelimiter = autoAppendDelimiter; - } - - 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 String getEncoding() { - return encoding; - } - - public void setEncoding(String encoding) { - this.encoding = encoding; - } - - public String getNetworkInterface() { - return networkInterface; - } - - public void setNetworkInterface(String networkInterface) { - this.networkInterface = networkInterface; - } - - 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 Boolean getAllowDefaultCodec() { - return allowDefaultCodec; - } - - public void setAllowDefaultCodec(Boolean allowDefaultCodec) { - this.allowDefaultCodec = allowDefaultCodec; - } - - public ClientPipelineFactory getClientPipelineFactory() { - return clientPipelineFactory; - } + public static class NettyConfigurationNestedConfiguration { + public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.netty.NettyConfiguration.class; + /** + * 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; + /** + * Setting to set endpoint as one-way or request-response + */ + private Boolean sync; + /** + * Only used for TCP. If no codec is specified, you can use this flag to + * indicate a text line based codec; if not specified or the value is + * false, then Object Serialization is assumed over TCP. + */ + private Boolean textline; + /** + * The max line length to use for the textline codec. + */ + private Integer decoderMaxLineLength; + /** + * The delimiter to use for the textline codec. Possible values are LINE + * and NULL. + */ + private TextLineDelimiter delimiter = TextLineDelimiter.LINE; + /** + * Whether or not to auto append missing end delimiter when sending + * using the textline codec. + */ + private Boolean autoAppendDelimiter; + /** + * The encoding (a charset name) to use for the textline codec. If not + * provided, Camel will use the JVM default Charset. + */ + private String encoding; + /** + * 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 decoders; + /** + * 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 encoders; + /** + * A custom ChannelHandler class that can be used to perform special + * marshalling of outbound payloads. Must override + * org.jboss.netty.channel.ChannelDownStreamHandler. + */ + @NestedConfigurationProperty + @Deprecated + 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. + */ + @NestedConfigurationProperty + @Deprecated + 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 = LoggingLevel.WARN; + /** + * If the server (NettyConsumer) catches an exception then its logged + * using this logging level. + */ + private LoggingLevel serverExceptionCaughtLogLevel = LoggingLevel.WARN; + /** + * 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 = LoggingLevel.DEBUG; + /** + * The netty component installs a default codec if both, encoder/deocder + * is null and textline is false. Setting allowDefaultCodec to false + * prevents the netty component from installing a default codec as the + * first element in the filter chain. + */ + private Boolean allowDefaultCodec; + /** + * To use a custom ClientPipelineFactory + */ + @NestedConfigurationProperty + private ClientPipelineFactory clientPipelineFactory; + 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; + /** + * This option supports connection less udp sending which is a real fire + * and forget. A connected udp send receive the PortUnreachableException + * if no one is listen on the receiving port. + */ + private Boolean udpConnectionlessSending; + /** + * If the clientMode is true, netty consumer will connect the address as + * a TCP client. + */ + private Boolean clientMode; + /** + * If the useChannelBuffer is true, netty producer will turn the message + * body into {@link 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. + * <p/> + * 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; + /** + * Setting to choose Multicast over UDP + */ + private Boolean broadcast; + /** + * 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_threads*2. 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 + */ + @NestedConfigurationProperty + private SslHandler sslHandler; + /** + * To configure security using SSLContextParameters + */ + @NestedConfigurationProperty + 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 + */ + @Deprecated + private File keyStoreFile; + /** + * Server side certificate keystore to be used for encryption + */ + @Deprecated + private File trustStoreFile; + /** + * 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 = "JKS"; + /** + * Security provider to be used for payload encryption. Defaults to + * "SunX509" if not set. + */ + private String securityProvider = "SunX509"; + /** + * Password setting to use in order to encrypt/decrypt payloads sent + * using SSH + */ + private String passphrase; + /** + * To use a custom ServerPipelineFactory + */ + @NestedConfigurationProperty + private ServerPipelineFactory serverPipelineFactory; + /** + * To use a custom NettyServerBootstrapFactory + */ + @NestedConfigurationProperty + private NettyServerBootstrapFactory nettyServerBootstrapFactory; + /** + * 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 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. + */ + @NestedConfigurationProperty + 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. + */ + @NestedConfigurationProperty + private WorkerPool workerPool; + /** + * To use a explicit ChannelGroup. + */ + @NestedConfigurationProperty + private ChannelGroup channelGroup; + /** + * When using UDP then this option can be used to specify a network + * interface by its name, such as eth0 to join a multicast group. + */ + private String networkInterface; + /** + * Which protocols to enable when using SSL + */ + private String enabledProtocols = "DEFAULT_ENABLED_PROTOCOLS"; + + public Long getRequestTimeout() { + return requestTimeout; + } + + public void setRequestTimeout(Long requestTimeout) { + this.requestTimeout = requestTimeout; + } + + public Boolean getSync() { + return sync; + } + + public void setSync(Boolean sync) { + this.sync = sync; + } + + public Boolean getTextline() { + return textline; + } + + public void setTextline(Boolean textline) { + this.textline = textline; + } + + public Integer getDecoderMaxLineLength() { + return decoderMaxLineLength; + } + + public void setDecoderMaxLineLength(Integer decoderMaxLineLength) { + this.decoderMaxLineLength = decoderMaxLineLength; + } + + public TextLineDelimiter getDelimiter() { + return delimiter; + } + + public void setDelimiter(TextLineDelimiter delimiter) { + this.delimiter = delimiter; + } + + public Boolean getAutoAppendDelimiter() { + return autoAppendDelimiter; + } + + public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) { + this.autoAppendDelimiter = autoAppendDelimiter; + } + + public String getEncoding() { + return encoding; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + public List getDecoders() { + return decoders; + } + + public void setDecoders(List decoders) { + this.decoders = decoders; + } + + public List getEncoders() { + return encoders; + } + + public void setEncoders(List encoders) { + this.encoders = encoders; + } + + @Deprecated + @DeprecatedConfigurationProperty + public ChannelHandler getEncoder() { + return encoder; + } + + @Deprecated + public void setEncoder(ChannelHandler encoder) { + this.encoder = encoder; + } + + @Deprecated + @DeprecatedConfigurationProperty + public ChannelHandler getDecoder() { + return decoder; + } + + @Deprecated + 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 Boolean getAllowDefaultCodec() { + return allowDefaultCodec; + } + + public void setAllowDefaultCodec(Boolean allowDefaultCodec) { + this.allowDefaultCodec = allowDefaultCodec; + } + + public ClientPipelineFactory getClientPipelineFactory() { + return clientPipelineFactory; + } + + public void setClientPipelineFactory( + ClientPipelineFactory clientPipelineFactory) { + this.clientPipelineFactory = clientPipelineFactory; + } + + public Integer getMaximumPoolSize() { + return maximumPoolSize; + } + + public void setMaximumPoolSize(Integer maximumPoolSize) { + 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 getUdpConnectionlessSending() { + return udpConnectionlessSending; + } + + public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) { + this.udpConnectionlessSending = udpConnectionlessSending; + } + + public Boolean getClientMode() { + return clientMode; + } + + public void setClientMode(Boolean clientMode) { + this.clientMode = clientMode; + } + + 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 Boolean getBroadcast() { + return broadcast; + } + + public void setBroadcast(Boolean broadcast) { + this.broadcast = broadcast; + } + + 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 setClientPipelineFactory( - ClientPipelineFactory clientPipelineFactory) { - this.clientPipelineFactory = clientPipelineFactory; + 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; + } + + @Deprecated + @DeprecatedConfigurationProperty + public File getKeyStoreFile() { + return keyStoreFile; + } + + @Deprecated + public void setKeyStoreFile(File keyStoreFile) { + this.keyStoreFile = keyStoreFile; + } + + @Deprecated + @DeprecatedConfigurationProperty + public File getTrustStoreFile() { + return trustStoreFile; + } + + @Deprecated + public void setTrustStoreFile(File trustStoreFile) { + this.trustStoreFile = trustStoreFile; + } + + 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 NettyServerBootstrapFactory getNettyServerBootstrapFactory() { + return nettyServerBootstrapFactory; + } + + public void setNettyServerBootstrapFactory( + NettyServerBootstrapFactory nettyServerBootstrapFactory) { + this.nettyServerBootstrapFactory = nettyServerBootstrapFactory; + } + + public Map getOptions() { + return options; + } + + public void setOptions(Map 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 String getNetworkInterface() { + return networkInterface; + } + + public void setNetworkInterface(String networkInterface) { + this.networkInterface = networkInterface; + } + + public String getEnabledProtocols() { + return enabledProtocols; + } + + public void setEnabledProtocols(String enabledProtocols) { + this.enabledProtocols = enabledProtocols; + } } } \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-netty4-http-starter/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components-starter/camel-netty4-http-starter/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentAutoConfiguration.java b/components-starter/camel-netty4-http-starter/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentAutoConfiguration.java index 795c150..e79ff45 100644 --- a/components-starter/camel-netty4-http-starter/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentAutoConfiguration.java +++ b/components-starter/camel-netty4-http-starter/src/main/java/org/apache/camel/component/netty4/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;