/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.netty.http.springboot;
import javax.annotation.Generated;
import org.apache.camel.LoggingLevel;
import org.apache.camel.component.netty.http.NettyHttpBinding;
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.spring.boot.ComponentConfigurationPropertiesCommon;
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.
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.netty-http")
public class NettyHttpComponentConfiguration
extends
ComponentConfigurationPropertiesCommon {
/**
* 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 the NettyConfiguration as configuration when creating endpoints.
*/
private NettyHttpConfigurationNestedConfiguration configuration;
/**
* 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 NettyHttpSecurityConfigurationNestedConfiguration securityConfiguration;
/**
* Enable usage of global SSL context parameters.
*/
private Boolean useGlobalSslContextParameters = false;
/**
* The core pool size for the ordered thread pool if its in use. The default
* value is 16.
*/
private Integer maximumPoolSize = 16;
/**
* Whether the component should resolve property placeholders on itself when
* starting. Only properties which are of String type can use property
* placeholders.
*/
private Boolean resolvePropertyPlaceholders = true;
public NettyHttpBinding getNettyHttpBinding() {
return nettyHttpBinding;
}
public void setNettyHttpBinding(NettyHttpBinding nettyHttpBinding) {
this.nettyHttpBinding = nettyHttpBinding;
}
public NettyHttpConfigurationNestedConfiguration getConfiguration() {
return configuration;
}
public void setConfiguration(
NettyHttpConfigurationNestedConfiguration configuration) {
this.configuration = configuration;
}
public HeaderFilterStrategy getHeaderFilterStrategy() {
return headerFilterStrategy;
}
public void setHeaderFilterStrategy(
HeaderFilterStrategy headerFilterStrategy) {
this.headerFilterStrategy = headerFilterStrategy;
}
public NettyHttpSecurityConfigurationNestedConfiguration getSecurityConfiguration() {
return securityConfiguration;
}
public void setSecurityConfiguration(
NettyHttpSecurityConfigurationNestedConfiguration securityConfiguration) {
this.securityConfiguration = securityConfiguration;
}
public Boolean getUseGlobalSslContextParameters() {
return useGlobalSslContextParameters;
}
public void setUseGlobalSslContextParameters(
Boolean useGlobalSslContextParameters) {
this.useGlobalSslContextParameters = useGlobalSslContextParameters;
}
public Integer getMaximumPoolSize() {
return maximumPoolSize;
}
public void setMaximumPoolSize(Integer maximumPoolSize) {
this.maximumPoolSize = maximumPoolSize;
}
public Boolean getResolvePropertyPlaceholders() {
return resolvePropertyPlaceholders;
}
public void setResolvePropertyPlaceholders(
Boolean resolvePropertyPlaceholders) {
this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
}
public static class NettyHttpConfigurationNestedConfiguration {
public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.netty.http.NettyHttpConfiguration.class;
/**
* The protocol to use which is either http or https
*/
private String protocol;
/**
* The local hostname such as localhost, or 0.0.0.0 when being a
* consumer. The remote HTTP server hostname when using producer.
*/
private String host;
/**
* The port number. Is default 80 for http and 443 for https.
*/
private Integer port;
/**
* Allow using gzip/deflate for compression on the Netty HTTP server if
* the client supports it from the HTTP headers.
*/
private Boolean compression = false;
/**
* Option to disable throwing the HttpOperationFailedException in case
* of failed responses from the remote server. This allows you to get
* all responses regardless of the HTTP status code.
*/
private Boolean throwExceptionOnFailure = true;
/**
* If enabled and an Exchange failed processing on the consumer side,
* and if the caused Exception was send back serialized in the response
* as a application/x-java-serialized-object content type. On the
* producer side the exception will be deserialized and thrown as is,
* instead of the HttpOperationFailedException. The caused exception is
* required to be serialized.
* <p/>
* This is by default turned off. If you enable this then be aware that
* Java will deserialize the incoming data from the request to Java and
* that can be a potential security risk.
*/
private Boolean transferException = false;
/**
* If this option is enabled, then during binding from Netty to Camel
* Message then the header values will be URL decoded (eg %20 will be a
* space character. Notice this option is used by the default
* org.apache.camel.component.netty.http.NettyHttpBinding and therefore
* if you implement a custom
* org.apache.camel.component.netty.http.NettyHttpBinding then you would
* need to decode the headers accordingly to this option.
*/
private Boolean urlDecodeHeaders = false;
/**
* If this option is enabled, then during binding from Netty to Camel
* Message then the headers will be mapped as well (eg added as header
* to the Camel Message as well). You can turn off this option to
* disable this. The headers can still be accessed from the
* org.apache.camel.component.netty.http.NettyHttpMessage message with
* the method getHttpRequest() that returns the Netty HTTP request
* org.jboss.netty.handler.codec.http.HttpRequest instance.
*/
private Boolean mapHeaders = true;
/**
* Whether or not Camel should try to find a target consumer by matching
* the URI prefix if no exact match is found.
*/
private Boolean matchOnUriPrefix = false;
/**
* If the option is true, the producer will ignore the Exchange.HTTP_URI
* header, and use the endpoint's URI for request. You may also set the
* throwExceptionOnFailure to be false to let the producer send all the
* fault response back. The consumer working in the bridge mode will
* skip the gzip compression and WWW URL form encoding (by adding the
* Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED
* headers to the consumed exchange).
*/
private Boolean bridgeEndpoint = false;
/**
* Resource path
*/
private String path;
/**
* Determines whether or not the raw input stream from Netty
* HttpRequest#getContent() is cached or not (Camel will read the stream
* into a in light-weight memory based Stream caching) cache. By default
* Camel will cache the Netty input stream to support reading it
* multiple times to ensure it Camel can retrieve all data from the
* stream. However you can set this option to true when you for example
* need to access the raw stream, such as streaming it directly to a
* file or other persistent store. Mind that if you enable this option,
* then you cannot read the Netty stream multiple times out of the box,
* and you would need manually to reset the reader index on the Netty
* raw stream.
*/
private Boolean disableStreamCache = false;
/**
* Whether to send back HTTP status code 503 when the consumer has been
* suspended. If the option is false then the Netty Acceptor is unbound
* when the consumer is suspended, so clients cannot connect anymore.
*/
private Boolean send503whenSuspended = true;
/**
* Value in bytes the max content length per chunked frame received on
* the Netty HTTP server.
*/
private Integer chunkedMaxContentLength = 1048576;
/**
* The maximum length of all headers. If the sum of the length of each
* header exceeds this value, a {@link TooLongFrameException} will be
* raised.
*/
private Integer maxHeaderSize = 8192;
private Boolean allowDefaultCodec;
/**
* The status codes which is considered a success response. The values
* are inclusive. The range must be defined as from-to with the dash
* included.
* <p/>
* The default range is <tt>200-299</tt>
*/
private String okStatusCodeRange = "200-299";
/**
* Sets whether to use a relative path in HTTP requests.
* <p/>
* Some third party backend systems such as IBM Datapower do not support
* absolute URIs in HTTP POSTs, and setting this option to <tt>true</tt>
* can work around this problem.
*/
private Boolean useRelativePath = false;
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 getCompression() {
return compression;
}
public void setCompression(Boolean compression) {
this.compression = compression;
}
public Boolean getThrowExceptionOnFailure() {
return throwExceptionOnFailure;
}
public void setThrowExceptionOnFailure(Boolean throwExceptionOnFailure) {
this.throwExceptionOnFailure = throwExceptionOnFailure;
}
public Boolean getTransferException() {
return transferException;
}
public void setTransferException(Boolean transferException) {
this.transferException = transferException;
}
public Boolean getUrlDecodeHeaders() {
return urlDecodeHeaders;
}
public void setUrlDecodeHeaders(Boolean urlDecodeHeaders) {
this.urlDecodeHeaders = urlDecodeHeaders;
}
public Boolean getMapHeaders() {
return mapHeaders;
}
public void setMapHeaders(Boolean mapHeaders) {
this.mapHeaders = mapHeaders;
}
public Boolean getMatchOnUriPrefix() {
return matchOnUriPrefix;
}
public void setMatchOnUriPrefix(Boolean matchOnUriPrefix) {
this.matchOnUriPrefix = matchOnUriPrefix;
}
public Boolean getBridgeEndpoint() {
return bridgeEndpoint;
}
public void setBridgeEndpoint(Boolean bridgeEndpoint) {
this.bridgeEndpoint = bridgeEndpoint;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Boolean getDisableStreamCache() {
return disableStreamCache;
}
public void setDisableStreamCache(Boolean disableStreamCache) {
this.disableStreamCache = disableStreamCache;
}
public Boolean getSend503whenSuspended() {
return send503whenSuspended;
}
public void setSend503whenSuspended(Boolean send503whenSuspended) {
this.send503whenSuspended = send503whenSuspended;
}
public Integer getChunkedMaxContentLength() {
return chunkedMaxContentLength;
}
public void setChunkedMaxContentLength(Integer chunkedMaxContentLength) {
this.chunkedMaxContentLength = chunkedMaxContentLength;
}
public Integer getMaxHeaderSize() {
return maxHeaderSize;
}
public void setMaxHeaderSize(Integer maxHeaderSize) {
this.maxHeaderSize = maxHeaderSize;
}
public Boolean getAllowDefaultCodec() {
return allowDefaultCodec;
}
public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
this.allowDefaultCodec = allowDefaultCodec;
}
public String getOkStatusCodeRange() {
return okStatusCodeRange;
}
public void setOkStatusCodeRange(String okStatusCodeRange) {
this.okStatusCodeRange = okStatusCodeRange;
}
public Boolean getUseRelativePath() {
return useRelativePath;
}
public void setUseRelativePath(Boolean useRelativePath) {
this.useRelativePath = useRelativePath;
}
}
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.
*/
private SecurityConstraint securityConstraint;
/**
* Sets the {@link SecurityAuthenticator} to use for authenticating the
* {@link HttpPrincipal} .
*/
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;
}
}
}