/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.mx.notification;
import javax.management.NotificationFilter;
import javax.management.NotificationListener;
/**
* The default notification listener registration.
*
* @see org.jboss.mx.notification.ListenerRegistry
* @see org.jboss.mx.notification.ListenerRegistrationFactory
*
* @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
* @version $Revision: 1.1 $
*/
public class DefaultListenerRegistration
implements ListenerRegistration
{
// Attributes ----------------------------------------------------
/**
* The notification listener
*/
private NotificationListener listener;
/**
* The notification filter
*/
private NotificationFilter filter;
/**
* The handback object
*/
private Object handback;
// Constructor ---------------------------------------------------
/**
* Create a listener registration
*
* @param listener the notification listener
* @param filter the notification filter
* @param handback the handback object
*/
public DefaultListenerRegistration(NotificationListener listener,
NotificationFilter filter,
Object handback)
{
this.listener = listener;
this.filter = filter;
this.handback = handback;
}
// Public --------------------------------------------------------
// ListenerRegistration Implementation ---------------------------
public NotificationListener getListener()
{
return listener;
}
public NotificationFilter getFilter()
{
return filter;
}
public Object getHandback()
{
return handback;
}
public NotificationListener getRegisteredListener()
{
return listener;
}
public NotificationFilter getRegisteredFilter()
{
return filter;
}
public void removed()
{
}
public boolean equals(Object obj)
{
if (obj == null || (obj instanceof ListenerRegistration) == false)
return false;
ListenerRegistration other = (ListenerRegistration) obj;
if (getRegisteredListener().equals(other.getRegisteredListener()) == false)
return false;
NotificationFilter myFilter = getRegisteredFilter();
NotificationFilter otherFilter = other.getRegisteredFilter();
if (myFilter != null && myFilter.equals(otherFilter) == false)
return false;
else if (myFilter == null && otherFilter != null)
return false;
Object myHandback = getHandback();
Object otherHandback = other.getHandback();
if (myHandback != null && myHandback.equals(otherHandback) == false)
return false;
else if (myHandback == null && otherHandback != null)
return false;
return true;
}
public int hashCode()
{
int result = listener.hashCode();
if (filter != null)
result += filter.hashCode();
if (handback != null)
result += handback.hashCode();
return result;
}
public String toString()
{
StringBuffer buffer = new StringBuffer(50);
buffer.append(getClass()).append(":");
buffer.append(" listener=").append(getRegisteredListener());
buffer.append(" filter=") .append(getRegisteredFilter());
buffer.append(" handback=").append(getHandback());
return buffer.toString();
}
}