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    package org.activemq.service;
019    
020    import java.io.Externalizable;
021    import java.io.IOException;
022    import java.io.ObjectInput;
023    import java.io.ObjectOutput;
024    
025    /**
026     * Represents a durable subscribers subscription entry which contains
027     * details of the subscription and the subscriber's unique ID
028     *
029     * @version $Revision: 1.1.1.1 $
030     */
031    public class SubscriberEntry implements Externalizable {
032        private static final long serialVersionUID = -5754338187296859149L;
033    
034        private int subscriberID;
035        private String clientID;
036        private String consumerName;
037        private String destination;
038        private String selector;
039    
040        public SubscriberEntry() {
041        }
042    
043        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
044            subscriberID = in.readInt();
045            clientID = in.readUTF();
046            consumerName = in.readUTF();
047            destination = in.readUTF();
048            selector = readNullableUTF(in);
049        }
050    
051        public void writeExternal(ObjectOutput out) throws IOException {
052            out.writeInt(subscriberID);
053            out.writeUTF(clientID);
054            out.writeUTF(consumerName);
055            out.writeUTF(destination);
056            writeNullableUTF(out,selector);
057        }
058    
059        static public String readNullableUTF(ObjectInput in) throws IOException, ClassNotFoundException {
060            if( in.readBoolean() ) {
061                return in.readUTF();
062            } else {
063                return null;
064            }
065        }
066        
067        static public void writeNullableUTF(ObjectOutput out, String value) throws IOException {
068            if( value==null ) {
069                out.writeBoolean(false);
070            } else {
071                out.writeBoolean(true);
072                out.writeUTF(value);
073            }
074        }
075        
076        public String toString() {
077            return super.toString() + "[clientID: " + clientID + " consumerName: " + consumerName
078                    + " destination: " + destination + " selector: " + selector + "]";
079        }
080    
081        // Properties
082        //-------------------------------------------------------------------------
083        public String getClientID() {
084            return clientID;
085        }
086    
087        public void setClientID(String clientID) {
088            this.clientID = clientID;
089        }
090    
091        public String getConsumerName() {
092            return consumerName;
093        }
094    
095        public void setConsumerName(String consumerName) {
096            this.consumerName = consumerName;
097        }
098    
099        public String getDestination() {
100            return destination;
101        }
102    
103        public void setDestination(String destination) {
104            this.destination = destination;
105        }
106    
107        public String getSelector() {
108            return selector;
109        }
110    
111        public void setSelector(String selector) {
112            this.selector = selector;
113        }
114    
115        public int getSubscriberID() {
116            return subscriberID;
117        }
118    
119        public void setSubscriberID(int subscriberID) {
120            this.subscriberID = subscriberID;
121        }
122    }