blob: 743cbb06bc19f658274dd287f19ac91ef8ea763e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2010 BREDEX GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.client.internal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.eclipse.jubula.client.internal.exceptions.ConnectionException;
import org.eclipse.jubula.communication.internal.Communicator;
import org.eclipse.jubula.tools.internal.messagehandling.MessageIDs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class represents the connection to the AUT Agent. A call to
* createInstance() instantiate this class. <br>
* Call createInstance() before getting the instance with getInstance().
*
* @author BREDEX GmbH
* @created 22.07.2004
*/
public class AutAgentConnection extends BaseConnection {
/**
* Job Family ID. All Jobs dealing with connecting to the AUT Agent
* will return <code>true</code> when their {@link Job#belongsTo(Object)}
* method is called with this Object as the argument.
*/
public static final Object CONNECT_TO_AGENT_JOB_FAMILY_ID = new Object();
/** the logger */
private static Logger log =
LoggerFactory.getLogger(AutAgentConnection.class);
/** the singleton instance */
private static AutAgentConnection instance = null;
/**
* private constructor
* @param inetAddress the host to connect to
* @param port the port the remote host is listening to
*/
private AutAgentConnection(InetAddress inetAddress, int port) {
super();
Communicator communicator = new Communicator(inetAddress, port,
this.getClass().getClassLoader());
communicator.setIsServerSocketClosable(false);
setCommunicator(communicator);
}
/**
* creates the "singleton".
*
* @param serverName
* The name of the server.
* @param port
* The port number.
* @throws ConnectionException
* if a connection to the given server could not made, e.g. the
* name from AUTConfigPO can not resolved to a host.
*/
public static synchronized void createInstance(String serverName,
String port) throws ConnectionException {
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName(serverName);
instance = new AutAgentConnection(inetAddress,
new Integer(port).intValue());
} catch (UnknownHostException uhe) {
// log on info level, the configuration may be bad typed
log.info(uhe.getLocalizedMessage(), uhe);
throw new ConnectionException(uhe.getMessage(),
MessageIDs.E_UNKNOWN_HOST);
}
}
/**
* Method to get the single instance of this class. <br>
* !!! Call first createInstance() !!!
*
* @throws ConnectionException
* when the instance was not created with createInstance()
* @return the instance of this Singleton
*/
public static synchronized AutAgentConnection getInstance() throws
ConnectionException {
if (instance == null) {
String message = "ServerConnection is not initialized"; //$NON-NLS-1$
throw new ConnectionException(message,
MessageIDs.E_NO_SERVER_CONNECTION_INIT);
}
return instance;
}
}