package fr.virtuoz.gen;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.Future;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Response;
import fr.virtuoz.AsyncBotService;
import fr.virtuoz.TalkXml;
import fr.virtuoz.TalkXmlResponse;
import org.ebayopensource.turmeric.runtime.common.exceptions.ServiceException;
import org.ebayopensource.turmeric.runtime.common.exceptions.ServiceRuntimeException;
import org.ebayopensource.turmeric.runtime.common.registration.ClassLoaderRegistry;
import org.ebayopensource.turmeric.runtime.common.types.Cookie;
import org.ebayopensource.turmeric.runtime.common.types.SOAHeaders;
import org.ebayopensource.turmeric.runtime.sif.service.Service;
import org.ebayopensource.turmeric.runtime.sif.service.ServiceFactory;
import org.ebayopensource.turmeric.runtime.sif.service.ServiceInvokerOptions;
/**
* Note : Generated file, any changes will be lost upon regeneration.
* This class is not thread safe
*
*/
public class BaseBotServiceConsumer {
private URL m_serviceLocation = null;
private boolean m_useDefaultClientConfig;
private final static String SVC_ADMIN_NAME = "BotService";
private String m_clientName = "BotService";
private String m_environment;
private AsyncBotService m_proxy = null;
private String m_authToken = null;
private Cookie[] m_cookies;
private Service m_service = null;
public BaseBotServiceConsumer() {
}
/**
* This constructor should be used, when a ClientConfig.xml is located in the
* "client" bundle, so that a ClassLoader of this Shared Consumer can be used.
*
* @param clientName
* @throws ServiceException
*
*/
public BaseBotServiceConsumer(String clientName)
throws ServiceException
{
this(clientName, null);
}
/**
* This constructor should be used, when a ClientConfig.xml is located in the
* "client" bundle, so that a ClassLoader of this Shared Consumer can be used.
*
* @param clientName
* @param environment
* @throws ServiceException
*
*/
public BaseBotServiceConsumer(String clientName, String environment)
throws ServiceException
{
this(clientName, environment, null, false);
}
/**
* This constructor should be used, when a ClientConfig.xml is located
* in some application bundle. Shared Consumer then will call ClassLoaderRegistry
* to register a ClassLoader of an application bundle.
*
* @param clientName
* @param caller
* @param useDefaultClientConfig
* @throws ServiceException
*
*/
public BaseBotServiceConsumer(String clientName, Class caller, boolean useDefaultClientConfig)
throws ServiceException
{
this(clientName, null, caller, useDefaultClientConfig);
}
/**
* This constructor should be used, when a ClientConfig.xml is located
* in some application bundle. Shared Consumer then will call ClassLoaderRegistry
* to register a ClassLoader of an application bundle.
*
* @param clientName
* @param environment
* @param caller
* @param useDefaultClientConfig
* @throws ServiceException
*
*/
public BaseBotServiceConsumer(String clientName, String environment, Class caller, boolean useDefaultClientConfig)
throws ServiceException
{
if (clientName == null) {
throw new ServiceException("clientName can not be null");
}
m_clientName = clientName;
if (environment!= null) {
m_environment = environment;
}
m_useDefaultClientConfig = useDefaultClientConfig;
ClassLoaderRegistry.instanceOf().registerServiceClient(m_clientName, m_environment, SVC_ADMIN_NAME, (BaseBotServiceConsumer.class), caller, m_useDefaultClientConfig);
}
/**
* Use this method to initialize ConsumerApp after creating a Consumer instance
*
*/
public void init()
throws ServiceException
{
getService();
}
protected void setServiceLocation(String serviceLocation)
throws MalformedURLException
{
m_serviceLocation = new URL(serviceLocation);
if (m_service!= null) {
m_service.setServiceLocation(m_serviceLocation);
}
}
private void setUserProvidedSecurityCredentials(Service service) {
if (m_authToken!= null) {
service.setSessionTransportHeader(SOAHeaders.AUTH_TOKEN, m_authToken);
}
if (m_cookies!= null) {
for (int i = 0; (i<m_cookies.length); i ++) {
service.setCookie(m_cookies[i]);
}
}
}
/**
* Use this method to set User Credentials (Token)
*
*/
protected void setAuthToken(String authToken) {
m_authToken = authToken;
}
/**
* Use this method to set User Credentials (Cookie)
*
*/
protected void setCookies(Cookie[] cookies) {
m_cookies = cookies;
}
/**
* Use this method to get the Invoker Options on the Service and set them to user-preferences
*
*/
public ServiceInvokerOptions getServiceInvokerOptions()
throws ServiceException
{
m_service = getService();
return m_service.getInvokerOptions();
}
protected AsyncBotService getProxy()
throws ServiceException
{
m_service = getService();
m_proxy = m_service.getProxy();
return m_proxy;
}
/**
* Method returns an instance of Service which has been initilized for this Consumer
*
*/
public Service getService()
throws ServiceException
{
if (m_service == null) {
m_service = ServiceFactory.create(SVC_ADMIN_NAME, m_environment, m_clientName, m_serviceLocation, false, m_useDefaultClientConfig);
}
setUserProvidedSecurityCredentials(m_service);
return m_service;
}
public Future<?> talkXmlAsync(TalkXml param0, AsyncHandler<TalkXmlResponse> param1) {
Future<?> result = null;
try {
m_proxy = getProxy();
} catch (ServiceException serviceException) {
throw ServiceRuntimeException.wrap(serviceException);
}
result = m_proxy.talkXmlAsync(param0, param1);
return result;
}
public Response<TalkXmlResponse> talkXmlAsync(TalkXml param0) {
Response<TalkXmlResponse> result = null;
try {
m_proxy = getProxy();
} catch (ServiceException serviceException) {
throw ServiceRuntimeException.wrap(serviceException);
}
result = m_proxy.talkXmlAsync(param0);
return result;
}
public List<Response<?>> poll(boolean param0, boolean param1)
throws InterruptedException
{
List<Response<?>> result = null;
try {
m_proxy = getProxy();
} catch (ServiceException serviceException) {
throw ServiceRuntimeException.wrap(serviceException);
}
result = m_proxy.poll(param0, param1);
return result;
}
public TalkXmlResponse talkXml(TalkXml param0) {
TalkXmlResponse result = null;
try {
m_proxy = getProxy();
} catch (ServiceException serviceException) {
throw ServiceRuntimeException.wrap(serviceException);
}
result = m_proxy.talkXml(param0);
return result;
}
}