org.jivesoftware.openfire.pubsub.cluster.SubscriptionTask Maven / Gradle / Ivy
The newest version!
package org.jivesoftware.openfire.pubsub.cluster;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.jivesoftware.openfire.pubsub.NodeSubscription;
import org.jivesoftware.openfire.pubsub.NodeSubscription.State;
import org.jivesoftware.util.cache.ExternalizableUtil;
import org.xmpp.packet.JID;
public abstract class SubscriptionTask extends NodeTask
{
private String subId;
private JID owner;
private JID subJid;
private NodeSubscription.State state;
transient private NodeSubscription subscription;
public SubscriptionTask()
{
}
public SubscriptionTask(NodeSubscription subscription)
{
super(subscription.getNode());
subId = subscription.getID();
state = subscription.getState();
owner = subscription.getOwner();
subJid = subscription.getJID();
}
public String getSubscriptionId()
{
return subId;
}
public JID getOwner()
{
return owner;
}
public JID getSubscriberJid()
{
return subJid;
}
public NodeSubscription.State getState()
{
return state;
}
public NodeSubscription getSubscription()
{
if (subscription == null)
{
subscription = new NodeSubscription(getNode(), owner, subJid, state, subId);
}
return subscription;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException
{
super.writeExternal(out);
ExternalizableUtil.getInstance().writeSafeUTF(out, subId);
ExternalizableUtil.getInstance().writeSerializable(out, owner);
ExternalizableUtil.getInstance().writeSerializable(out, subJid);
ExternalizableUtil.getInstance().writeSerializable(out, state);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
super.readExternal(in);
subId = ExternalizableUtil.getInstance().readSafeUTF(in);
owner = (JID) ExternalizableUtil.getInstance().readSerializable(in);
subJid = (JID) ExternalizableUtil.getInstance().readSerializable(in);
state = (State) ExternalizableUtil.getInstance().readSerializable(in);
}
@Override
public String toString()
{
return getClass().getSimpleName() + " [(service=" + serviceId + "), (nodeId=" + nodeId + "), (owner=" + owner
+ "),(subscriber=" + subJid + "),(state=" + state + "),(id=" + subId + ")]";
}
}