Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/mule/providers/vm/VMConnector.java


1   /* 
2    * $Header: /cvsroot/mule/mule/src/java/org/mule/providers/vm/VMConnector.java,v 1.10 2003/10/20 21:44:38 rossmason Exp $
3    * $Revision: 1.10 $
4    * $Date: 2003/10/20 21:44:38 $
5    * ------------------------------------------------------------------------------------------------------
6    * 
7    * Copyright (c) Cubis Limited. All rights reserved.
8    * http://www.cubis.co.uk 
9    * 
10   * The software in this package is published under the terms of the BSD
11   * style license a copy of which has been included with this distribution in
12   * the LICENSE.txt file. 
13   *
14   */
15  package org.mule.providers.vm;
16  
17  import java.util.HashMap;
18  import java.util.Iterator;
19  import java.util.Map;
20  
21  import org.apache.commons.logging.Log;
22  import org.apache.commons.logging.LogFactory;
23  import org.mule.MuleException;
24  import org.mule.providers.AbstractConnector;
25  import org.mule.umo.UMOEvent;
26  import org.mule.umo.UMOException;
27  import org.mule.umo.UMOProviderDescriptor;
28  import org.mule.umo.UMOSession;
29  import org.mule.umo.provider.UMOMessageAdapter;
30  
31  /**
32   * <p><code>VMConnector</code> A simple connector wrapper to allow a Mule session to
33   * be accessed from a connector
34   *
35   * @author <a href="mailto:ross.mason@cubis.co.uk">Ross Mason</a>
36   * @version $Revision: 1.10 $
37   *
38   */
39  public class VMConnector extends AbstractConnector
40  {
41      /** A map of all receivers registered with the connector */
42      Map receivers = new HashMap();
43  
44      /** The logger for this class */
45      private static final transient Log log = LogFactory.getLog(VMConnector.class);
46  
47      /**
48       * Default constructor
49       */
50      public VMConnector()
51      {
52      }
53  
54      /* (non-Javadoc)
55       * @see org.mule.providers.AbstractConnector#create()
56       */
57      public void create() throws Exception
58      {
59  
60      }
61  
62      /* (non-Javadoc)
63       * @see org.mule.umo.provider.UMOConnector#dispatch(org.mule.umo.UMOEvent)
64       */
65      public void dispatch(UMOEvent event) throws Exception
66      {
67          //UMOProviderDescriptor provider = event.getProvider();
68          log.trace("VMConnector:dispatchEvent entered");
69          MuleMessageReceiver receiver = getReceiver(event);
70          receiver.onEvent(event);
71  
72          log.trace("VMConnector:dispatchEvent on subject " + event.getProvider().getEndpoint());
73      }
74  
75      
76      /* (non-Javadoc)
77       * @see org.mule.umo.provider.UMOConnector#send(org.mule.umo.UMOEvent)
78       */
79      public UMOEvent send(UMOEvent event) throws Exception
80      {
81          //@TODO properties are currently not being used
82          log.trace("VMConnector:sendEvent entered");
83          UMOEvent retEvent = null;
84  
85          MuleMessageReceiver receiver = getReceiver(event);
86          retEvent = receiver.onCall(event);
87          return retEvent;
88      }
89  
90      /**
91       * Obtains a receiver for a particular endpoint as specified in the provider in the event
92       * @param event the event that determines which endpoint to lookup on
93       * @return the corresponding message receiver
94       * @throws UMOException if the receiver is not found for the event
95       */
96      private MuleMessageReceiver getReceiver(UMOEvent event) throws UMOException
97      {
98  
99          MuleMessageReceiver receiver = null;
100         Object temp = receivers.get(event.getProvider().getEndpoint());
101         if (temp != null)
102         {
103             receiver = (MuleMessageReceiver) temp;
104         }
105         else
106         {
107             throw new UMOException("Failed to find listener for endpoint: " + event.getProvider().getEndpoint());
108         }
109         return receiver;
110     }
111 
112     /* (non-Javadoc)
113      * @see org.mule.umo.provider.UMOConnector#registerListener(org.mule.umo.UMOSession, org.mule.umo.UMOProviderDescriptor)
114      */
115     public void registerListener(UMOSession session, UMOProviderDescriptor provider) throws Exception
116     {
117 
118         if (session != null)
119         {
120             MuleMessageReceiver mmr = new MuleMessageReceiver();
121             mmr.create(session, provider, session.getDescriptor().getExceptionStrategy());
122             receivers.put(provider.getEndpoint(), mmr);
123 
124         }
125         else
126         {
127             throw new MuleException("Listener cannot be null on the VMConnector");
128         }
129 
130     }
131 
132     /* (non-Javadoc)
133      * @see org.mule.umo.provider.UMOConnector#removeListener(org.mule.umo.UMOSession, org.mule.umo.UMOProviderDescriptor)
134      */
135     public void removeListener(UMOSession session, UMOProviderDescriptor provider) throws Exception
136     {
137         receivers.remove(provider.getEndpoint());
138     }
139 
140     /* (non-Javadoc)
141      * @see org.mule.providers.AbstractConnector#stopConnector()
142      */
143     public synchronized void stopConnector()
144     {
145         //        for (Iterator i = receivers.values().iterator(); i.hasNext();) {
146         //            ((UMOSession) i.next()).stop();
147         //        }
148     }
149 
150     /* (non-Javadoc)
151      * @see org.mule.providers.AbstractConnector#startConnector()
152      */
153     public synchronized void startConnector()
154     {
155         //        for (Iterator i = receivers.values().iterator(); i.hasNext();) {
156         //            ((UMOSession) i.next()).start();
157         //        }
158     }
159 
160 
161     /* (non-Javadoc)
162      * @see org.mule.umo.provider.UMOConnector#getMessageAdapter(java.lang.Object)
163      */
164     public UMOMessageAdapter getMessageAdapter(Object message) throws Exception
165     {
166         MuleMessageAdapter adapter = new MuleMessageAdapter();
167         adapter.setMessage(message);
168         return adapter;
169     }
170 
171     
172     /* (non-Javadoc)
173      * @see org.mule.umo.provider.UMOConnector#getProtocol()
174      */
175     public String getProtocol()
176     {
177         return "VM";
178     }
179 
180     
181     /* (non-Javadoc)
182      * @see org.mule.providers.AbstractConnector#shutdownConnector()
183      */
184     protected void shutdownConnector() throws Exception
185     {
186         for (Iterator i = receivers.values().iterator(); i.hasNext();)
187         {
188             ((UMOSession) i.next()).destroy();
189         }
190 
191     }
192 
193 }