/** * 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; import java.net.MalformedURLException; import java.net.URL; import org.apache.camel.component.milo.KeyStoreLoader; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; @UriParams public class MiloClientConfiguration implements Cloneable { private static final String DEFAULT_APPLICATION_URI = "http://camel.apache.org/EclipseMilo/Client"; private static final String DEFAULT_APPLICATION_NAME = "Apache Camel adapter for Eclipse Milo"; private static final String DEFAULT_PRODUCT_URI = "http://camel.apache.org/EclipseMilo"; private String endpointUri; @UriParam private String clientId; @UriParam(label = "client", defaultValue = DEFAULT_APPLICATION_NAME) private String applicationName = DEFAULT_APPLICATION_NAME; @UriParam(label = "client", defaultValue = DEFAULT_APPLICATION_URI) private String applicationUri = DEFAULT_APPLICATION_URI; @UriParam(label = "client", defaultValue = DEFAULT_PRODUCT_URI) private String productUri = DEFAULT_PRODUCT_URI; @UriParam(label = "client") private Long requestTimeout; @UriParam(label = "client") private Long channelLifetime; @UriParam(label = "client") private String sessionName; @UriParam(label = "client") private Long sessionTimeout; @UriParam(label = "client") private Long maxPendingPublishRequests; @UriParam(label = "client") private Long maxResponseMessageSize; @UriParam(label = "client") private Boolean secureChannelReauthenticationEnabled; @UriParam(label = "client") private URL keyStoreUrl; @UriParam(label = "client") private String keyStoreType = KeyStoreLoader.DEFAULT_KEY_STORE_TYPE; @UriParam(label = "client") private String keyAlias; @UriParam(label = "client", secret = true) private String keyStorePassword; @UriParam(label = "client", secret = true) private String keyPassword; public MiloClientConfiguration() { } public MiloClientConfiguration(final MiloClientConfiguration other) { this.clientId = other.clientId; this.endpointUri = other.endpointUri; this.applicationName = other.applicationName; this.productUri = other.productUri; this.requestTimeout = other.requestTimeout; } public void setEndpointUri(final String endpointUri) { this.endpointUri = endpointUri; } public String getEndpointUri() { return this.endpointUri; } /** * A virtual client id to force the creation of a new connection instance */ public void setClientId(final String clientId) { this.clientId = clientId; } public String getClientId() { return this.clientId; } /** * The application name */ public void setApplicationName(final String applicationName) { this.applicationName = applicationName; } public String getApplicationName() { return this.applicationName; } /** * The application URI */ public void setApplicationUri(final String applicationUri) { this.applicationUri = applicationUri; } public String getApplicationUri() { return this.applicationUri; } /** * The product URI */ public void setProductUri(final String productUri) { this.productUri = productUri; } public String getProductUri() { return this.productUri; } /** * Request timeout in milliseconds */ public void setRequestTimeout(final Long reconnectTimeout) { this.requestTimeout = reconnectTimeout; } public Long getRequestTimeout() { return this.requestTimeout; } /** * Channel lifetime in milliseconds */ public void setChannelLifetime(final Long channelLifetime) { this.channelLifetime = channelLifetime; } public Long getChannelLifetime() { return this.channelLifetime; } /** * Session name */ public void setSessionName(final String sessionName) { this.sessionName = sessionName; } public String getSessionName() { return this.sessionName; } /** * Session timeout in milliseconds */ public void setSessionTimeout(final Long sessionTimeout) { this.sessionTimeout = sessionTimeout; } public Long getSessionTimeout() { return this.sessionTimeout; } /** * The maximum number of pending publish requests */ public void setMaxPendingPublishRequests(final Long maxPendingPublishRequests) { this.maxPendingPublishRequests = maxPendingPublishRequests; } public Long getMaxPendingPublishRequests() { return this.maxPendingPublishRequests; } /** * The maximum number of bytes a response message may have */ public void setMaxResponseMessageSize(final Long maxResponseMessageSize) { this.maxResponseMessageSize = maxResponseMessageSize; } public Long getMaxResponseMessageSize() { return this.maxResponseMessageSize; } /** * Whether secure channel re-authentication is enabled */ public void setSecureChannelReauthenticationEnabled(final Boolean secureChannelReauthenticationEnabled) { this.secureChannelReauthenticationEnabled = secureChannelReauthenticationEnabled; } public Boolean getSecureChannelReauthenticationEnabled() { return this.secureChannelReauthenticationEnabled; } /** * The URL where the key should be loaded from */ public void setKeyStoreUrl(final String keyStoreUrl) throws MalformedURLException { this.keyStoreUrl = keyStoreUrl != null ? new URL(keyStoreUrl) : null; } public URL getKeyStoreUrl() { return this.keyStoreUrl; } /** * The key store type */ public void setKeyStoreType(final String keyStoreType) { this.keyStoreType = keyStoreType; } public String getKeyStoreType() { return this.keyStoreType; } /** * The name of the key in the keystore file */ public void setKeyAlias(final String keyAlias) { this.keyAlias = keyAlias; } public String getKeyAlias() { return this.keyAlias; } /** * The keystore password */ public void setKeyStorePassword(final String keyStorePassword) { this.keyStorePassword = keyStorePassword; } public String getKeyStorePassword() { return this.keyStorePassword; } /** * The key password */ public void setKeyPassword(final String keyPassword) { this.keyPassword = keyPassword; } public String getKeyPassword() { return this.keyPassword; } @Override public MiloClientConfiguration clone() { return new MiloClientConfiguration(this); } public String toCacheId() { if (this.clientId != null && !this.clientId.isEmpty()) { return this.endpointUri + "|" + this.clientId; } else { return this.endpointUri; } } }