org.kie.server.client.impl.KieServicesConfigurationImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kie-server-client Show documentation
Show all versions of kie-server-client Show documentation
KIE Execution Server Client
/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* 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.kie.server.client.impl;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.kie.server.api.exception.KieServicesException;
import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.client.CredentialsProvider;
import org.kie.server.client.KieServicesConfiguration;
import org.kie.server.client.balancer.LoadBalancer;
import org.kie.server.client.credentials.EnteredCredentialsProvider;
import org.kie.server.client.jms.RequestReplyResponseHandler;
import org.kie.server.client.jms.ResponseHandler;
import org.kie.server.common.rest.ClientCertificate;
/**
* In order to protect the Remote (Java) API, this class may not be extended nor may its constructor be made public.
*/
public final class KieServicesConfigurationImpl
implements KieServicesConfiguration {
public static final String SSL_CONNECTION_FACTORY_NAME = "jms/SslRemoteConnectionFactory";
public static final String CONNECTION_FACTORY_NAME = "jms/RemoteConnectionFactory";
public static final String REQUEST_QUEUE_NAME = "jms/queue/KIE.SERVER.REQUEST";
public static final String RESPONSE_QUEUE_NAME = "jms/queue/KIE.SERVER.RESPONSE";
private long timeoutInMillisecs = 10000; // in milliseconds
// REST or JMS
private final Transport transport;
// General
private String userName;
private String password;
private String serverUrl;
private ClientCertificate clientCertificate;
private List capabilities;
// JMS
private boolean useSsl = false;
private ConnectionFactory connectionFactory;
private Queue requestQueue;
private Queue responseQueue;
private ResponseHandler responseHandler = new RequestReplyResponseHandler();
private boolean jmsTransactional = false;
private MarshallingFormat format = MarshallingFormat.JAXB;
private Set> extraClasses = new HashSet>();
private CredentialsProvider credentialsProvider;
private LoadBalancer loadBalancer;
private Map headers;
/*
* Public constructors and setters
*/
/**
* REST based constructor
* @param url
* @param username
* @param password
*/
public KieServicesConfigurationImpl(String url, String username, String password) {
this( url, username, password, 5000 );
}
/**
* REST based constructor
* @param url
* @param username
* @param password
* @param timeout the maximum timeout in milliseconds
*/
public KieServicesConfigurationImpl(String url, String username, String password, long timeout) {
this.transport = Transport.REST;
this.serverUrl = url;
this.userName = username;
this.password = password;
this.timeoutInMillisecs = timeout;
this.credentialsProvider = new EnteredCredentialsProvider(username, password);
}
/**
* REST based constructor
* @param url
* @param credentialsProvider
*/
public KieServicesConfigurationImpl(String url, CredentialsProvider credentialsProvider) {
this( url, credentialsProvider, 5000 );
}
/**
* REST based constructor
* @param url
* @param credentialsProvider
* @param timeout the maximum timeout in milliseconds
*/
public KieServicesConfigurationImpl(String url, CredentialsProvider credentialsProvider, long timeout) {
this.transport = Transport.REST;
this.serverUrl = url;
this.timeoutInMillisecs = timeout;
this.credentialsProvider = credentialsProvider;
}
@Override
public void dispose() {
if ( extraClasses != null ) {
extraClasses.clear();
extraClasses = null;
}
if ( connectionFactory != null ) {
connectionFactory = null;
}
if ( requestQueue != null ) {
requestQueue = null;
}
if ( responseQueue != null ) {
responseQueue = null;
}
}
// REST ----------------------------------------------------------------------------------------------------------------------
// JMS ----------------------------------------------------------------------------------------------------------------------
public KieServicesConfigurationImpl(ConnectionFactory connectionFactory, Queue requestQueue, Queue responseQueue) {
this.transport = Transport.JMS;
this.connectionFactory = connectionFactory;
this.requestQueue = requestQueue;
this.responseQueue = responseQueue;
this.credentialsProvider = null;
checkValidValues( this.connectionFactory, this.requestQueue, this.responseQueue );
}
public KieServicesConfigurationImpl(
ConnectionFactory connectionFactory, Queue requestQueue,
Queue responseQueue, String username, String password) {
this( connectionFactory, requestQueue, responseQueue );
setAndCheckUserNameAndPassword( username, password );
}
public KieServicesConfigurationImpl(InitialContext context, String username, String password) {
this.transport = Transport.JMS;
setAndCheckUserNameAndPassword( username, password );
setRemoteInitialContext( context );
this.credentialsProvider = new EnteredCredentialsProvider(username, password);
}
public void checkValidJmsValues() {
checkValidValues( connectionFactory, requestQueue, responseQueue );
}
private static void checkValidValues(ConnectionFactory connectionFactory, Queue requestQueue, Queue responseQueue)
throws IllegalStateException {
if ( connectionFactory == null ) {
throw new IllegalStateException( "The connection factory argument may not be null." );
}
if ( requestQueue == null ) {
throw new IllegalStateException( "At least a ksession queue or task queue is required." );
}
if ( responseQueue == null ) {
throw new IllegalStateException( "The response queue argument may not be null." );
}
}
@Override
public KieServicesConfiguration setRemoteInitialContext(InitialContext context) {
String prop = CONNECTION_FACTORY_NAME;
try {
if ( this.connectionFactory == null ) {
this.connectionFactory = (ConnectionFactory) context.lookup( prop );
}
prop = REQUEST_QUEUE_NAME;
this.requestQueue = (Queue) context.lookup( prop );
prop = RESPONSE_QUEUE_NAME;
this.responseQueue = (Queue) context.lookup( prop );
} catch ( NamingException ne ) {
throw new KieServicesException( "Unable to retrieve object for " + prop, ne );
}
checkValidValues( connectionFactory, requestQueue, responseQueue );
return this;
}
private KieServicesConfiguration setAndCheckUserNameAndPassword(String username, String password) {
if ( username == null || username.trim().isEmpty() ) {
throw new IllegalArgumentException( "The user name may not be empty or null." );
}
this.userName = username;
if ( password == null ) {
throw new IllegalArgumentException( "The password may not be null." );
}
this.password = password;
return this;
}
/**
* (Package-scoped) Getters
*/
@Override
public MarshallingFormat getMarshallingFormat() {
return format;
}
@Override
public KieServicesConfiguration setMarshallingFormat(MarshallingFormat format) {
this.format = format;
return this;
}
@Override
public boolean isJms() {
return (this.transport == Transport.JMS);
}
@Override
public boolean isRest() {
return (this.transport == Transport.REST);
}
@Override
public String getServerUrl() {
return serverUrl;
}
@Override
public String getUserName() {
return userName;
}
@Override
public String getPassword() {
return password;
}
@Override
public ClientCertificate getClientCertificate() {
return clientCertificate;
}
@Override
public ConnectionFactory getConnectionFactory() {
return connectionFactory;
}
@Override
public Queue getRequestQueue() {
return requestQueue;
}
@Override
public Queue getResponseQueue() {
return responseQueue;
}
@Override
public boolean addExtraClasses(Set> extraClassList) {
return this.extraClasses.addAll( extraClassList );
}
@Override
public KieServicesConfiguration clearExtraClasses() {
this.extraClasses.clear();
return this;
}
@Override
public Set> getExtraClasses() {
return this.extraClasses;
}
@Override
public Transport getTransport() {
return this.transport;
}
@Override
public long getTimeout() {
return timeoutInMillisecs;
}
@Override
public boolean getUseSsl() {
return useSsl;
}
// Setters -------------------------------------------------------------------------------------------------------------------
@Override
public KieServicesConfiguration setTimeout(long timeout) {
this.timeoutInMillisecs = timeout;
return this;
}
@Override
public KieServicesConfiguration setServerUrl(String url) {
this.serverUrl = url;
return this;
}
@Override
public KieServicesConfiguration setUserName(String userName) {
this.userName = userName;
if (credentialsProvider instanceof EnteredCredentialsProvider) {
((EnteredCredentialsProvider) credentialsProvider).setUsername(userName);
}
return this;
}
@Override
public KieServicesConfiguration setPassword(String password) {
this.password = password;
if (credentialsProvider instanceof EnteredCredentialsProvider) {
((EnteredCredentialsProvider) credentialsProvider).setPassword(password);
}
return this;
}
@Override
public KieServicesConfigurationImpl setClientCertificate(ClientCertificate clientCertificate) {
this.clientCertificate = clientCertificate;
return this;
}
@Override
public KieServicesConfiguration setExtraClasses(Set> extraJaxbClasses) {
this.extraClasses.clear();
if (extraJaxbClasses != null) {
this.extraClasses.addAll(extraJaxbClasses);
}
return this;
}
@Override
public KieServicesConfiguration setConnectionFactory(ConnectionFactory connectionFactory) {
this.connectionFactory = connectionFactory;
return this;
}
@Override
public KieServicesConfiguration setRequestQueue(Queue requestQueue) {
this.requestQueue = requestQueue;
return this;
}
@Override
public KieServicesConfiguration setResponseQueue(Queue responseQueue) {
this.responseQueue = responseQueue;
return this;
}
@Override
public KieServicesConfiguration setUseSsl(boolean useSsl) {
this.useSsl = useSsl;
return this;
}
@Override
public void setCapabilities(List capabilities) {
this.capabilities = capabilities;
}
@Override
public List getCapabilities() {
return this.capabilities;
}
@Override
public void setCredentialsProvider(CredentialsProvider credentialsProvider) {
this.credentialsProvider = credentialsProvider;
}
@Override
public CredentialsProvider getCredentialsProvider() {
return credentialsProvider;
}
@Override
public void setLoadBalancer(LoadBalancer loadBalancer) {
this.loadBalancer = loadBalancer;
}
@Override
public LoadBalancer getLoadBalancer() {
return this.loadBalancer;
}
@Override
public void setResponseHandler(ResponseHandler responseHandler) {
this.responseHandler = responseHandler;
}
@Override
public ResponseHandler getResponseHandler() {
return this.responseHandler;
}
@Override
public boolean isJmsTransactional() {
return jmsTransactional;
}
@Override
public void setJmsTransactional(boolean jmsTransactional) {
this.jmsTransactional = jmsTransactional;
}
public void setHeaders(Map headers) {
this.headers = headers;
}
@Override
public Map getHeaders() {
return this.headers;
}
// Clone ---
private KieServicesConfigurationImpl(KieServicesConfigurationImpl config) {
this.connectionFactory = config.connectionFactory;
this.extraClasses = config.extraClasses;
this.format = config.format;
this.requestQueue = config.requestQueue;
this.password = config.password;
this.responseQueue = config.responseQueue;
this.serverUrl = config.serverUrl;
this.timeoutInMillisecs = config.timeoutInMillisecs;
this.transport = config.transport;
this.userName = config.userName;
this.useSsl = config.useSsl;
this.capabilities = config.capabilities;
this.credentialsProvider = config.credentialsProvider;
this.loadBalancer = config.loadBalancer;
this.responseHandler = config.responseHandler;
this.jmsTransactional = config.jmsTransactional;
this.headers = config.headers;
this.clientCertificate = config.clientCertificate;
}
@Override
public KieServicesConfiguration clone() {
return new KieServicesConfigurationImpl( this );
}
@Override
public String toString() {
return "KieServicesConfiguration{" +
"transport=" + transport +
", serverUrl='" + serverUrl + '\'' +
'}';
}
/*
* Deprecated methods
*/
@Deprecated
@Override
public Set> getExtraJaxbClasses() {
return getExtraClasses();
}
@Deprecated
@Override
public boolean addJaxbClasses(Set> extraJaxbClassList) {
return addExtraClasses(extraJaxbClassList);
}
@Deprecated
@Override
public KieServicesConfiguration setExtraJaxbClasses(Set> extraJaxbClasses) {
return setExtraClasses(extraJaxbClasses);
}
@Deprecated
@Override
public KieServicesConfiguration clearJaxbClasses() {
return clearExtraClasses();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy