Ignore:
Timestamp:
06/28/13 12:41:11 (11 years ago)
Author:
stoda
Message:

MultiProxymq? added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/main/java/omq/common/broker/Broker.java

    r66 r70  
    22
    33import java.io.IOException;
     4import java.lang.reflect.Proxy;
    45import java.net.URL;
    56import java.util.HashMap;
     
    1011import omq.Remote;
    1112import omq.client.listener.ResponseListener;
     13import omq.client.proxy.MultiProxymq;
    1214import omq.client.proxy.Proxymq;
    1315import omq.common.event.Event;
     
    4648        private Map<String, RemoteObject> remoteObjs;
    4749        private Map<String, Object> proxies = new Hashtable<String, Object>();
     50        private Map<String, Object> multiProxies = new Hashtable<String, Object>();
    4851
    4952        public Broker(Properties env) throws Exception {
     
    7376                        responseListener.kill();
    7477                        eventDispatcher.kill();
    75                         //TODO proxies = null; ??
     78                        // TODO proxies = null; ??
    7679                }
    7780                // Stop all the remote objects working
     
    136139                                Proxymq proxy = new Proxymq(reference, contract, this);
    137140                                Class<?>[] array = { contract };
    138                                 Object newProxy = Proxymq.newProxyInstance(contract.getClassLoader(), array, proxy);
     141                                Object newProxy = Proxy.newProxyInstance(contract.getClassLoader(), array, proxy);
    139142                                proxies.put(reference, newProxy);
    140143                                return (T) newProxy;
     
    147150        }
    148151
     152        @SuppressWarnings("unchecked")
     153        public synchronized <T extends Remote> T lookupMulti(String reference, Class<T> contract) throws RemoteException {
     154                try {
     155                        if (!multiProxies.containsKey(reference)) {
     156                                MultiProxymq proxy = new MultiProxymq(reference, contract, this);
     157                                Class<?>[] array = { contract };
     158                                Object newProxy = Proxy.newProxyInstance(contract.getClassLoader(), array, proxy);
     159                                multiProxies.put(reference, newProxy);
     160                                return (T) newProxy;
     161                        }
     162                        return (T) multiProxies.get(reference);
     163
     164                } catch (Exception e) {
     165                        throw new RemoteException(e);
     166                }
     167        }
     168
    149169        public void bind(String reference, RemoteObject remote) throws RemoteException {
    150170                try {
     
    155175                }
    156176        }
    157        
     177
    158178        public void startTriggerEvent(String reference, RemoteObject remote) throws RemoteException {
    159179                try {
Note: See TracChangeset for help on using the changeset viewer.