DestroyRoomRequest.java 2.51 KB
Newer Older
1 2 3 4 5
/**
 * $RCSfile: $
 * $Revision: $
 * $Date: $
 *
6
 * Copyright (C) 2005-2008 Jive Software. All rights reserved.
7 8
 *
 * This software is published under the terms of the GNU Public License (GPL),
9 10
 * a copy of which is included in this distribution, or a commercial license
 * agreement with Jive.
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
 */

package org.jivesoftware.openfire.muc.cluster;

import org.jivesoftware.openfire.muc.spi.LocalMUCRoom;
import org.jivesoftware.util.cache.ExternalizableUtil;

import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

/**
 * Task that destroys the local room in the cluster node. Local room occupants
 * hosted in the cluster node will get the notification of the room being
 * destroyed.
 *
 * @author Gaston Dombiak
 */
public class DestroyRoomRequest extends MUCRoomTask {
    private String alternateJID;
    private String reason;

    public DestroyRoomRequest() {
    }

    public DestroyRoomRequest(LocalMUCRoom room, String alternateJID, String reason) {
        super(room);
        this.alternateJID = alternateJID;
        this.reason = reason;
    }

    public Object getResult() {
        return null;
    }

    public void run() {
47 48 49 50 51 52
        // Execute the operation considering that we may still be joining the cluster
        execute(new Runnable() {
            public void run() {
                getRoom().destroyRoom(DestroyRoomRequest.this);
            }
        });
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
    }

    public String getAlternateJID() {
        return alternateJID;
    }

    public String getReason() {
        return reason;
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        super.writeExternal(out);
        ExternalizableUtil.getInstance().writeBoolean(out, alternateJID != null);
        if (alternateJID != null) {
            ExternalizableUtil.getInstance().writeSafeUTF(out, alternateJID);
        }
        ExternalizableUtil.getInstance().writeBoolean(out, reason != null);
        if (reason != null) {
            ExternalizableUtil.getInstance().writeSafeUTF(out, reason);
        }
    }

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        super.readExternal(in);
        if (ExternalizableUtil.getInstance().readBoolean(in)) {
            alternateJID = ExternalizableUtil.getInstance().readSafeUTF(in);
        }
        if (ExternalizableUtil.getInstance().readBoolean(in)) {
            reason = ExternalizableUtil.getInstance().readSafeUTF(in);
        }
    }
}