/*
* JBossMQ, the OpenSource JMS implementation
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.mq;
import java.io.Serializable;
import java.util.HashMap;
import org.jboss.mq.il.ClientIL;
/**
* This class is the broker point of view on a SpyConnection (it contains a
* ConnectionReceiver).
*
* Remember that for most IL's it will be serialized!
*
* @author Norbert Lataille
* @author Hiram Chirino
* @author Peter Antman
* @created August 16, 2001
* @version $Revision: 1.3 $
*/
public class ConnectionToken
implements Serializable {
//public transient ConnectionReceiverSetup cr_server;
/**
* Used by the server to callback to client. Will (most of the time)
* be serialized when sent to the server.
*/
public ClientIL clientIL;
/**
* The clientID of the connection.
*/
protected String clientID;
/**
* A secured hashed unique sessionId that is valid only as long
* as the connection live. Set during authentication and used
* for autorization.
*/
private String sessionId;
private int hash;
public ConnectionToken( String clientID, ClientIL clientIL ) {
this.clientIL = clientIL;
setClientID(clientID);
}
public ConnectionToken( String clientID, ClientIL clientIL,String sessionId ) {
this(clientID, clientIL);
this.sessionId = sessionId;
}
public String getClientID() {
return clientID;
}
public void setClientID(String clientID) {
this.clientID = clientID;
if ( clientID == null ) {
hash = 0;
} else {
hash = clientID.hashCode();
}
}
public String getSessionId() {
return sessionId;
}
public boolean equals( Object obj ) {
// Fixes NPE. Patch submitted by John Ellis (10/29/00)
if(!(obj instanceof ConnectionToken) || obj == null)
return false;
if ( obj.hashCode() != hash ) {
return false;
}
String yourID = (( ConnectionToken )obj ).clientID;
if (clientID != null)
return clientID.equals(yourID);
else if (yourID == null)
return true;//We know clientID is null
else
return false;//clientID is null, yourID is not.
}
public int hashCode() {
return hash;
}
public String toString() {
return "SpyDistributedConnection:" + clientID+"/"+sessionId;
}
}