/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. 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.wso2.carbon.databridge.agent.conf;
import org.wso2.carbon.databridge.agent.exception.DataEndpointAgentConfigurationException;
import org.wso2.carbon.databridge.agent.util.DataEndpointConstants;
import javax.xml.bind.annotation.XmlElement;
/**
* This class has the Agent's POJO representation of the XML data-agent-config.xml.
*/
public class AgentConfiguration {
private String dataEndpointName;
private String className;
private String trustStore;
private int corePoolSize;
private int maxPoolSize;
private int keepAliveTimeInPool;
private String trustStorePassword;
private int reconnectionInterval;
private int queueSize;
private int batchSize;
private int maxTransportPoolSize;
private int maxIdleConnections;
private int minIdleTimeInPool;
private int evictionTimePeriod;
private int secureMaxTransportPoolSize;
private int secureMaxIdleConnections;
private int secureMinIdleTimeInPool;
private int secureEvictionTimePeriod;
private int socketTimeoutMS;
private String publishingStrategy = DataEndpointConstants.ASYNC_STRATEGY;
private String sslEnabledProtocols;
private String ciphers;
@XmlElement(name = "Name")
public String getDataEndpointName() {
return dataEndpointName;
}
@XmlElement(name = "DataEndpointClass")
public String getClassName() {
return className;
}
@XmlElement(name = "TrustSore")
public String getTrustStore() {
return trustStore;
}
public void setTrustStore(String trustStore) {
if (trustStore != null) {
this.trustStore = trustStore.trim();
} else {
this.trustStore = null;
}
}
@XmlElement(name = "TrustSorePassword")
public String getTrustStorePassword() {
return trustStorePassword;
}
public void setTrustStorePassword(String trustStorePassword) {
if (trustStorePassword != null) {
this.trustStorePassword = trustStorePassword.trim();
} else {
this.trustStorePassword = null;
}
}
@XmlElement(name = "QueueSize")
public int getQueueSize() {
return queueSize;
}
public void setQueueSize(int queueSize) {
this.queueSize = queueSize;
}
@XmlElement(name = "BatchSize")
public int getBatchSize() {
return batchSize;
}
public void setBatchSize(int batchSize) {
this.batchSize = batchSize;
}
@XmlElement(name = "ReconnectionInterval")
public int getReconnectionInterval() {
return reconnectionInterval;
}
public void setReconnectionInterval(int reconnectionInterval) {
this.reconnectionInterval = reconnectionInterval;
}
@XmlElement(name = "MaxTransportPoolSize")
public int getMaxTransportPoolSize() {
return maxTransportPoolSize;
}
public void setMaxTransportPoolSize(int maxTransportPoolSize) {
this.maxTransportPoolSize = maxTransportPoolSize;
}
@XmlElement(name = "MaxIdleConnections")
public int getMaxIdleConnections() {
return maxIdleConnections;
}
public void setMaxIdleConnections(int maxIdleConnections) {
this.maxIdleConnections = maxIdleConnections;
}
@XmlElement(name = "MinIdleTimeInPool")
public int getMinIdleTimeInPool() {
return minIdleTimeInPool;
}
public void setMinIdleTimeInPool(int minIdleTimeInPool) {
this.minIdleTimeInPool = minIdleTimeInPool;
}
@XmlElement(name = "EvictionTimePeriod")
public int getEvictionTimePeriod() {
return evictionTimePeriod;
}
public void setEvictionTimePeriod(int evictionTimePeriod) {
this.evictionTimePeriod = evictionTimePeriod;
}
@XmlElement(name = "SecureMaxTransportPoolSize")
public int getSecureMaxTransportPoolSize() {
return secureMaxTransportPoolSize;
}
public void setSecureMaxTransportPoolSize(int secureMaxTransportPoolSize) {
this.secureMaxTransportPoolSize = secureMaxTransportPoolSize;
}
@XmlElement(name = "SecureMaxIdleConnections")
public int getSecureMinIdleTimeInPool() {
return secureMinIdleTimeInPool;
}
public void setSecureMinIdleTimeInPool(int secureMinIdleTimeInPool) {
this.secureMinIdleTimeInPool = secureMinIdleTimeInPool;
}
@XmlElement(name = "SecureEvictionTimePeriod")
public int getSecureMaxIdleConnections() {
return secureMaxIdleConnections;
}
public void setSecureMaxIdleConnections(int secureMaxIdleConnections) {
this.secureMaxIdleConnections = secureMaxIdleConnections;
}
@XmlElement(name = "SecureMinIdleTimeInPool")
public int getSecureEvictionTimePeriod() {
return secureEvictionTimePeriod;
}
public void setSecureEvictionTimePeriod(int secureEvictionTimePeriod) {
this.secureEvictionTimePeriod = secureEvictionTimePeriod;
}
@XmlElement(name = "CorePoolSize")
public int getCorePoolSize() {
return corePoolSize;
}
public void setCorePoolSize(int corePoolSize) {
this.corePoolSize = corePoolSize;
}
@XmlElement(name = "MaxPoolSize")
public int getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(int maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
@XmlElement(name = "KeepAliveTimeInPool")
public int getKeepAliveTimeInPool() {
return keepAliveTimeInPool;
}
public void setKeepAliveTimeInPool(int keepAliveTimeInPool) {
this.keepAliveTimeInPool = keepAliveTimeInPool;
}
public void setDataEndpointName(String dataEndpointName) {
if (dataEndpointName != null) {
this.dataEndpointName = dataEndpointName.trim();
} else {
this.dataEndpointName = null;
}
}
@XmlElement(name = "SocketTimeoutMS")
public int getSocketTimeoutMS() {
return socketTimeoutMS;
}
public void setSocketTimeoutMS(int socketTimeoutMS) {
this.socketTimeoutMS = socketTimeoutMS;
}
public void setClassName(String className) {
if (className != null) {
this.className = className.trim();
} else {
this.className = null;
}
}
@XmlElement(name = "PublishingStrategy")
public String getPublishingStrategy() {
return publishingStrategy;
}
public void setPublishingStrategy(String publishingStrategy) {
this.publishingStrategy = publishingStrategy;
}
@XmlElement(name = "sslEnabledProtocols")
public String getSslEnabledProtocols() {
return sslEnabledProtocols;
}
public void setSslEnabledProtocols(String sslEnabledProtocols) {
this.sslEnabledProtocols = sslEnabledProtocols;
}
@XmlElement(name = "ciphers")
public String getCiphers() {
return ciphers;
}
public void setCiphers(String ciphers) {
this.ciphers = ciphers;
}
/**
* Validates the configurations that valid.
*
* @throws DataEndpointAgentConfigurationException
*/
public void validate() throws DataEndpointAgentConfigurationException {
if (this.dataEndpointName == null || this.dataEndpointName.isEmpty()) {
throw new DataEndpointAgentConfigurationException("Endpoint name is not set in "
+ DataEndpointConstants.DATA_AGENT_CONF_FILE_NAME);
}
if (this.className == null || this.className.isEmpty()) {
throw new DataEndpointAgentConfigurationException("Endpoint class name is not set in "
+ DataEndpointConstants.DATA_AGENT_CONF_FILE_NAME + " for name: " + this.dataEndpointName);
}
}
}