Author: samindaw
Date: Mon Jan  7 19:14:46 2013
New Revision: 1429972

URL: http://svn.apache.org/viewvc?rev=1429972&view=rev
Log:
refactoring monitor

Modified:
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
    
airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/GUIWorkflowInterpreterInteractorImpl.java
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
 Mon Jan  7 19:14:46 2013
@@ -48,7 +48,7 @@ public class AiravataAPIFactory {
     
     public static AiravataAPI getAPI(URI registryURL, String gateway, String 
username, String alternateUsername, PasswordCallback callback) throws 
AiravataAPIInvocationException{
         try {
-                       AiravataClient apiObj = new AiravataClient();
+                       AiravataAPI apiObj = new AiravataClient();
                        apiObj.setCurrentUser(alternateUsername);
                        apiObj.setCallBack(callback);
                        apiObj.setRegitryURI(registryURL);

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
 Mon Jan  7 19:14:46 2013
@@ -22,7 +22,6 @@ package org.apache.airavata.client;
 
 import java.net.MalformedURLException;
 import java.net.URI;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
@@ -32,6 +31,7 @@ import java.util.Observable;
 import javax.jcr.RepositoryException;
 
 import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.AiravataManager;
 import org.apache.airavata.client.api.ApplicationManager;
 import org.apache.airavata.client.api.ExecutionManager;
@@ -55,9 +55,7 @@ import org.apache.airavata.registry.api.
 import org.apache.airavata.registry.api.Gateway;
 import org.apache.airavata.registry.api.PasswordCallback;
 import org.apache.airavata.registry.api.exception.RegistryException;
-import org.apache.airavata.ws.monitor.Monitor;
 import org.apache.airavata.ws.monitor.MonitorConfiguration;
-import org.apache.airavata.ws.monitor.MonitorEventListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -208,24 +206,30 @@ public class AiravataClient extends Obse
                }
                return config;
         }
-       protected void initialize() throws MalformedURLException, 
AiravataConfigurationException, RepositoryException, RegistryException {
-               if (!configCreated){
-                       configuration=createConfig(getRegitryURI(), 
getCurrentUser(), getPassword());
-                       configCreated=true;
-               }
-               updateClientConfiguration(configuration);
+        
+        @Override
+       public void initialize() throws AiravataAPIInvocationException {
+               try {
+                       if (!configCreated){
+                               configuration=createConfig(getRegitryURI(), 
getCurrentUser(), getPassword());
+                               configCreated=true;
+                       }
+                       updateClientConfiguration(configuration);
 
-               // At this point we do not know the workflowExperimentId
-               // FIXME: Registry URL is set null as its not used. Set this 
when we
-               // have rest services
-               builder = new 
WorkflowContextHeaderBuilder(configuration.get(BROKER),
-                               configuration.get(GFAC), null, null, null,
-                               configuration.get(MSGBOX));
-
-               // TODO: At some point this should contain the current user the 
airavata
-               // client is
-               // logged in to the Airavata system
-               setCurrentUser(getClientConfiguration().getJcrUsername());
+                       // At this point we do not know the workflowExperimentId
+                       // FIXME: Registry URL is set null as its not used. Set 
this when we
+                       // have rest services
+                       builder = new 
WorkflowContextHeaderBuilder(configuration.get(BROKER),
+                                       configuration.get(GFAC), null, null, 
null,
+                                       configuration.get(MSGBOX));
+
+                       // TODO: At some point this should contain the current 
user the airavata
+                       // client is
+                       // logged in to the Airavata system
+                       
setCurrentUser(getClientConfiguration().getJcrUsername());
+               } catch (Exception e) {
+                       throw new AiravataAPIInvocationException("Error while 
initializing the Airavata API",e);
+               }
        }
 
        private void updateClientConfiguration(Map<String, String> 
configuration)
@@ -409,27 +413,29 @@ public class AiravataClient extends Obse
 //             // log.info("Workflow output : " + worflowoutput);
 //             return worflowoutput;
 //     }
-
-       public Monitor getWorkflowExecutionMonitor(String topic) {
-               return getWorkflowExecutionMonitor(topic, null);
-       }
-
-       public Monitor getWorkflowExecutionMonitor(String topic,
-                       MonitorEventListener listener) {
-               final String fTopic = topic;
-               try {
-                       monitorConfiguration = new MonitorConfiguration(new URI(
-                                       configuration.get(BROKER)), fTopic, 
true, new URI(
-                                       configuration.get(MSGBOX)));
-               } catch (URISyntaxException e1) {
-                       e1.printStackTrace();
-               }
-               final Monitor monitor = new Monitor(monitorConfiguration);
-               monitor.setPrint(false);
-               
monitor.getEventDataRepository().registerEventListener(listener);
-               listener.setExperimentMonitor(monitor);
-               return monitor;
-       }
+//
+//     public Monitor getWorkflowExecutionMonitor(String topic) {
+//             return getWorkflowExecutionMonitor(topic, null);
+//     }
+//
+//     public Monitor getWorkflowExecutionMonitor(String topic,
+//                     MonitorEventListener listener) {
+//             final String fTopic = topic;
+//             MonitorConfiguration monitorConfiguration;
+//             try {
+//                     monitorConfiguration = new MonitorConfiguration(
+//                                     
getClientConfiguration().getMessagebrokerURL().toURI(), fTopic,
+//                                     true, 
getClientConfiguration().getMessageboxURL().toURI());
+//                     final Monitor monitor = new 
Monitor(monitorConfiguration);
+//                     monitor.printRawMessage(false);
+//                     
monitor.getEventDataRepository().registerEventListener(listener);
+//                     listener.setExperimentMonitor(monitor);
+//                     return monitor;
+//             } catch (URISyntaxException e) {
+//                     e.printStackTrace();
+//             }
+//             
+//     }
 //
 //     private void runPreWorkflowExecutionTasks(String topic, String user,
 //                     String metadata, String experimentName) throws 
RegistryException, AiravataConfigurationException {

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
 Mon Jan  7 19:14:46 2013
@@ -21,8 +21,11 @@
 
 package org.apache.airavata.client.api;
 
+import java.net.URI;
+
 import org.apache.airavata.client.api.builder.DescriptorBuilder;
 import org.apache.airavata.common.utils.Version;
+import org.apache.airavata.registry.api.PasswordCallback;
 
 
 /**
@@ -85,4 +88,14 @@ public interface AiravataAPI {
      */
     public DescriptorBuilder getDescriptorBuilder();
 
+       public void setCurrentUser(String alternateUsername);
+
+       public void setCallBack(PasswordCallback callback);
+
+       public void setRegitryURI(URI registryURL);
+
+       public void initialize() throws AiravataAPIInvocationException;
+
+       public void setGateway(String gateway);
+
 }
\ No newline at end of file

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
 Mon Jan  7 19:14:46 2013
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.client.impl;
 
+import java.net.URISyntaxException;
 import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -51,6 +52,7 @@ import org.apache.airavata.workflow.mode
 import org.apache.airavata.ws.monitor.EventData;
 import org.apache.airavata.ws.monitor.EventDataRepository;
 import org.apache.airavata.ws.monitor.Monitor;
+import org.apache.airavata.ws.monitor.MonitorConfiguration;
 import org.apache.airavata.ws.monitor.MonitorEventListener;
 import org.apache.airavata.ws.monitor.MonitorEventListenerAdapter;
 import org.apache.airavata.ws.monitor.MonitorUtil.EventType;
@@ -131,13 +133,25 @@ public class ExecutionManagerImpl implem
        @Override
        public Monitor getExperimentMonitor(String experimentId)
                        throws AiravataAPIInvocationException {
-               return getClient().getWorkflowExecutionMonitor(experimentId);
+               return getExperimentMonitor(experimentId,null);
        }
 
        @Override
        public Monitor getExperimentMonitor(String 
experimentId,MonitorEventListener listener)
                        throws AiravataAPIInvocationException {
-               return 
getClient().getWorkflowExecutionMonitor(experimentId,listener);
+               MonitorConfiguration monitorConfiguration;
+               try {
+                       monitorConfiguration = new MonitorConfiguration(
+                                       
getClient().getClientConfiguration().getMessagebrokerURL().toURI(), 
experimentId,
+                                       true, 
getClient().getClientConfiguration().getMessageboxURL().toURI());
+                       final Monitor monitor = new 
Monitor(monitorConfiguration);
+                       monitor.printRawMessage(false);
+                       
monitor.getEventDataRepository().registerEventListener(listener);
+                       listener.setExperimentMonitor(monitor);
+                       return monitor;
+               } catch (URISyntaxException e) {
+                       throw new AiravataAPIInvocationException(e);
+               }
        }
 
        //------------------Deprecated Functions---------------------//

Modified: 
airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
 (original)
+++ 
airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
 Mon Jan  7 19:14:46 2013
@@ -48,9 +48,9 @@ public class Monitor extends EventProduc
 
     protected WsmgClient wsmgClient;
 
-    protected boolean print;
+    protected boolean printRawMessages;
 
-    protected long timeout = 20000L;
+    protected long messagePullTimeout = 20000L;
 
     protected boolean monitoring = false;
     
@@ -58,23 +58,14 @@ public class Monitor extends EventProduc
     
     private boolean monitoringFailed=false;
     
-    /**
-     * Constructs a Monitor.
-     * 
-     * @param configuration
-     */
     public Monitor(MonitorConfiguration configuration) {
         this.configuration = configuration;
-        // The first one is special and it is for the main event panel display
-        // and
-        // it does not have and filters
+        // First one keeps all event data & it doesn't have filters
         this.eventDataMap.put(DEFAULT_MODEL_KEY, new EventDataRepository());
-
-
     }
 
     /**
-     * @return The configuration
+     * @return The configuration for monitoring
      */
     public MonitorConfiguration getConfiguration() {
         return this.configuration;
@@ -85,7 +76,6 @@ public class Monitor extends EventProduc
      * @return 
      */
     public EventDataRepository getEventDataRepository() {
-        // send the first one cos that is the default one
         return this.eventDataMap.get(DEFAULT_MODEL_KEY);
     }
 
@@ -102,13 +92,15 @@ public class Monitor extends EventProduc
      * @throws MonitorException
      */
     public synchronized void start() throws MonitorException {
-
+       
+       //Make sure currently we are not doing any monitoring
         stop();
 
-        // Stop the previous monitoring if any.
+        // Reset monitoring variables
        monitoringCompleted=false;
        monitoringFailed=false;
-                       
+
+       //Notify listeners that the monitoring is about to start
        getEventDataRepository().triggerListenerForPreMonitorStart();
 
         subscribe();
@@ -121,9 +113,6 @@ public class Monitor extends EventProduc
                 final String nodeID = string;
                 // for each wsnode there is one data model which
                 this.eventDataMap.put(nodeID, new EventDataRepository(new 
EventFilter() {
-                    /**
-                     * @see 
org.apache.airavata.ws.monitor.EventFilter#isAcceptable(org.apache.airavata.ws.monitor.EventData)
-                     */
                     public boolean isAcceptable(EventData event) {
                         return event != null && event.getNodeID() != null && 
event.getNodeID().equals(nodeID);
                     }
@@ -133,14 +122,34 @@ public class Monitor extends EventProduc
         }
         getEventDataRepository().triggerListenerForPostMonitorStart();
     }
-    
+
+    /**
+     * Stops monitoring without using a thread.
+     * 
+     * @throws MonitorException
+     */
+    public synchronized void stop() throws MonitorException {
+        try {
+                       if (this.wsmgClient != null) {
+                               
getEventDataRepository().triggerListenerForPreMonitorStop();
+                           unsubscribe(this.wsmgClient);
+                           this.wsmgClient = null;
+                           
getEventDataRepository().triggerListenerForPostMonitorStop();
+                       }
+               } finally{
+               monitoringCompleted=true;
+               }
+    }
+
+    /**
+     * Start monitoring asynchronously
+     */
     public void startMonitoring(){
-       final Monitor m=this;
        new Thread(){
                @Override
                public void run() {
                        try {
-                                       m.start();
+                               Monitor.this.start();
                                } catch (MonitorException e) {
                                        e.printStackTrace();
                                }
@@ -148,15 +157,11 @@ public class Monitor extends EventProduc
        }.start();
     }
     
-    public void stopMonitoring(){
-               asynchronousStop();
-    }
-
     /**
-     * Stops monitoring.
+     * Stop monitoring asynchronously
      */
-    protected void asynchronousStop() {
-        // Users don't need to know the end of unsubscription.
+    public void stopMonitoring(){
+       // Users don't need to know the end of unsubscription.
         new Thread() {
             @Override
             public void run() {
@@ -171,27 +176,9 @@ public class Monitor extends EventProduc
     }
 
     /**
-     * Stops monitoring without using a thread.
-     * 
-     * @throws MonitorException
-     */
-    public synchronized void stop() throws MonitorException {
-        try {
-                       if (this.wsmgClient != null) {
-                               
getEventDataRepository().triggerListenerForPreMonitorStop();
-                           unsubscribe(this.wsmgClient);
-                           this.wsmgClient = null;
-                           
getEventDataRepository().triggerListenerForPostMonitorStop();
-                       }
-               } finally{
-               monitoringCompleted=true;
-               }
-    }
-
-    /**
-     * Resets the graph and clear the monitoring table. Remove all the extra 
tablemodels available
+     * Resets the graph and clear the monitoring table. Remove all the extra 
table models available
      */
-    public void reset() {
+    public void resetEventData() {
         Set<String> keys = this.eventDataMap.keySet();
         LinkedList<String> keysToBeRemoved = new LinkedList<String>();
         // Remove everthing leaving only the last one
@@ -211,10 +198,10 @@ public class Monitor extends EventProduc
     /**
      * @param event
      */
-    public synchronized void handleNotification(XmlElement event) {
+    protected synchronized void handleNotification(XmlElement event) {
         Set<String> keys = this.eventDataMap.keySet();
         // Remove everthing leaving only the last one
-        if(print){
+        if(printRawMessages){
             System.out.println(XMLUtil.xmlElementToString(event));
         }
         for (String key : keys) {
@@ -222,10 +209,14 @@ public class Monitor extends EventProduc
         }
     }
 
+    /**
+     * Subscribe to the WS Messenger client to pull notifications from the 
message box
+     * @throws MonitorException
+     */
     private void subscribe() throws MonitorException {
         this.wsmgClient = new WsmgClient(this);
-        this.wsmgClient.setTimeout(this.getMessagePullTimeout());
         //Users can set the timeout and interval for the subscription using 
wsmg setter methods, here we use the default values
+        this.wsmgClient.setTimeout(this.getMessagePullTimeout());
         this.wsmgClient.subscribe();
         setMonitoring(true);
 
@@ -233,10 +224,14 @@ public class Monitor extends EventProduc
         sendSafeEvent(new Event(Type.MONITOR_STARTED));
     }
 
+    /**
+     * Unsubcribe from the ws messager client
+     * @param client
+     * @throws MonitorException
+     */
     private void unsubscribe(WsmgClient client) throws MonitorException {
         // Enable/disable some menu items.
         sendSafeEvent(new Event(Type.MONITOR_STOPED));
-
         client.unsubscribe();
         setMonitoring(false);
     }
@@ -259,7 +254,7 @@ public class Monitor extends EventProduc
      * @param print - if <code>true</code> raw notifications are printed
      */
     public void printRawMessage(boolean print){
-       this.print = print;
+       this.printRawMessages = print;
     }
     
     /**
@@ -267,7 +262,7 @@ public class Monitor extends EventProduc
      * @return
      */
     public long getMessagePullTimeout() {
-        return timeout;
+        return messagePullTimeout;
     }
 
     /**
@@ -275,7 +270,7 @@ public class Monitor extends EventProduc
      * @param timeout
      */
     public void setMessagePullTimeout(long timeout) {
-        this.timeout = timeout;
+        this.messagePullTimeout = timeout;
     }
 
     /**
@@ -320,6 +315,6 @@ public class Monitor extends EventProduc
      * @param print - if <code>true</code> raw notifications are printed
      */
     public void setPrint(boolean print) {
-        this.print = print;
+        this.printRawMessages = print;
     }
 }
\ No newline at end of file

Modified: 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/GUIWorkflowInterpreterInteractorImpl.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/GUIWorkflowInterpreterInteractorImpl.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/GUIWorkflowInterpreterInteractorImpl.java
 (original)
+++ 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/GUIWorkflowInterpreterInteractorImpl.java
 Mon Jan  7 19:14:46 2013
@@ -119,7 +119,7 @@ public class GUIWorkflowInterpreterInter
                        } catch (MonitorException e) {
                                e.printStackTrace();
                        } finally {
-                               this.engine.getMonitor().reset();
+                               this.engine.getMonitor().resetEventData();
                        }
                        break;
                case HANDLE_DEPENDENT_NODES_DIFFERED_INPUTS:

Modified: 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java?rev=1429972&r1=1429971&r2=1429972&view=diff
==============================================================================
--- 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
 (original)
+++ 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
 Mon Jan  7 19:14:46 2013
@@ -241,7 +241,7 @@ public class RunMenuItem  implements Eve
         item.setMnemonic(KeyEvent.VK_R);
         item.addActionListener(new AbstractAction() {
             public void actionPerformed(ActionEvent event) {
-                engine.getMonitor().reset();
+                engine.getMonitor().resetEventData();
             }
         });
         item.setVisible(false);


Reply via email to