Clover coverage report - Replica - 1.0-Alpha
Coverage timestamp: Dom Fev 1 2004 17:00:58 WET
file stats: LOC: 172   Methods: 13
NCLOC: 87   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
ApplicationGroupListener.java 50% 63,9% 84,6% 66,1%
coverage coverage
 1   
 /*
 2   
  * Replica is published under the terms
 3   
  * of the Apache Software License.
 4   
  */
 5   
 package replica.core;
 6   
 
 7   
 import java.io.Serializable;
 8   
 import java.util.Iterator;
 9   
 import java.util.List;
 10   
 import java.util.logging.Level;
 11   
 import java.util.logging.Logger;
 12   
 
 13   
 import replica.command.CommandProcessor;
 14   
 import replica.group.Address;
 15   
 import replica.group.GroupManager;
 16   
 import replica.group.event.GroupListener;
 17   
 import replica.group.event.MessageEvent;
 18   
 import replica.group.event.SuspectEvent;
 19   
 import replica.group.event.ViewEvent;
 20   
 
 21   
 /**
 22   
  * Listener for group messages. It then forward them as apropriated
 23   
  * to the server or database.
 24   
  * 
 25   
  * @author Pedro Costa
 26   
  * @author Helder Silva
 27   
  * @since 21/Jan/2004
 28   
  */
 29   
 public class ApplicationGroupListener implements GroupListener {
 30   
     
 31   
     static Logger logger = Logger.getLogger(ApplicationGroupListener.class.getName());
 32   
     
 33   
     GroupManager groupManager;
 34   
     CommandProcessor databaseCommandProcessor;
 35   
     CommandProcessor serverCommandProcessor;
 36   
 
 37   
     /**
 38   
      * Default constructor. 
 39   
      */
 40  6
     public ApplicationGroupListener() {
 41  6
         super();
 42   
     }
 43   
     
 44   
     /**
 45   
      * Start's listening for messages.
 46   
      * 
 47   
      * Adds this listener as a GroupListener in the GroupManager. 
 48   
      */
 49  3
     public void start(){
 50  3
         getGroupManager().addListener( this );
 51  3
         logger.info("Started Group Messages Listener.");
 52   
     }
 53   
 
 54   
     /**
 55   
      * Start's listening for messages.
 56   
      * 
 57   
      * Adds this listener as a GroupListener in the GroupManager. 
 58   
      */
 59  0
     public void stop(){
 60  0
         getGroupManager().removeListener( this );
 61  0
         logger.info("Stoped Group Messages Listener.");
 62   
     }
 63   
     
 64   
     /* (non-Javadoc)
 65   
      * @see replica.group.event.GroupListener#message(replica.group.event.MessageEvent)
 66   
      */
 67  2
     public void message(MessageEvent event) {
 68   
         
 69  2
         logger.info("Received new message from {" + event.getMessageSource() + "} message:{" + event.getMessage() + "}.");
 70   
         
 71  2
         ApplicationMessage msg = (ApplicationMessage)event.getMessage();
 72   
         
 73  2
         if( msg.isFromServer() ){
 74  1
             Object res = getDatabaseCommandProcessor().process(msg);
 75  1
             if( res != null )
 76  0
                 processDatabaseUpdateResult( msg.getSessionID(), res );
 77   
         }
 78   
         else
 79  1
             getServerCommandProcessor().process(msg);        
 80   
     }
 81   
     
 82  1
     protected void processDatabaseUpdateResult( String sessionId, Object result ){
 83   
         
 84  1
         ApplicationMessage appMsg = null;
 85  1
         if( result instanceof ApplicationMessage )
 86  0
             appMsg = (ApplicationMessage)result;
 87   
         else{
 88  1
             appMsg = new ApplicationMessage();
 89  1
             appMsg.setOriginator( ApplicationMessage.DATABASE_MODULE);
 90  1
             appMsg.setBody((Serializable)result); 
 91   
         }
 92   
         
 93  1
         appMsg.setSessionID( sessionId);
 94   
         
 95  1
         getGroupManager().sendMessage( appMsg );
 96   
     }
 97   
     
 98   
     /* (non-Javadoc)
 99   
      * @see replica.group.event.GroupListener#viewChanged(replica.group.event.ViewEvent)
 100   
      */
 101  2
     public void viewChanged(ViewEvent event) {
 102   
         // TODO Auto-generated method stub
 103   
         
 104  2
         if( logger.isLoggable(Level.FINE) ){
 105  0
             List view = event.getView();
 106   
             
 107  0
             StringBuffer res = new StringBuffer();
 108  0
             res.append("{");
 109  0
             for (Iterator iter = view.iterator(); iter.hasNext();) {
 110  0
                 Address element = (Address) iter.next();
 111  0
                 res.append("["+element+"] ");
 112   
             }
 113  0
             res.append("}.");
 114   
             
 115  0
             logger.fine("Received new view " + res + ".");
 116   
         }
 117   
 
 118   
     }
 119   
 
 120   
     /* (non-Javadoc)
 121   
      * @see replica.group.event.GroupListener#suspect(replica.group.event.SuspectEvent)
 122   
      */
 123  0
     public void suspect(SuspectEvent event) {
 124   
         // TODO Auto-generated method stub
 125   
         
 126  0
         logger.fine("Received new suspect [" + event.getAddress() + "].");
 127   
     }
 128   
 
 129   
     /**
 130   
      * @return
 131   
      */
 132  4
     public GroupManager getGroupManager() {
 133  4
         return groupManager;
 134   
     }
 135   
 
 136   
     /**
 137   
      * @param manager
 138   
      */
 139  4
     public void setGroupManager(GroupManager manager) {
 140  4
         groupManager = manager;
 141   
     }
 142   
 
 143   
     /**
 144   
      * @return
 145   
      */
 146  1
     public CommandProcessor getDatabaseCommandProcessor() {
 147  1
         return databaseCommandProcessor;
 148   
     }
 149   
 
 150   
     /**
 151   
      * @param processor
 152   
      */
 153  4
     public void setDatabaseCommandProcessor(CommandProcessor processor) {
 154  4
         databaseCommandProcessor = processor;
 155   
     }
 156   
 
 157   
     /**
 158   
      * @return
 159   
      */
 160  1
     public CommandProcessor getServerCommandProcessor() {
 161  1
         return serverCommandProcessor;
 162   
     }
 163   
 
 164   
     /**
 165   
      * @param processor
 166   
      */
 167  4
     public void setServerCommandProcessor(CommandProcessor processor) {
 168  4
         serverCommandProcessor = processor;
 169   
     }
 170   
 
 171   
 }
 172