View Javadoc

1   // Copyright (C) 2006 - 2012 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.communication;
23  
24  import junit.framework.Assert;
25  
26  
27  /**
28   * BlockingSender that wraps a Sender - used by unit tests.
29   *
30   * @author Philip Aston
31   */
32  public class BlockingSenderWrapper implements BlockingSender {
33  
34    private final Sender m_delegate;
35  
36    public BlockingSenderWrapper(Sender sender) {
37      m_delegate = sender;
38    }
39  
40    public Message blockingSend(Message message) throws CommunicationException {
41  
42      final MessageRequiringResponse messageRequringResponse =
43        new MessageRequiringResponse(message);
44  
45      final Message[] response = new Message[1];
46  
47      final Sender captureResponse =
48        new Sender() {
49  
50          public void send(Message theMessage) throws CommunicationException {
51            response[0] = theMessage;
52          }
53  
54          public void shutdown() {
55            Assert.fail("Should not be called");
56          }
57      };
58  
59  
60      messageRequringResponse.setResponder(captureResponse);
61  
62      m_delegate.send(messageRequringResponse);
63  
64      return response[0];
65    }
66  
67    public void shutdown() {
68      m_delegate.shutdown();
69    }
70  }