User: norbert 
  Date: 00/05/31 11:10:18

  Added:       src/java/org/spydermq/distributed/server
                        ConnectionReceiverRMI.java
                        ConnectionReceiverRMIImpl.java
                        DistributedJMSServerRMI.java
                        DistributedJMSServerRMIImpl.java
                        DistributedQueueConnectionFactoryRMI.java
                        DistributedQueueConnectionFactoryRMIImpl.java
                        DistributedTopicConnectionFactoryRMI.java
                        DistributedTopicConnectionFactoryRMIImpl.java
  Log:
  Change the directory name
  
  Revision  Changes    Path
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/ConnectionReceiverRMI.java
  
  Index: ConnectionReceiverRMI.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import javax.jms.Destination;
  import javax.jms.JMSException;
  import org.spydermq.SpyMessage;
  import org.spydermq.SpyDestination;
  import java.rmi.Remote;
  import java.rmi.RemoteException;
  import org.spydermq.distributed.interfaces.ConnectionReceiver;
  
  /**
   *    The RMI interface of the ConnectionReceiver object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public interface ConnectionReceiverRMI extends ConnectionReceiver, Remote
  {
        // Public --------------------------------------------------------
  
        //A message has arrived for the Connection 
      public void receive(Destination b,SpyMessage c) throws RemoteException, 
JMSException;
        //Messages have arrived for the Connection 
        public void receiveMultiple(Destination dest,SpyMessage mes[]) throws 
RemoteException, JMSException;
        //One TemporaryDestination has been deleted
        public void deleteTemporaryDestination(SpyDestination dest) throws 
RemoteException, JMSException;
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/ConnectionReceiverRMIImpl.java
  
  Index: ConnectionReceiverRMIImpl.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import javax.jms.Destination;
  import javax.jms.JMSException;
  import org.spydermq.SpyConnection;
  import org.spydermq.ConnectionQueue;
  import org.spydermq.SpyMessage;
  import org.spydermq.SpySession;
  import org.spydermq.SessionQueue;
  import org.spydermq.SpyDestination;
  import org.spydermq.SpyTopicConnection;
  import org.spydermq.SpyQueueSession;
  import org.spydermq.Log;
  import org.spydermq.NoReceiverException;
  import java.rmi.RemoteException; 
  import java.rmi.server.UnicastRemoteObject;
  import java.util.Hashtable;
  import java.util.HashSet;
  import java.util.Iterator;
  
  /**
   *    The RMI implementation of the ConnectionReceiver object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public class ConnectionReceiverRMIImpl extends UnicastRemoteObject implements 
ConnectionReceiverRMI
  {
        // Attributes ----------------------------------------------------
  
        //A link on my connection
        private SpyConnection connection;
        //Is my connection closed ?
        private boolean closed;
  
        // Constructor ---------------------------------------------------
           
        public ConnectionReceiverRMIImpl() throws RemoteException 
        {
                super();
                closed=false;
        }
  
        // Public --------------------------------------------------------
  
        public void setConnection(SpyConnection connection)
        {
                this.connection=connection;
        }
        
        //A message has arrived for this Connection, We have to dispatch it to the 
sessions
      public void receive(Destination dest,SpyMessage mes) throws JMSException
        {
                if (closed) throw new IllegalStateException("The connection is 
closed");
                
                Log.log("ConnectionReceiver: 
Receive(Destination="+dest.toString()+",Mes="+mes.toString()+")");
                
                if (connection instanceof SpyTopicConnection) {
                
                        //Get the set of subscribers for this Topic
                
                        ConnectionQueue 
connectionQueue=(ConnectionQueue)connection.destinations.get(dest);             
                        if (connectionQueue==null) return;
        
                        Iterator i=connectionQueue.subscribers.iterator();
                                        
                        while (i.hasNext()) {                                          
                 
                                        
                                SpySession session=(SpySession)i.next();
                                        
                                //add the new message to the session's queue
                                session.dispatchMessage(dest,mes);
                                        
                                //There is work to do... 
                                synchronized (session.thread) {
                                        //We should not have to wait for the lock...
                                        session.thread.notify();
                                }                       
                        }
                        
                } else {
                        
                        //Find one session waiting for this Queue
  
                        if (connection.modeStop) throw new NoReceiverException("This 
connection is stopped !");
                        ConnectionQueue 
connectionQueue=(ConnectionQueue)connection.destinations.get(dest);
                        if (connectionQueue==null) throw new 
NoReceiverException("There is no connectionQueue for this destination !");
                        if (connectionQueue.NumListeningSessions==0) throw new 
NoReceiverException("There are no listening sessions for this destination !");
                        
                        Iterator i=connectionQueue.subscribers.iterator();
                        SessionQueue sq=null;
                        while (i.hasNext()) {
                                SpySession session=(SpySession)i.next();
                                sq=(SessionQueue)session.destinations.get(dest);
                                if (sq.NumListeningSubscribers!=0) break;
                        }
                        if (sq==null||sq.NumListeningSubscribers==0) {
                                connectionQueue.NumListeningSessions=0;
                                Log.error("WARNING: The listeners count was invalid 
!");
                                throw new NoReceiverException("There are no listening 
sessions for this destination !");
                        }
  
                        //try/catch NoReceiverException
                        sq.dispatchMessage(dest,mes);
                        
                }
        } 
  
        public void receiveMultiple(Destination dest,SpyMessage mes[]) throws 
JMSException
        {
                for(int i=0;i<mes.length;i++) {
                        receive(dest,mes[i]);
                }
        }
        
      public void close() throws Exception
        {
                closed=true;            
        }
  
        //One TemporaryDestination has been deleted
        public void deleteTemporaryDestination(SpyDestination dest) throws JMSException
        {
                if (closed) throw new IllegalStateException("The connection is 
closed");        
  
                connection.deleteTemporaryDestination(dest);
        }
  
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedJMSServerRMI.java
  
  Index: DistributedJMSServerRMI.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import javax.jms.JMSException;
  import javax.jms.Destination;
  import javax.jms.Topic;
  import javax.jms.Queue;
  import javax.jms.TemporaryTopic;
  import javax.jms.TemporaryQueue;
  import org.spydermq.SpyMessage;
  import org.spydermq.SpyDestination;
  import org.spydermq.SpyDistributedConnection;
  import org.spydermq.distributed.interfaces.DistributedJMSServer;
  import java.rmi.Remote;
  import java.rmi.RemoteException;
  
  /**
   *    The RMI interface of the DistributedJMSServer object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public interface DistributedJMSServerRMI extends DistributedJMSServer, Remote
  {  
        // Public --------------------------------------------------------
  
        public String getID() throws JMSException, RemoteException;
      public void newMessage(SpyMessage val[],String id) throws JMSException, 
RemoteException;
      public void subscribe(Destination dest,SpyDistributedConnection who) throws 
JMSException, RemoteException;
        public void unsubscribe(Destination dest,SpyDistributedConnection who) throws 
JMSException, RemoteException;
        public Topic createTopic(String dest) throws JMSException, RemoteException;
        public Queue createQueue(String dest) throws JMSException, RemoteException;
        public TemporaryTopic getTemporaryTopic(SpyDistributedConnection dc) throws 
JMSException, RemoteException;
        public TemporaryQueue getTemporaryQueue(SpyDistributedConnection dc) throws 
JMSException, RemoteException;
        public void connectionClosing(SpyDistributedConnection dc) throws 
JMSException, RemoteException;
        public void deleteTemporaryDestination(SpyDestination dest) throws 
JMSException, RemoteException;
        public void checkID(String ID) throws JMSException, RemoteException;
        public SpyMessage queueReceiveNoWait(Queue queue) throws Exception, 
RemoteException;
        public void connectionListening(boolean mode,Destination 
dest,SpyDistributedConnection dc) throws Exception, RemoteException;
  
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedJMSServerRMIImpl.java
  
  Index: DistributedJMSServerRMIImpl.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import javax.jms.JMSException;
  import javax.jms.Destination;
  import javax.jms.Topic;
  import javax.jms.Queue;
  import javax.jms.TemporaryTopic;
  import javax.jms.TemporaryQueue;
  import org.spydermq.SpyMessage;
  import org.spydermq.SpyDestination;
  import org.spydermq.JMSServer;
  import org.spydermq.SpyDistributedConnection;
  import java.rmi.server.UnicastRemoteObject;
  import java.rmi.RemoteException;
  
  /**
   *    The RMI implementation of the DistributedJMSServer object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public class DistributedJMSServerRMIImpl extends UnicastRemoteObject implements 
DistributedJMSServerRMI
  { 
        // Attributes ----------------------------------------------------
  
        //The server implementation
        private JMSServer server;
        
        // Constructor ---------------------------------------------------
           
        public DistributedJMSServerRMIImpl() throws RemoteException 
        {
                super();
        }
  
        // Public --------------------------------------------------------
  
        public void setServer(JMSServer s)
        {
                server=s;
        }
        
        public String getID() throws JMSException
        {
                return server.getID();
        }
        
      public void newMessage(SpyMessage val[],String id) throws JMSException
        {
                server.newMessage(val,id);
        }
        
      public void subscribe(Destination dest,SpyDistributedConnection who) throws 
JMSException
        {
                server.subscribe(dest,who);
        }
        
        public void unsubscribe(Destination dest,SpyDistributedConnection who) throws 
JMSException
        {
                server.unsubscribe(dest,who);
        }
        
        public Topic createTopic(String dest) throws JMSException
        {
                return server.createTopic(dest);
        }
        
        public Queue createQueue(String dest) throws JMSException
        {
                return server.createQueue(dest);
        }
        
        public TemporaryTopic getTemporaryTopic(SpyDistributedConnection dc) throws 
JMSException
        {
                return server.getTemporaryTopic(dc);
        }
        
        public TemporaryQueue getTemporaryQueue(SpyDistributedConnection dc) throws 
JMSException
        {
                return server.getTemporaryQueue(dc);
        }
        
        public void connectionClosing(SpyDistributedConnection dc) throws JMSException
        {
                server.connectionClosing(dc,null);
        }
  
        public void deleteTemporaryDestination(SpyDestination dest) throws JMSException
        {
                server.deleteTemporaryDestination(dest);
        }
  
        public void checkID(String ID) throws JMSException
        {
                server.checkID(ID);
        }
        
        public SpyMessage queueReceiveNoWait(Queue queue) throws JMSException
        {
                return server.queueReceiveNoWait(queue);
        }
        
        public void connectionListening(boolean mode,Destination 
dest,SpyDistributedConnection dc) throws JMSException
        {
                server.connectionListening(mode,dest,dc);
        }
  
  
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedQueueConnectionFactoryRMI.java
  
  Index: DistributedQueueConnectionFactoryRMI.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import org.spydermq.distributed.interfaces.DistributedQueueConnectionFactory;
  import javax.jms.QueueConnection;
  import java.rmi.Remote;
  import java.rmi.RemoteException;
  
  /**
   *    The RMI interface of the DistributedQueueConnectionFactory object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public interface DistributedQueueConnectionFactoryRMI extends 
DistributedQueueConnectionFactory, Remote
  { 
        // Public --------------------------------------------------------
  
        public QueueConnection createQueueConnection() throws Exception;
      public QueueConnection createQueueConnection(String userName, String password) 
throws Exception;
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedQueueConnectionFactoryRMIImpl.java
  
  Index: DistributedQueueConnectionFactoryRMIImpl.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import java.rmi.RemoteException; 
  import java.rmi.server.UnicastRemoteObject;
  import javax.jms.QueueConnection;
  import javax.jms.QueueConnectionFactory;
  import javax.jms.JMSException;
  import org.spydermq.distributed.interfaces.DistributedJMSServer;
  import org.spydermq.SpyQueueConnection;
  import org.spydermq.security.SecurityManager;
  import java.util.Hashtable;
  
  /**
   *    The RMI implementation of the DistributedQueueConnectionFactory object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public class DistributedQueueConnectionFactoryRMIImpl extends UnicastRemoteObject 
implements DistributedQueueConnectionFactoryRMI
  {
        // Attributes ----------------------------------------------------
  
        protected DistributedJMSServer server;
        private String crCN;
        private SecurityManager securityManager;
  
        // Constructor ---------------------------------------------------
           
        public DistributedQueueConnectionFactoryRMIImpl() throws RemoteException
        {
                super();
        }
  
        // Public --------------------------------------------------------
        
        public void setServer(DistributedJMSServer theServer)
        {
                server=theServer;
        }
        
        public void setCRClassName(String className)
        {
                crCN=className;
        }
        
        public void setSecurityManager(SecurityManager securityManager)
        {
                this.securityManager=securityManager;
        }
  
        public QueueConnection createQueueConnection() throws JMSException
        {
                SpyQueueConnection obj=new SpyQueueConnection(server,null,crCN);
                return obj;
        }
  
      public QueueConnection createQueueConnection(String userName, String password) 
throws JMSException
        {
                String id=securityManager.checkUser(userName,password);
                return new SpyQueueConnection(server,id,crCN);
        }
                
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedTopicConnectionFactoryRMI.java
  
  Index: DistributedTopicConnectionFactoryRMI.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import org.spydermq.distributed.interfaces.DistributedTopicConnectionFactory;
  import javax.jms.TopicConnection;
  import java.rmi.Remote;
  import java.rmi.RemoteException;
  
  /**
   *    The RMI interface of the DistributedTopicConnectionFactory object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public interface DistributedTopicConnectionFactoryRMI extends 
DistributedTopicConnectionFactory, Remote
  { 
        // Public --------------------------------------------------------
  
        public TopicConnection createTopicConnection() throws Exception;
      public TopicConnection createTopicConnection(String userName, String password) 
throws Exception;
  }
  
  
  
  1.1                  
spyderMQ/src/java/org/spydermq/distributed/server/DistributedTopicConnectionFactoryRMIImpl.java
  
  Index: DistributedTopicConnectionFactoryRMIImpl.java
  ===================================================================
  /*
   * spyderMQ, the OpenSource JMS implementation
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.spydermq.distributed.server;
  
  import java.rmi.RemoteException; 
  import java.rmi.server.UnicastRemoteObject;
  import org.spydermq.SpyTopicConnection;
  import org.spydermq.security.SecurityManager;
  import org.spydermq.distributed.interfaces.DistributedJMSServer;
  import javax.jms.TopicConnection;
  import javax.jms.TopicConnectionFactory;
  import javax.jms.JMSException;
  import java.util.Hashtable;
  
  /**
   *    The RMI implementation of the DistributedTopicConnectionFactory object
   *      
   *    @author Norbert Lataille ([EMAIL PROTECTED])
   * 
   *    @version $Revision: 1.1 $
   */
  public class DistributedTopicConnectionFactoryRMIImpl extends UnicastRemoteObject 
implements DistributedTopicConnectionFactoryRMI
  {
        // Attributes ----------------------------------------------------
  
        protected DistributedJMSServer server;
        private String crCN;
        private SecurityManager securityManager;
  
        // Constructor ---------------------------------------------------
           
        public DistributedTopicConnectionFactoryRMIImpl() throws RemoteException
        {
                super();
        }
  
        // Public --------------------------------------------------------
        
        public void setServer(DistributedJMSServer theServer)
        {
                server=theServer;
        }
        
        public void setCRClassName(String className)
        {
                crCN=className;
        }
        
        public void setSecurityManager(SecurityManager securityManager)
        {
                this.securityManager=securityManager;
        }       
        
      public TopicConnection createTopicConnection() throws JMSException
        {
                SpyTopicConnection obj=new SpyTopicConnection(server,null,crCN);
                return obj;
        }
  
      public TopicConnection createTopicConnection(String userName, String password) 
throws JMSException
        {
                String id=securityManager.checkUser(userName,password);
                SpyTopicConnection obj=new SpyTopicConnection(server,id,crCN);
                return obj;
        }
        
  }
  
  
  

Reply via email to