001 package com.mockrunner.jms;
002
003 import java.util.HashMap;
004 import java.util.Map;
005
006 import com.mockrunner.mock.jms.MockQueue;
007 import com.mockrunner.mock.jms.MockTopic;
008
009 /**
010 * The <code>DestinationManager</code> can be used
011 * to create queues and topics, which is normally an
012 * administrative act. Since queues and topics are ususally
013 * acquired using JNDI in a J2EE environment, you can bind
014 * the created objects to the mock context with the help
015 * of {@link com.mockrunner.ejb.EJBTestModule#bindToContext}.
016 */
017 public class DestinationManager
018 {
019 private Map queues;
020 private Map topics;
021
022 public DestinationManager()
023 {
024 queues = new HashMap();
025 topics = new HashMap();
026 }
027
028 /**
029 * Creates a new <code>Queue</code> that is available
030 * for {@link com.mockrunner.mock.jms.MockQueueSession#createQueue}
031 * calls. Creating queues is an administrative act.
032 * Before {@link com.mockrunner.mock.jms.MockQueueSession#createQueue}
033 * can be sucessfully called, you have to create a <code>Queue</code>
034 * with this method. You can also bind the created queue to the
035 * mock JNDI context using {@link com.mockrunner.ejb.EJBTestModule#bindToContext}.
036 * @param name the name of the <code>Queue</code>
037 * @return the created <code>Queue</code>
038 */
039 public MockQueue createQueue(String name)
040 {
041 MockQueue queue = new MockQueue(name);
042 queues.put(name, queue);
043 return queue;
044 }
045
046 /**
047 * Removes a formerly created <code>Queue</code>.
048 * @param name the name of the <code>Queue</code>
049 */
050 public void removeQueue(String name)
051 {
052 queues.remove(name);
053 }
054
055 /**
056 * Returns a <code>Queue</code> that was created with
057 * {@link #createQueue} or <code>null</code> if no such
058 * <code>Queue</code> is present.
059 * @param name the name of the <code>Queue</code>
060 * @return the <code>Queue</code>
061 */
062 public MockQueue getQueue(String name)
063 {
064 return (MockQueue)queues.get(name);
065 }
066
067 /**
068 * Creates a new <code>Topic</code> that is available
069 * for {@link com.mockrunner.mock.jms.MockTopicSession#createTopic}
070 * calls. Creating topics is an administrative act.
071 * Before {@link com.mockrunner.mock.jms.MockTopicSession#createTopic}
072 * can be sucessfully called, you have to create a <code>Topic</code>
073 * with this method. You can also bind the created topic to the
074 * mock JNDI context using {@link com.mockrunner.ejb.EJBTestModule#bindToContext}.
075 * @param name the name of the <code>Topic</code>
076 * @return the created <code>Topic</code>
077 */
078 public MockTopic createTopic(String name)
079 {
080 MockTopic topic = new MockTopic(name);
081 topics.put(name, topic);
082 return topic;
083 }
084
085 /**
086 * Removes a formerly created <code>Topic</code>.
087 * @param name the name of the <code>Topic</code>
088 */
089 public void removeTopic(String name)
090 {
091 topics.remove(name);
092 }
093
094 /**
095 * Returns a <code>Topic</code> that was created with
096 * {@link #createTopic} or <code>null</code> if no such
097 * <code>Topic</code> is present.
098 * @param name the name of the <code>Topic</code>
099 * @return the <code>Topic</code>
100 */
101 public MockTopic getTopic(String name)
102 {
103 return (MockTopic)topics.get(name);
104 }
105 }