001 /**
002 *
003 * Copyright 2004 Protique Ltd
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 *
017 **/
018
019 package org.activemq.advisories;
020 import java.io.Externalizable;
021 import java.io.IOException;
022 import java.io.ObjectInput;
023 import java.io.ObjectOutput;
024
025 import org.activemq.message.AbstractPacket;
026 import org.activemq.message.ActiveMQDestination;
027
028 /**
029 * This event is raised when a MessageTempDestination starts/stops *
030 *
031 * @version $Revision: 1.1.1.1 $
032 */
033 public class TempDestinationAdvisoryEvent extends AbstractPacket implements Externalizable {
034
035 private static final long serialVersionUID = -541770480868770950L;
036
037 private ActiveMQDestination destination;
038 private boolean started;
039
040 /**
041 * Empty constructor
042 */
043 public TempDestinationAdvisoryEvent() {
044 }
045
046 /**
047 * Default Constructor
048 *
049 * @param dest
050 * @param started
051 */
052 public TempDestinationAdvisoryEvent(ActiveMQDestination dest, boolean started) {
053 this.destination = dest;
054 this.started = started;
055 }
056
057 /**
058 * @return Returns the destination.
059 */
060 public ActiveMQDestination getDestination() {
061 return destination;
062 }
063
064 /**
065 * @param destination The destination to set.
066 */
067 public void setDestination(ActiveMQDestination destination) {
068 this.destination = destination;
069 }
070
071 /**
072 * @return Returns the started.
073 */
074 public boolean isStarted() {
075 return started;
076 }
077
078 /**
079 * @param started The started to set.
080 */
081 public void setStarted(boolean started) {
082 this.started = started;
083 }
084
085 /**
086 * write to a stream
087 *
088 * @param out
089 * @throws IOException
090 */
091 public void writeExternal(ObjectOutput out) throws IOException {
092 out.writeBoolean(this.started);
093 ActiveMQDestination.writeToStream(getDestination(), out);
094 }
095
096 /**
097 * read from a stream
098 *
099 * @param in
100 * @throws IOException
101 * @throws ClassNotFoundException
102 */
103 public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
104 this.started = in.readBoolean();
105 this.destination = ActiveMQDestination.readFromStream(in);
106 }
107
108 /**
109 * @param obj
110 * @return true if obj is equal
111 */
112 public boolean equals(Object obj) {
113 boolean result = false;
114 if (obj != null && obj instanceof TempDestinationAdvisoryEvent) {
115 TempDestinationAdvisoryEvent event = (TempDestinationAdvisoryEvent) obj;
116 result = destination != null && event.destination != null && destination.equals(event.destination);
117 }
118 return result;
119 }
120
121 /**
122 * @return hash code
123 */
124 public int hashCode() {
125 return destination != null ? destination.hashCode() : super.hashCode();
126 }
127
128 /**
129 * @return Packet type - for this case -1
130 */
131 public int getPacketType() {
132 return -1;
133 }
134
135 /**
136 * @return pretty print of 'this'
137 */
138 public String toString() {
139 String str = "TempDestinationAdvisoryEvent: " + destination + " has " + (started ? "started" : "stopped");
140 return str;
141 }
142 }