You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/04/12 08:56:03 UTC
[17/18] camel git commit: Code generated by maven build
Code generated by maven build
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0f35f553
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0f35f553
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0f35f553
Branch: refs/heads/master
Commit: 0f35f553c9ec911e22ed7afd82d741465ab14a04
Parents: a867b3c
Author: Jens Reimann <jr...@redhat.com>
Authored: Wed Apr 12 09:32:10 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Wed Apr 12 10:55:27 2017 +0200
----------------------------------------------------------------------
.../MiloClientComponentAutoConfiguration.java | 111 +++++++
.../MiloClientComponentConfiguration.java | 300 +++++++++++++++++++
.../MiloServerComponentAutoConfiguration.java | 111 +++++++
.../MiloServerComponentConfiguration.java | 277 +++++++++++++++++
...dditional-spring-configuration-metadata.json | 16 +
.../main/resources/META-INF/spring.factories | 21 ++
6 files changed, 836 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentAutoConfiguration.java
new file mode 100644
index 0000000..36e6961
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentAutoConfiguration.java
@@ -0,0 +1,111 @@
+/**
+ * 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.milo.client.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.milo.client.MiloClientComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(MiloClientComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(MiloClientComponentConfiguration.class)
+public class MiloClientComponentAutoConfiguration {
+
+ @Lazy
+ @Bean(name = "milo-client-component")
+ @ConditionalOnClass(CamelContext.class)
+ @ConditionalOnMissingBean(MiloClientComponent.class)
+ public MiloClientComponent configureMiloClientComponent(
+ CamelContext camelContext,
+ MiloClientComponentConfiguration configuration) throws Exception {
+ MiloClientComponent component = new MiloClientComponent();
+ component.setCamelContext(camelContext);
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(configuration, parameters, null,
+ false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
+ }
+ }
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ return component;
+ }
+
+ public static class Condition extends SpringBootCondition {
+ @Override
+ public ConditionOutcome getMatchOutcome(
+ ConditionContext conditionContext,
+ AnnotatedTypeMetadata annotatedTypeMetadata) {
+ boolean groupEnabled = isEnabled(conditionContext,
+ "camel.component.", true);
+ ConditionMessage.Builder message = ConditionMessage
+ .forCondition("camel.component.milo-client");
+ if (isEnabled(conditionContext, "camel.component.milo-client.",
+ groupEnabled)) {
+ return ConditionOutcome.match(message.because("enabled"));
+ }
+ return ConditionOutcome.noMatch(message.because("not enabled"));
+ }
+
+ private boolean isEnabled(
+ org.springframework.context.annotation.ConditionContext context,
+ java.lang.String prefix, boolean defaultValue) {
+ RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+ context.getEnvironment(), prefix);
+ return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
new file mode 100644
index 0000000..7597469
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
@@ -0,0 +1,300 @@
+/**
+ * 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.milo.client.springboot;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Camel OPC UA support
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@ConfigurationProperties(prefix = "camel.component.milo-client")
+public class MiloClientComponentConfiguration {
+
+ /**
+ * All default options for client
+ */
+ private MiloClientConfigurationNestedConfiguration defaultConfiguration;
+ /**
+ * Default application name
+ */
+ private String applicationName;
+ /**
+ * Default application URI
+ */
+ private String applicationUri;
+ /**
+ * Default product URI
+ */
+ private String productUri;
+ /**
+ * Default reconnect timeout
+ */
+ private Long reconnectTimeout;
+ /**
+ * 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 MiloClientConfigurationNestedConfiguration getDefaultConfiguration() {
+ return defaultConfiguration;
+ }
+
+ public void setDefaultConfiguration(
+ MiloClientConfigurationNestedConfiguration defaultConfiguration) {
+ this.defaultConfiguration = defaultConfiguration;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getApplicationUri() {
+ return applicationUri;
+ }
+
+ public void setApplicationUri(String applicationUri) {
+ this.applicationUri = applicationUri;
+ }
+
+ public String getProductUri() {
+ return productUri;
+ }
+
+ public void setProductUri(String productUri) {
+ this.productUri = productUri;
+ }
+
+ public Long getReconnectTimeout() {
+ return reconnectTimeout;
+ }
+
+ public void setReconnectTimeout(Long reconnectTimeout) {
+ this.reconnectTimeout = reconnectTimeout;
+ }
+
+ public Boolean getResolvePropertyPlaceholders() {
+ return resolvePropertyPlaceholders;
+ }
+
+ public void setResolvePropertyPlaceholders(
+ Boolean resolvePropertyPlaceholders) {
+ this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+ }
+
+ public static class MiloClientConfigurationNestedConfiguration {
+ public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.milo.client.MiloClientConfiguration.class;
+ private String endpointUri;
+ /**
+ * A virtual client id to force the creation of a new connection
+ * instance
+ */
+ private String clientId;
+ /**
+ * The application name
+ */
+ private String applicationName = "Apache Camel adapter for Eclipse Milo";
+ /**
+ * The application URI
+ */
+ private String applicationUri = "http://camel.apache.org/EclipseMilo/Client";
+ /**
+ * The product URI
+ */
+ private String productUri = "http://camel.apache.org/EclipseMilo";
+ /**
+ * Request timeout in milliseconds
+ */
+ private Long requestTimeout;
+ /**
+ * Channel lifetime in milliseconds
+ */
+ private Long channelLifetime;
+ /**
+ * Session name
+ */
+ private String sessionName;
+ /**
+ * Session timeout in milliseconds
+ */
+ private Long sessionTimeout;
+ /**
+ * The maximum number of pending publish requests
+ */
+ private Long maxPendingPublishRequests;
+ /**
+ * The maximum number of bytes a response message may have
+ */
+ private Long maxResponseMessageSize;
+ /**
+ * Whether secure channel re-authentication is enabled
+ */
+ private Boolean secureChannelReauthenticationEnabled;
+ /**
+ * The key store type
+ */
+ private String keyStoreType;
+ /**
+ * The name of the key in the keystore file
+ */
+ private String keyAlias;
+ /**
+ * The keystore password
+ */
+ private String keyStorePassword;
+ /**
+ * The key password
+ */
+ private String keyPassword;
+
+ public String getEndpointUri() {
+ return endpointUri;
+ }
+
+ public void setEndpointUri(String endpointUri) {
+ this.endpointUri = endpointUri;
+ }
+
+ public String getClientId() {
+ return clientId;
+ }
+
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getApplicationUri() {
+ return applicationUri;
+ }
+
+ public void setApplicationUri(String applicationUri) {
+ this.applicationUri = applicationUri;
+ }
+
+ public String getProductUri() {
+ return productUri;
+ }
+
+ public void setProductUri(String productUri) {
+ this.productUri = productUri;
+ }
+
+ public Long getRequestTimeout() {
+ return requestTimeout;
+ }
+
+ public void setRequestTimeout(Long requestTimeout) {
+ this.requestTimeout = requestTimeout;
+ }
+
+ public Long getChannelLifetime() {
+ return channelLifetime;
+ }
+
+ public void setChannelLifetime(Long channelLifetime) {
+ this.channelLifetime = channelLifetime;
+ }
+
+ public String getSessionName() {
+ return sessionName;
+ }
+
+ public void setSessionName(String sessionName) {
+ this.sessionName = sessionName;
+ }
+
+ public Long getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(Long sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public Long getMaxPendingPublishRequests() {
+ return maxPendingPublishRequests;
+ }
+
+ public void setMaxPendingPublishRequests(Long maxPendingPublishRequests) {
+ this.maxPendingPublishRequests = maxPendingPublishRequests;
+ }
+
+ public Long getMaxResponseMessageSize() {
+ return maxResponseMessageSize;
+ }
+
+ public void setMaxResponseMessageSize(Long maxResponseMessageSize) {
+ this.maxResponseMessageSize = maxResponseMessageSize;
+ }
+
+ public Boolean getSecureChannelReauthenticationEnabled() {
+ return secureChannelReauthenticationEnabled;
+ }
+
+ public void setSecureChannelReauthenticationEnabled(
+ Boolean secureChannelReauthenticationEnabled) {
+ this.secureChannelReauthenticationEnabled = secureChannelReauthenticationEnabled;
+ }
+
+ public String getKeyStoreType() {
+ return keyStoreType;
+ }
+
+ public void setKeyStoreType(String keyStoreType) {
+ this.keyStoreType = keyStoreType;
+ }
+
+ public String getKeyAlias() {
+ return keyAlias;
+ }
+
+ public void setKeyAlias(String keyAlias) {
+ this.keyAlias = keyAlias;
+ }
+
+ public String getKeyStorePassword() {
+ return keyStorePassword;
+ }
+
+ public void setKeyStorePassword(String keyStorePassword) {
+ this.keyStorePassword = keyStorePassword;
+ }
+
+ public String getKeyPassword() {
+ return keyPassword;
+ }
+
+ public void setKeyPassword(String keyPassword) {
+ this.keyPassword = keyPassword;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentAutoConfiguration.java
new file mode 100644
index 0000000..46d80a9
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentAutoConfiguration.java
@@ -0,0 +1,111 @@
+/**
+ * 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.milo.server.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.milo.server.MiloServerComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(MiloServerComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(MiloServerComponentConfiguration.class)
+public class MiloServerComponentAutoConfiguration {
+
+ @Lazy
+ @Bean(name = "milo-server-component")
+ @ConditionalOnClass(CamelContext.class)
+ @ConditionalOnMissingBean(MiloServerComponent.class)
+ public MiloServerComponent configureMiloServerComponent(
+ CamelContext camelContext,
+ MiloServerComponentConfiguration configuration) throws Exception {
+ MiloServerComponent component = new MiloServerComponent();
+ component.setCamelContext(camelContext);
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(configuration, parameters, null,
+ false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
+ }
+ }
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ return component;
+ }
+
+ public static class Condition extends SpringBootCondition {
+ @Override
+ public ConditionOutcome getMatchOutcome(
+ ConditionContext conditionContext,
+ AnnotatedTypeMetadata annotatedTypeMetadata) {
+ boolean groupEnabled = isEnabled(conditionContext,
+ "camel.component.", true);
+ ConditionMessage.Builder message = ConditionMessage
+ .forCondition("camel.component.milo-server");
+ if (isEnabled(conditionContext, "camel.component.milo-server.",
+ groupEnabled)) {
+ return ConditionOutcome.match(message.because("enabled"));
+ }
+ return ConditionOutcome.noMatch(message.because("not enabled"));
+ }
+
+ private boolean isEnabled(
+ org.springframework.context.annotation.ConditionContext context,
+ java.lang.String prefix, boolean defaultValue) {
+ RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+ context.getEnvironment(), prefix);
+ return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentConfiguration.java
new file mode 100644
index 0000000..0aee3db
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/server/springboot/MiloServerComponentConfiguration.java
@@ -0,0 +1,277 @@
+/**
+ * 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.milo.server.springboot;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Set;
+import java.util.function.Supplier;
+import org.apache.camel.component.milo.KeyStoreLoader.Result;
+import org.eclipse.milo.opcua.stack.core.application.CertificateManager;
+import org.eclipse.milo.opcua.stack.core.application.CertificateValidator;
+import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
+import org.eclipse.milo.opcua.stack.core.types.structured.BuildInfo;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * OPC UA Server based endpoint
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@ConfigurationProperties(prefix = "camel.component.milo-server")
+public class MiloServerComponentConfiguration {
+
+ /**
+ * The URI of the namespace defaults to urn:org:apache:camel
+ */
+ private String namespaceUri;
+ /**
+ * The application name
+ */
+ private String applicationName;
+ /**
+ * The application URI
+ */
+ private String applicationUri;
+ /**
+ * The product URI
+ */
+ private String productUri;
+ /**
+ * The TCP port the server binds to
+ */
+ private Integer bindPort;
+ /**
+ * Set whether strict endpoint URLs are enforced
+ */
+ private Boolean strictEndpointUrlsEnabled = false;
+ /**
+ * Server name
+ */
+ private String serverName;
+ /**
+ * Server hostname
+ */
+ private String hostname;
+ /**
+ * Security policies
+ */
+ private Set<SecurityPolicy> securityPolicies;
+ /**
+ * Security policies by URI or name
+ */
+ private Collection<String> securityPoliciesById;
+ /**
+ * Set user password combinations in the form of user1:pwd1user2:pwd2
+ * Usernames and passwords will be URL decoded
+ */
+ private String userAuthenticationCredentials;
+ /**
+ * Enable anonymous authentication disabled by default
+ */
+ private Boolean enableAnonymousAuthentication = false;
+ /**
+ * Set the addresses of the local addresses the server should bind to
+ */
+ private String bindAddresses;
+ /**
+ * Server build info
+ */
+ @NestedConfigurationProperty
+ private BuildInfo buildInfo;
+ /**
+ * Server certificate
+ */
+ @NestedConfigurationProperty
+ private Result serverCertificate;
+ /**
+ * Server certificate manager
+ */
+ @NestedConfigurationProperty
+ private CertificateManager certificateManager;
+ /**
+ * Validator for client certificates
+ */
+ private Supplier<CertificateValidator> certificateValidator;
+ /**
+ * Validator for client certificates using default file based approach
+ */
+ private File defaultCertificateValidator;
+ /**
+ * 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 String getNamespaceUri() {
+ return namespaceUri;
+ }
+
+ public void setNamespaceUri(String namespaceUri) {
+ this.namespaceUri = namespaceUri;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getApplicationUri() {
+ return applicationUri;
+ }
+
+ public void setApplicationUri(String applicationUri) {
+ this.applicationUri = applicationUri;
+ }
+
+ public String getProductUri() {
+ return productUri;
+ }
+
+ public void setProductUri(String productUri) {
+ this.productUri = productUri;
+ }
+
+ public Integer getBindPort() {
+ return bindPort;
+ }
+
+ public void setBindPort(Integer bindPort) {
+ this.bindPort = bindPort;
+ }
+
+ public Boolean getStrictEndpointUrlsEnabled() {
+ return strictEndpointUrlsEnabled;
+ }
+
+ public void setStrictEndpointUrlsEnabled(Boolean strictEndpointUrlsEnabled) {
+ this.strictEndpointUrlsEnabled = strictEndpointUrlsEnabled;
+ }
+
+ public String getServerName() {
+ return serverName;
+ }
+
+ public void setServerName(String serverName) {
+ this.serverName = serverName;
+ }
+
+ public String getHostname() {
+ return hostname;
+ }
+
+ public void setHostname(String hostname) {
+ this.hostname = hostname;
+ }
+
+ public Set<SecurityPolicy> getSecurityPolicies() {
+ return securityPolicies;
+ }
+
+ public void setSecurityPolicies(Set<SecurityPolicy> securityPolicies) {
+ this.securityPolicies = securityPolicies;
+ }
+
+ public Collection<String> getSecurityPoliciesById() {
+ return securityPoliciesById;
+ }
+
+ public void setSecurityPoliciesById(Collection<String> securityPoliciesById) {
+ this.securityPoliciesById = securityPoliciesById;
+ }
+
+ public String getUserAuthenticationCredentials() {
+ return userAuthenticationCredentials;
+ }
+
+ public void setUserAuthenticationCredentials(
+ String userAuthenticationCredentials) {
+ this.userAuthenticationCredentials = userAuthenticationCredentials;
+ }
+
+ public Boolean getEnableAnonymousAuthentication() {
+ return enableAnonymousAuthentication;
+ }
+
+ public void setEnableAnonymousAuthentication(
+ Boolean enableAnonymousAuthentication) {
+ this.enableAnonymousAuthentication = enableAnonymousAuthentication;
+ }
+
+ public String getBindAddresses() {
+ return bindAddresses;
+ }
+
+ public void setBindAddresses(String bindAddresses) {
+ this.bindAddresses = bindAddresses;
+ }
+
+ public BuildInfo getBuildInfo() {
+ return buildInfo;
+ }
+
+ public void setBuildInfo(BuildInfo buildInfo) {
+ this.buildInfo = buildInfo;
+ }
+
+ public Result getServerCertificate() {
+ return serverCertificate;
+ }
+
+ public void setServerCertificate(Result serverCertificate) {
+ this.serverCertificate = serverCertificate;
+ }
+
+ public CertificateManager getCertificateManager() {
+ return certificateManager;
+ }
+
+ public void setCertificateManager(CertificateManager certificateManager) {
+ this.certificateManager = certificateManager;
+ }
+
+ public Supplier<CertificateValidator> getCertificateValidator() {
+ return certificateValidator;
+ }
+
+ public void setCertificateValidator(
+ Supplier<CertificateValidator> certificateValidator) {
+ this.certificateValidator = certificateValidator;
+ }
+
+ public File getDefaultCertificateValidator() {
+ return defaultCertificateValidator;
+ }
+
+ public void setDefaultCertificateValidator(File defaultCertificateValidator) {
+ this.defaultCertificateValidator = defaultCertificateValidator;
+ }
+
+ public Boolean getResolvePropertyPlaceholders() {
+ return resolvePropertyPlaceholders;
+ }
+
+ public void setResolvePropertyPlaceholders(
+ Boolean resolvePropertyPlaceholders) {
+ this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 0000000..c370957
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,16 @@
+{
+ "properties": [
+ {
+ "defaultValue": true,
+ "name": "camel.component.milo-server.enabled",
+ "description": "Enable milo-server component",
+ "type": "java.lang.Boolean"
+ },
+ {
+ "defaultValue": true,
+ "name": "camel.component.milo-client.enabled",
+ "description": "Enable milo-client component",
+ "type": "java.lang.Boolean"
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0f35f553/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..a0065a0
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.milo.server.springboot.MiloServerComponentAutoConfiguration,\
+org.apache.camel.component.milo.client.springboot.MiloClientComponentAutoConfiguration
+