1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.broker;
19
20 import org.codehaus.activemq.message.ActiveMQMessage;
21 import org.codehaus.activemq.transport.TransportChannel;
22
23 import javax.jms.JMSException;
24 import java.util.ArrayList;
25 import java.util.List;
26
27
28 /***
29 * A mock dispatcher for testing
30 *
31 * @version $Revision: 1.3 $
32 */
33 public class BrokerClientStub implements BrokerClient {
34
35 private List messages = new ArrayList();
36 private Object semaphore;
37
38 public BrokerClientStub() {
39 this(new Object());
40 }
41
42 public BrokerClientStub(Object semaphore) {
43 this.semaphore = semaphore;
44 }
45
46 /***
47 * @return all the messages on the list so far, clearing the buffer
48 */
49 public synchronized List flushMessages() {
50 List answer = new ArrayList(messages);
51 messages.clear();
52 return answer;
53 }
54
55 public synchronized void dispatch(ActiveMQMessage message) {
56 messages.add(message);
57 synchronized (semaphore) {
58 semaphore.notifyAll();
59 }
60 }
61
62 public void initialize(BrokerConnector brokerConnector, TransportChannel channel) {
63 }
64
65 public void waitForMessageToArrive() {
66 System.out.println("Waiting for message to arrive");
67
68 long start = System.currentTimeMillis();
69
70 try {
71 if (messages.isEmpty()) {
72 synchronized (semaphore) {
73 semaphore.wait(4000);
74 }
75 }
76 }
77 catch (InterruptedException e) {
78 System.out.println("Caught: " + e);
79 }
80 long end = System.currentTimeMillis() - start;
81
82 System.out.println("End of wait for " + end + " millis");
83 }
84
85 public void start() throws JMSException {
86 }
87
88 public void stop() throws JMSException {
89 }
90
91 /***
92 * @return true if the peer for this Client is itself another Broker
93 */
94 public boolean isBrokerConnection() {
95 return false;
96 }
97
98
99 /***
100 * Get the Capacity for in-progress messages at the peer (probably a JMSConnection)
101 * Legimate values between 0-100. 100 representing that the peer cannot process
102 * any more messages at the current time
103 *
104 * @return
105 */
106 public int getCapacity() {
107 return 100;
108 }
109
110 /***
111 * Get an indication if the peer should be considered as a slow consumer
112 *
113 * @return true id the peer should be considered as a slow consumer
114 */
115 public boolean isSlowConsumer() {
116 return false;
117 }
118
119 /***
120 * Update the peer Connection about the Broker's capacity for messages
121 *
122 * @param capacity
123 */
124 public void updateBrokerCapacity(int capacity) {
125
126 }
127
128 public String getClientID() {
129 return "dummyClientID";
130 }
131
132 public void cleanUp() {
133 }
134
135 public TransportChannel getChannel() {
136 return null;
137 }
138
139
140 public BrokerConnector getBrokerConnector() {
141 return null;
142 }
143
144
145 public boolean isClusteredConnection() {
146 return false;
147 }
148 }