SubscriptionTask.java 2.29 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
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);
67 68
        ExternalizableUtil.getInstance().writeSerializable(out, owner);
        ExternalizableUtil.getInstance().writeSerializable(out, subJid);
69 70 71 72 73 74 75 76
		ExternalizableUtil.getInstance().writeSerializable(out, state);
	}

	@Override
	public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
	{
		super.readExternal(in);
		subId = ExternalizableUtil.getInstance().readSafeUTF(in);
77 78
		owner = (JID) ExternalizableUtil.getInstance().readSerializable(in);
		subJid = (JID) ExternalizableUtil.getInstance().readSerializable(in);
79 80 81 82 83 84 85 86 87 88
		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 + ")]";
	}
}