Refactored GFacHandler and GFacProvider inheritance, merged Recoverable 
interface with its correspond normal interface.


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a3487e77
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a3487e77
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a3487e77

Branch: refs/heads/master
Commit: a3487e770a29be9060ee72298fa91f9b0a71e4be
Parents: 4819dbb
Author: shamrath <[email protected]>
Authored: Sun May 10 15:07:37 2015 -0400
Committer: shamrath <[email protected]>
Committed: Sun May 10 15:07:37 2015 -0400

----------------------------------------------------------------------
 .../gaussian/handler/GaussianHandler.java       |  4 +-
 .../gfac/bes/handlers/SMSByteIOInHandler.java   |  9 +-
 .../gfac/bes/handlers/SMSByteIOOutHandler.java  |  5 ++
 .../gfac/bes/provider/impl/BESProvider.java     |  9 +-
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 88 +++++++-------------
 .../gfac/core/handler/AbstractHandler.java      | 25 +++++-
 .../handler/AbstractRecoverableHandler.java     | 88 --------------------
 .../core/handler/AppDescriptorCheckHandler.java |  2 +-
 .../airavata/gfac/core/handler/GFacHandler.java |  8 ++
 .../core/handler/GFacRecoverableHandler.java    | 45 ----------
 .../provider/AbstractRecoverableProvider.java   | 75 -----------------
 .../gfac/core/provider/GFacProvider.java        |  7 ++
 .../core/provider/GFacRecoverableProvider.java  | 44 ----------
 .../gfac/core/states/GfacPluginState.java       |  7 +-
 .../airavata/gfac/core/utils/GFacUtils.java     | 20 +++--
 .../apache/airavata/job/TestGlobalHandler.java  |  6 ++
 .../org/apache/airavata/job/TestInHandler.java  |  6 ++
 .../org/apache/airavata/job/TestOutHandler.java |  6 ++
 .../org/apache/airavata/job/TestProvider.java   |  5 ++
 .../airavata/job/TestThreadedHandler.java       |  6 ++
 .../handler/GSISSHDirectorySetupHandler.java    |  4 +-
 .../gfac/gsissh/handler/GSISSHInputHandler.java |  4 +-
 .../gsissh/handler/GSISSHOutputHandler.java     |  4 +-
 .../gsissh/handler/NewGSISSHOutputHandler.java  |  7 +-
 .../gsissh/provider/impl/GSISSHProvider.java    |  5 +-
 .../handler/LocalDirectorySetupHandler.java     |  6 ++
 .../gfac/local/handler/LocalInputHandler.java   |  5 +-
 .../gfac/local/provider/impl/LocalProvider.java |  5 ++
 .../handlers/GridPullMonitorHandler.java        |  6 ++
 .../handlers/GridPushMonitorHandler.java        |  5 ++
 .../ssh/handler/AdvancedSCPInputHandler.java    |  4 +-
 .../ssh/handler/AdvancedSCPOutputHandler.java   |  5 ++
 .../gfac/ssh/handler/NewSSHOutputHandler.java   |  7 +-
 .../ssh/handler/SSHDirectorySetupHandler.java   |  8 +-
 .../gfac/ssh/handler/SSHInputHandler.java       |  5 ++
 .../gfac/ssh/handler/SSHOutputHandler.java      |  5 ++
 .../gfac/ssh/provider/impl/SSHProvider.java     |  5 +-
 37 files changed, 208 insertions(+), 347 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
 
b/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
index 048ade6..0d21665 100644
--- 
a/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
+++ 
b/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
@@ -22,7 +22,7 @@
 package org.apache.airavata.application.gaussian.handler;
 
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import 
org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
@@ -39,7 +39,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-public class GaussianHandler extends AbstractRecoverableHandler {
+public class GaussianHandler extends AbstractHandler {
 
     private static final Logger logger = 
LoggerFactory.getLogger(GaussianHandler.class);
     public static final String LINK_SECTION = "%";

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
index 6bc6183..add8cb1 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
@@ -45,6 +45,11 @@ public class SMSByteIOInHandler extends AbstractSMSHandler 
implements GFacHandle
                }
 
        }
-       
-       
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
index 354abf6..1baa2d9 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
@@ -84,5 +84,10 @@ public class SMSByteIOOutHandler extends AbstractSMSHandler 
implements GFacHandl
                        }               
 
                }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
index b301f2b..d505671 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
@@ -412,8 +412,13 @@ public class BESProvider extends AbstractProvider 
implements GFacProvider,
                        throws GFacProviderException, GFacException {
                // TODO Auto-generated method stub
        }
-       
-       protected void waitUntilDone(FactoryClient factory, 
EndpointReferenceType activityEpr, JobDetails jobDetails) throws Exception {
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException {
+        // TODO: Auto generated method body.
+    }
+
+    protected void waitUntilDone(FactoryClient factory, EndpointReferenceType 
activityEpr, JobDetails jobDetails) throws Exception {
                
                try {
                        while ((factory.getActivityStatus(activityEpr) != 
ActivityStateEnumeration.FINISHED)

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
index 98ba942..d5e623e 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
@@ -43,7 +43,6 @@ import 
org.apache.airavata.gfac.core.notification.events.ExecutionFailEvent;
 import org.apache.airavata.gfac.core.notification.listeners.LoggingListener;
 import org.apache.airavata.gfac.core.provider.GFacProvider;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
-import org.apache.airavata.gfac.core.provider.GFacRecoverableProvider;
 import org.apache.airavata.gfac.core.states.GfacExperimentState;
 import org.apache.airavata.gfac.core.states.GfacPluginState;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
@@ -829,20 +828,16 @@ public class BetterGfacImpl implements GFac,Watcher {
         GFacProvider provider = jobExecutionContext.getProvider();
         if (provider != null) {
             monitorPublisher.publish(new GfacExperimentStateChangeRequest(new 
MonitorID(jobExecutionContext), GfacExperimentState.PROVIDERINVOKING));
-            String plState = GFacUtils.getPluginState(zk, jobExecutionContext, 
provider.getClass().getName());
-            if (plState!=null && Integer.valueOf(plState) >= 
GfacPluginState.INVOKED.getValue()) {    // this will make sure if a plugin 
crashes it will not launch from the scratch, but plugins have to save their 
invoked state
-                if (provider instanceof GFacRecoverableProvider) {
-                    GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
-                    ((GFacRecoverableProvider) 
provider).recover(jobExecutionContext);
-                    GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
-                }
-            } else {
-                GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
+            GfacPluginState plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, provider.getClass().getName());
+            GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
+            if (plState != null && plState == GfacPluginState.INVOKING) {    
// this will make sure if a plugin crashes it will not launch from the scratch, 
but plugins have to save their invoked state
                 initProvider(provider, jobExecutionContext);
                 executeProvider(provider, jobExecutionContext);
                 disposeProvider(provider, jobExecutionContext);
-                GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
+            } else {
+                provider.recover(jobExecutionContext);
             }
+            GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
             monitorPublisher.publish(new GfacExperimentStateChangeRequest(new 
MonitorID(jobExecutionContext), GfacExperimentState.PROVIDERINVOKED));
         }
 
@@ -868,24 +863,21 @@ public class BetterGfacImpl implements GFac,Watcher {
         }
     }
 
+    // TODO - Did refactoring, but need to recheck the logic again.
     private void reInvokeProviderCancel(JobExecutionContext 
jobExecutionContext) throws GFacException, GFacProviderException, 
ApplicationSettingsException, InterruptedException, KeeperException {
         GFacProvider provider = jobExecutionContext.getProvider();
         if (provider != null) {
             monitorPublisher.publish(new GfacExperimentStateChangeRequest(new 
MonitorID(jobExecutionContext), GfacExperimentState.PROVIDERINVOKING));
-            String plState = GFacUtils.getPluginState(zk, jobExecutionContext, 
provider.getClass().getName());
-            if (Integer.valueOf(plState) >= 
GfacPluginState.INVOKED.getValue()) {    // this will make sure if a plugin 
crashes it will not launch from the scratch, but plugins have to save their 
invoked state
-                if (provider instanceof GFacRecoverableProvider) {
-                    GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
-                    ((GFacRecoverableProvider) 
provider).recover(jobExecutionContext);
-                    GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
-                }
-            } else {
-                GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
+            GfacPluginState plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, provider.getClass().getName());
+            GFacUtils.createPluginZnode(zk, jobExecutionContext, 
provider.getClass().getName());
+            if (plState == GfacPluginState.UNKNOWN || plState == 
GfacPluginState.INVOKING) {    // this will make sure if a plugin crashes it 
will not launch from the scratch, but plugins have to save their invoked state
                 initProvider(provider, jobExecutionContext);
                 cancelProvider(provider, jobExecutionContext);
                 disposeProvider(provider, jobExecutionContext);
-                GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
+            } else {
+                provider.recover(jobExecutionContext);
             }
+            GFacUtils.updatePluginState(zk, jobExecutionContext, 
provider.getClass().getName(), GfacPluginState.COMPLETED);
             monitorPublisher.publish(new GfacExperimentStateChangeRequest(new 
MonitorID(jobExecutionContext), GfacExperimentState.PROVIDERINVOKED));
         }
 
@@ -1106,6 +1098,7 @@ public class BetterGfacImpl implements GFac,Watcher {
      * @param jobExecutionContext
      * @throws GFacException
      */
+    // TODO - Did refactoring, but need to recheck the logic again.
     private void reInvokeInFlowHandlers(JobExecutionContext 
jobExecutionContext) throws GFacException {
         List<GFacHandlerConfig> handlers = 
jobExecutionContext.getGFacConfiguration().getInHandlers();
         try {
@@ -1117,31 +1110,18 @@ public class BetterGfacImpl implements GFac,Watcher {
                 try {
                     handlerClass = 
Class.forName(handlerClassName.getClassName().trim()).asSubclass(GFacHandler.class);
                     handler = handlerClass.newInstance();
-                    String plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, handlerClassName.getClassName());
-                    int state = 0;
-                    try {
-                        state = Integer.valueOf(plState);
-                    } catch (NumberFormatException e) {
-
-                    }
-                    if (state >= GfacPluginState.INVOKED.getValue()) {
-                        if (handler instanceof GFacRecoverableHandler) {
-                            // if these already ran we re-run only recoverable 
handlers
-                            log.info(handlerClassName.getClassName() + " is a 
recoverable handler so we recover the handler");
-                            GFacUtils.createPluginZnode(zk, 
jobExecutionContext, handlerClassName.getClassName(), GfacPluginState.INVOKING);
-                            
handler.initProperties(handlerClassName.getProperties());
-                            ((GFacRecoverableHandler) 
handler).recover(jobExecutionContext);
-                            GFacUtils.updatePluginState(zk, 
jobExecutionContext, handlerClassName.getClassName(), 
GfacPluginState.COMPLETED);
-                        } else {
-                            log.info(handlerClassName.getClassName() + " is 
not a recoverable handler so we do not run because it already ran in last-run");
-                        }
-                    } else {
+                    GfacPluginState plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, handlerClassName.getClassName());
+                    GFacUtils.createPluginZnode(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.INVOKING);
+                    handler.initProperties(handlerClassName.getProperties());
+                    if (plState == GfacPluginState.UNKNOWN || plState == 
GfacPluginState.INVOKING) {
                         log.info(handlerClassName.getClassName() + " never ran 
so we run this is normal mode");
-                        GFacUtils.createPluginZnode(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.INVOKING);
-                        
handler.initProperties(handlerClassName.getProperties());
                         handler.invoke(jobExecutionContext);
-                        GFacUtils.updatePluginState(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.COMPLETED);
+                    } else {
+                        // if these already ran we re-run only recoverable 
handlers
+                        log.info(handlerClassName.getClassName() + " is a 
recoverable handler so we recover the handler");
+                        handler.recover(jobExecutionContext);
                     }
+                    GFacUtils.updatePluginState(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.COMPLETED);
                 } catch (GFacHandlerException e) {
                     throw new GFacException("Error Executing a InFlow 
Handler", e.getCause());
                 } catch (ClassNotFoundException e) {
@@ -1166,6 +1146,7 @@ public class BetterGfacImpl implements GFac,Watcher {
         }
     }
 
+    // TODO - Did refactoring, but need to recheck the logic again.
     public void reInvokeOutFlowHandlers(JobExecutionContext 
jobExecutionContext) throws GFacException {
         String experimentPath = null;
         try {
@@ -1211,24 +1192,17 @@ public class BetterGfacImpl implements GFac,Watcher {
             try {
                 handlerClass = 
Class.forName(handlerClassName.getClassName().trim()).asSubclass(GFacHandler.class);
                 handler = handlerClass.newInstance();
-                String plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, handlerClassName.getClassName());
-                if (Integer.valueOf(plState) >= 
GfacPluginState.INVOKED.getValue()) {
-                    if (handler instanceof GFacRecoverableHandler) {
-                        // if these already ran we re-run only recoverable 
handlers
-                        log.info(handlerClassName.getClassName() + " is a 
recoverable handler so we recover the handler");
-                        GFacUtils.createPluginZnode(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.INVOKING);
-                        ((GFacRecoverableHandler) 
handler).recover(jobExecutionContext);
-                        GFacUtils.updatePluginState(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.COMPLETED);
-                    } else {
-                        log.info(handlerClassName.getClassName() + " is not a 
recoverable handler so we do not run because it already ran in last-run");
-                    }
-                } else {
+                GfacPluginState plState = GFacUtils.getPluginState(zk, 
jobExecutionContext, handlerClassName.getClassName());
+                GFacUtils.createPluginZnode(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.INVOKING);
+                if (plState == GfacPluginState.UNKNOWN || plState == 
GfacPluginState.INVOKING) {
                     log.info(handlerClassName.getClassName() + " never ran so 
we run this in normal mode");
-                    GFacUtils.createPluginZnode(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.INVOKING);
                     handler.initProperties(handlerClassName.getProperties());
                     handler.invoke(jobExecutionContext);
-                    GFacUtils.updatePluginState(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.COMPLETED);
+                } else {
+                    // if these already ran we re-run only recoverable handlers
+                    handler.recover(jobExecutionContext);
                 }
+                GFacUtils.updatePluginState(zk, jobExecutionContext, 
handlerClassName.getClassName(), GfacPluginState.COMPLETED);
             } catch (ClassNotFoundException e) {
                 try {
                     StringWriter errors = new StringWriter();

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
index b6cc359..1bdfa97 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
@@ -23,12 +23,22 @@ package org.apache.airavata.gfac.core.handler;
 import org.apache.airavata.common.utils.MonitorPublisher;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
+import org.apache.airavata.gfac.core.states.GfacPluginState;
+import org.apache.airavata.gfac.core.utils.GFacUtils;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.messaging.event.TaskIdentifier;
+import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
 import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
 import org.apache.airavata.registry.cpi.Registry;
 import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
 
 public abstract class AbstractHandler implements GFacHandler {
-       protected Registry registry = null;
+    private static final Logger logger = 
LoggerFactory.getLogger(AbstractHandler.class);
+    protected Registry registry = null;
 
     protected MonitorPublisher publisher = null;
 
@@ -37,6 +47,11 @@ public abstract class AbstractHandler implements GFacHandler 
{
     }
 
     public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        try {
+            GFacUtils.updatePluginState(jobExecutionContext.getZk(), 
jobExecutionContext, this.getClass().getName(), GfacPluginState.INVOKED);
+        } catch (Exception e) {
+            logger.error("Error saving Recoverable provider state", e);
+        }
                registry = jobExecutionContext.getRegistry();
         if(registry == null){
             try {
@@ -61,4 +76,12 @@ public abstract class AbstractHandler implements GFacHandler 
{
     public void setRegistry(Registry registry) {
         this.registry = registry;
     }
+
+    protected void fireTaskOutputChangeEvent(JobExecutionContext 
jobExecutionContext, List<OutputDataObjectType> outputArray) {
+        TaskIdentifier taskIdentity = new 
TaskIdentifier(jobExecutionContext.getTaskData().getTaskID(),
+                
jobExecutionContext.getWorkflowNodeDetails().getNodeInstanceId(),
+                jobExecutionContext.getExperimentID(),
+                jobExecutionContext.getGatewayID());
+        publisher.publish(new TaskOutputChangeEvent(outputArray, 
taskIdentity));
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java
deleted file mode 100644
index 566a6ba..0000000
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.gfac.core.handler;
-
-import org.apache.airavata.common.utils.MonitorPublisher;
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
-import org.apache.airavata.gfac.core.states.GfacPluginState;
-import org.apache.airavata.gfac.core.utils.GFacUtils;
-import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
-import org.apache.airavata.model.messaging.event.TaskIdentifier;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.Registry;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-public abstract class AbstractRecoverableHandler implements 
GFacRecoverableHandler {
-    private static final Logger logger = 
LoggerFactory.getLogger(AppDescriptorCheckHandler.class);
-    protected Registry registry = null;
-
-    protected MonitorPublisher publisher = null;
-
-    protected AbstractRecoverableHandler() {
-        publisher = BetterGfacImpl.getMonitorPublisher();   // This will not 
be null because this will be initialize in GFacIml
-    }
-
-    public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
-        try {
-            GFacUtils.updatePluginState(jobExecutionContext.getZk(), 
jobExecutionContext, this.getClass().getName(), GfacPluginState.INVOKED);
-        } catch (Exception e) {
-            logger.error("Error saving Recoverable provider state", e);
-        }
-        registry = jobExecutionContext.getRegistry();
-        if (registry == null) {
-            try {
-                registry = RegistryFactory.getDefaultRegistry();
-            } catch (RegistryException e) {
-                throw new GFacHandlerException("unable to create registry 
instance", e);
-            }
-        }
-    }
-
-    public MonitorPublisher getPublisher() {
-        return publisher;
-    }
-
-    public void setPublisher(MonitorPublisher publisher) {
-        this.publisher = publisher;
-    }
-
-    public Registry getRegistry() {
-        return registry;
-    }
-
-    public void setRegistry(Registry registry) {
-        this.registry = registry;
-    }
-
-    protected void fireTaskOutputChangeEvent(JobExecutionContext 
jobExecutionContext, List<OutputDataObjectType> outputArray) {
-        TaskIdentifier taskIdentity = new 
TaskIdentifier(jobExecutionContext.getTaskData().getTaskID(),
-                
jobExecutionContext.getWorkflowNodeDetails().getNodeInstanceId(),
-                jobExecutionContext.getExperimentID(),
-                jobExecutionContext.getGatewayID());
-        publisher.publish(new TaskOutputChangeEvent(outputArray, 
taskIdentity));
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AppDescriptorCheckHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AppDescriptorCheckHandler.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AppDescriptorCheckHandler.java
index 34ea139..7302fcf 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AppDescriptorCheckHandler.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AppDescriptorCheckHandler.java
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory;
 
 import java.util.Properties;
 
-public class AppDescriptorCheckHandler implements GFacRecoverableHandler {
+public class AppDescriptorCheckHandler implements GFacHandler {
     private static final Logger logger = 
LoggerFactory.getLogger(AppDescriptorCheckHandler.class);
 
     public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacHandler.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacHandler.java
index f820e29..15b86dd 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacHandler.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacHandler.java
@@ -49,4 +49,12 @@ public interface GFacHandler {
      * @throws GFacHandlerException
      */
     public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException;
+
+
+    /**
+     * This method can be used to implement recovering part of the stateful 
handler
+     * If you do not want to recover an already ran handler you leave this 
recover method empty.
+     * @param jobExecutionContext
+     */
+    public void recover(JobExecutionContext jobExecutionContext)throws 
GFacHandlerException;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacRecoverableHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacRecoverableHandler.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacRecoverableHandler.java
deleted file mode 100644
index ab778b8..0000000
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/GFacRecoverableHandler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.gfac.core.handler;
-
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-
-/**
- * This handler type can be used to implement stateful Operation and
- * we recommend to use the ZK client to store and retrieve the states
- * of the handler implementation. Framework level we use
- * ZK to decide handler ran successfully or not so each handler
- * execution details can be found in following zk path
- * 
/gfac-experiment/<gfac-node-name>/experimentId+taskId/full-qualified-handlername/state
- * ex: 
/gfac-experiment/gfac-node0/echoExperiment_2c6c11b8-dea0-4ec8-9832-f3e69fe2e6bb+IDontNeedaNode_682faa66-6218-4897-9271-656bfb8b2bd1/org.apache.airavata.gfac.handlers.Test/state
- */
-public interface GFacRecoverableHandler extends GFacHandler {
-
-
-    /**
-     * This method can be used to implement recovering part of the stateful 
handler
-     * If you do not want to recover an already ran handler you can simply 
implement
-     * GfacAbstract Handler or GFacHandler or leave this recover method empty.
-     * @param jobExecutionContext
-     */
-    public void recover(JobExecutionContext jobExecutionContext)throws 
GFacHandlerException;
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java
deleted file mode 100644
index c6a105e..0000000
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.gfac.core.provider;
-
-import org.apache.airavata.common.utils.MonitorPublisher;
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
-import org.apache.airavata.model.workspace.experiment.JobDetails;
-import org.apache.airavata.model.workspace.experiment.JobStatus;
-import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.Registry;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class AbstractRecoverableProvider implements 
GFacRecoverableProvider {
-    private final Logger log = LoggerFactory.getLogger(this.getClass());
-
-    protected Registry registry = null;
-    protected JobDetails details;     //todo we need to remove this and add 
methods to fill Job details, this is not a property of a provider
-    protected JobStatus status;   //todo we need to remove this and add 
methods to fill Job details, this is not a property of a provider
-    protected JobExecutionContext jobExecutionContext;
-
-    protected MonitorPublisher monitorPublisher;
-
-    protected AbstractRecoverableProvider() {                                  
          //todo this has to be fixed
-        this.monitorPublisher = BetterGfacImpl.getMonitorPublisher();
-        if (this.monitorPublisher == null) {
-            this.monitorPublisher = BetterGfacImpl.getMonitorPublisher();
-        }
-    }
-
-    public void initialize(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException {
-        log.debug("Initializing " + this.getClass().getName());
-        if (jobExecutionContext.getRegistry() == null) {
-            try {
-                registry = RegistryFactory.getDefaultRegistry();
-            } catch (RegistryException e) {
-                throw new GFacException("Unable to create registry instance", 
e);
-            }
-        } else {
-            registry = jobExecutionContext.getRegistry();
-        }
-        details = new JobDetails();
-        status = new JobStatus();
-        this.jobExecutionContext = jobExecutionContext;
-    }
-
-    public MonitorPublisher getMonitorPublisher() {
-        return monitorPublisher;
-    }
-
-    public void setMonitorPublisher(MonitorPublisher monitorPublisher) {
-        this.monitorPublisher = monitorPublisher;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacProvider.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacProvider.java
index 031cf77..6006309 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacProvider.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacProvider.java
@@ -59,4 +59,11 @@ public interface GFacProvider{
     public void cancelJob(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException;
 
 
+    /**
+     * This method can be used to implement recovering part of the stateful 
handler
+     * If you do not want to recover an already ran handler you leave this 
recover method empty.
+     *
+     * @param jobExecutionContext
+     */
+    public void recover(JobExecutionContext jobExecutionContext)throws 
GFacProviderException,GFacException;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacRecoverableProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacRecoverableProvider.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacRecoverableProvider.java
deleted file mode 100644
index 6cc9820..0000000
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/GFacRecoverableProvider.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.gfac.core.provider;
-
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-
-/**
- * This provider type can be used to implement stateful Operation and
- * we recommend to use the ZK client to store and retrieve the states
- * of the handler implementation. Framework level we use
- * ZK to decide handler ran successfully or not so each handler
- * execution details can be found in following zk path
- * 
/gfac-experiment/<gfac-node-name>/experimentId+taskId/full-qualified-handlername/state
- * ex: 
/gfac-experiment/gfac-node0/echoExperiment_2c6c11b8-dea0-4ec8-9832-f3e69fe2e6bb+IDontNeedaNode_682faa66-6218-4897-9271-656bfb8b2bd1/org.apache.airavata.gfac.handlers.Test/state
- */
-public interface GFacRecoverableProvider extends GFacProvider {
-    /**
-     * This method can be used to implement recovering part of the stateful 
handler
-     * If you do not want to recover an already ran handler you can simply 
implement
-     * GfacAbstract Handler or GFacHandler or leave this recover method empty.
-     *
-     * @param jobExecutionContext
-     */
-    public void recover(JobExecutionContext jobExecutionContext)throws 
GFacProviderException,GFacException;
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/states/GfacPluginState.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/states/GfacPluginState.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/states/GfacPluginState.java
index b934303..818a144 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/states/GfacPluginState.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/states/GfacPluginState.java
@@ -23,7 +23,8 @@ package org.apache.airavata.gfac.core.states;
 public enum GfacPluginState {
     INVOKING(0),
     INVOKED(1),
-    COMPLETED(2);
+    COMPLETED(2),
+    UNKNOWN(3);
 
     private final int value;
 
@@ -49,8 +50,10 @@ public enum GfacPluginState {
                 return INVOKING;
             case 1:
                 return INVOKED;
+            case 2:
+                return COMPLETED;
             default:
-                return null;
+                return UNKNOWN;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
index 2e2d501..434f6d4 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
@@ -900,7 +900,10 @@ public class GFacUtils {
                        InterruptedException {
                String expState = AiravataZKUtils.getExpState(zk, 
jobExecutionContext
                                .getExperimentID());
-               return 
GfacExperimentState.findByValue(Integer.parseInt(expState));
+        if (expState == null || expState.isEmpty()) {
+            return GfacExperimentState.UNKNOWN;
+        }
+        return GfacExperimentState.findByValue(Integer.valueOf(expState));
        }
 
        public static int getZKExperimentStateValue(ZooKeeper zk,
@@ -1019,8 +1022,8 @@ public class GFacUtils {
                return false;
        }
 
-       public static String getPluginState(ZooKeeper zk,
-                       JobExecutionContext jobExecutionContext, String 
className) {
+       public static GfacPluginState getPluginState(ZooKeeper zk,
+                                                 JobExecutionContext 
jobExecutionContext, String className) {
                try {
                        String expState = 
AiravataZKUtils.getExpZnodeHandlerPath(
                                        jobExecutionContext.getExperimentID(), 
className);
@@ -1028,11 +1031,12 @@ public class GFacUtils {
                        Stat exists = zk.exists(expState + File.separator
                                        + 
AiravataZKUtils.ZK_EXPERIMENT_STATE_NODE, false);
                        if (exists != null) {
-                               return new String(zk.getData(expState + 
File.separator
-                                               + 
AiravataZKUtils.ZK_EXPERIMENT_STATE_NODE, false,
-                                               exists));
-                       }
-                       return null; // if the node doesn't exist or any other 
error we
+                String stateVal = new String(zk.getData(expState + 
File.separator
+                                + AiravataZKUtils.ZK_EXPERIMENT_STATE_NODE, 
false,
+                        exists));
+                return GfacPluginState.findByValue(Integer.valueOf(stateVal));
+            }
+                       return GfacPluginState.UNKNOWN; // if the node doesn't 
exist or any other error we
                                                        // return false
                } catch (Exception e) {
                        log.error("Error occured while getting zk node status", 
e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestGlobalHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestGlobalHandler.java
 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestGlobalHandler.java
index 05eb735..67ee9b8 100644
--- 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestGlobalHandler.java
+++ 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestGlobalHandler.java
@@ -20,6 +20,7 @@
 */
 package org.apache.airavata.job;
 
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 
@@ -29,4 +30,9 @@ public class TestGlobalHandler extends AbstractHandler {
     public void initProperties(Properties properties) throws 
GFacHandlerException {
         //To change body of implemented methods use File | Settings | File 
Templates.
     }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestInHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestInHandler.java
 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestInHandler.java
index e50bfd6..7307ba5 100644
--- 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestInHandler.java
+++ 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestInHandler.java
@@ -20,6 +20,7 @@
 */
 package org.apache.airavata.job;
 
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 
@@ -29,4 +30,9 @@ public class TestInHandler extends AbstractHandler {
     public void initProperties(Properties properties) throws 
GFacHandlerException {
         //To change body of implemented methods use File | Settings | File 
Templates.
     }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestOutHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestOutHandler.java
 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestOutHandler.java
index 42dd00c..b19d646 100644
--- 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestOutHandler.java
+++ 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestOutHandler.java
@@ -20,6 +20,7 @@
 */
 package org.apache.airavata.job;
 
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 
@@ -29,4 +30,9 @@ public class TestOutHandler extends AbstractHandler {
     public void initProperties(Properties properties) throws 
GFacHandlerException {
         //To change body of implemented methods use File | Settings | File 
Templates.
     }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestProvider.java
 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestProvider.java
index 151ee19..3829dae 100644
--- 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestProvider.java
+++ 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestProvider.java
@@ -33,6 +33,11 @@ public class TestProvider extends AbstractProvider {
         //To change body of implemented methods use File | Settings | File 
Templates.
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException {
+        // TODO: Auto generated method body.
+    }
+
     public void initProperties(Map<String, String> properties) throws 
GFacProviderException, GFacException {
         //To change body of implemented methods use File | Settings | File 
Templates.
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestThreadedHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestThreadedHandler.java
 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestThreadedHandler.java
index 7ee54bd..f2788c5 100644
--- 
a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestThreadedHandler.java
+++ 
b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/job/TestThreadedHandler.java
@@ -21,6 +21,7 @@
 package org.apache.airavata.job;
 
 import junit.framework.Assert;
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.handler.ThreadedHandler;
 
@@ -32,6 +33,11 @@ public class TestThreadedHandler extends ThreadedHandler {
     public void initProperties(Properties properties) throws 
GFacHandlerException {
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     public void run() {
         System.out.println("Invoking TestThreadedHandler");
         Assert.assertTrue(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHDirectorySetupHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHDirectorySetupHandler.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHDirectorySetupHandler.java
index 26547b5..b4790c7 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHDirectorySetupHandler.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHDirectorySetupHandler.java
@@ -22,7 +22,7 @@ package org.apache.airavata.gfac.gsissh.handler;
 
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
 import org.apache.airavata.gfac.gsissh.security.GSISecurityContext;
@@ -37,7 +37,7 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.Properties;
 
-public class GSISSHDirectorySetupHandler extends AbstractRecoverableHandler {
+public class GSISSHDirectorySetupHandler extends AbstractHandler {
       private static final Logger log = 
LoggerFactory.getLogger(GSISSHDirectorySetupHandler.class);
 
        public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHInputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHInputHandler.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHInputHandler.java
index 70706ae..5fba1c1 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHInputHandler.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHInputHandler.java
@@ -24,7 +24,7 @@ import 
org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.context.MessageContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
 import org.apache.airavata.gfac.gsissh.security.GSISecurityContext;
@@ -53,7 +53,7 @@ import java.util.Set;
  * Recoverability for this handler assumes the same input values will come in 
the second
  * run, and assume nobody is changing registry during the original submission 
and re-submission
  */
-public class GSISSHInputHandler extends AbstractRecoverableHandler {
+public class GSISSHInputHandler extends AbstractHandler {
     private static final Logger log = 
LoggerFactory.getLogger(GSISSHInputHandler.class);
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHOutputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHOutputHandler.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHOutputHandler.java
index 1064e1c..cfd5a40 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHOutputHandler.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/GSISSHOutputHandler.java
@@ -24,7 +24,7 @@ package org.apache.airavata.gfac.gsissh.handler;
 //import org.apache.airavata.commons.gfac.type.MappingFactory;
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
@@ -52,7 +52,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
-public class GSISSHOutputHandler extends AbstractRecoverableHandler {
+public class GSISSHOutputHandler extends AbstractHandler {
     private static final Logger log = 
LoggerFactory.getLogger(GSISSHOutputHandler.class);
 
     public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/NewGSISSHOutputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/NewGSISSHOutputHandler.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/NewGSISSHOutputHandler.java
index f4aaf72..ed94312 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/NewGSISSHOutputHandler.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/handler/NewGSISSHOutputHandler.java
@@ -69,7 +69,12 @@ public class NewGSISSHOutputHandler extends AbstractHandler{
                        }
            }
 
-       @Override
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
+    @Override
        public void initProperties(Properties properties) throws 
GFacHandlerException {
                // TODO Auto-generated method stub
                

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
index 1b0d283..c35445b 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
@@ -24,7 +24,6 @@ import org.airavata.appcatalog.cpi.AppCatalog;
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.gfac.ExecutionMode;
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
@@ -32,7 +31,7 @@ import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.handler.ThreadedHandler;
 import org.apache.airavata.gfac.core.notification.events.StartExecutionEvent;
-import org.apache.airavata.gfac.core.provider.AbstractRecoverableProvider;
+import org.apache.airavata.gfac.core.provider.AbstractProvider;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
 import org.apache.airavata.gfac.gsissh.security.GSISecurityContext;
@@ -62,7 +61,7 @@ import java.util.Map;
 
 //import org.apache.airavata.schemas.gfac.GsisshHostType;
 
-public class GSISSHProvider extends AbstractRecoverableProvider {
+public class GSISSHProvider extends AbstractProvider {
     private static final Logger log = 
LoggerFactory.getLogger(GSISSHProvider.class);
 
     public void initProperties(Map<String, String> properties) throws 
GFacProviderException, GFacException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalDirectorySetupHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalDirectorySetupHandler.java
 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalDirectorySetupHandler.java
index 394cfaa..2f9e3b0 100644
--- 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalDirectorySetupHandler.java
+++ 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalDirectorySetupHandler.java
@@ -41,6 +41,12 @@ public class LocalDirectorySetupHandler implements 
GFacHandler {
         makeFileSystemDir(jobExecutionContext.getInputDir());
         makeFileSystemDir(jobExecutionContext.getOutputDir());
     }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     private void makeFileSystemDir(String dir) throws GFacHandlerException {
            File f = new File(dir);
            if (f.isDirectory() && f.exists()) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
index d085fbf..884ccd5 100644
--- 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
+++ 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
@@ -20,9 +20,8 @@
 */
 package org.apache.airavata.gfac.local.handler;
 
-import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
@@ -36,7 +35,7 @@ import java.util.Map;
 import java.util.Properties;
 
 
-public class LocalInputHandler extends AbstractRecoverableHandler {
+public class LocalInputHandler extends AbstractHandler {
     private static final Logger logger = 
LoggerFactory.getLogger(LocalInputHandler.class);
     @Override
     public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
index d62d3d7..df932b4 100644
--- 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
+++ 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
@@ -252,6 +252,11 @@ public class LocalProvider extends AbstractProvider {
         throw new NotImplementedException();
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException {
+        // TODO: Auto generated method body.
+    }
+
 
     private void buildCommand() {
         cmdList.add(jobExecutionContext.getExecutablePath());

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java
 
b/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java
index 24b300e..6fff840 100644
--- 
a/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java
+++ 
b/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java
@@ -107,6 +107,12 @@ public class GridPullMonitorHandler extends 
ThreadedHandler implements Watcher{
                     monitorID.getJobID(),  monitorID.getExperimentID());
         }
     }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     public AuthenticationInfo getAuthenticationInfo() {
         return authenticationInfo;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPushMonitorHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPushMonitorHandler.java
 
b/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPushMonitorHandler.java
index 0eb4526..bb36b28 100644
--- 
a/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPushMonitorHandler.java
+++ 
b/modules/gfac/gfac-monitor/gfac-hpc-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPushMonitorHandler.java
@@ -85,6 +85,11 @@ public class GridPushMonitorHandler extends ThreadedHandler {
         amqpMonitor.getRunningQueue().add(monitorID);
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     public AMQPMonitor getAmqpMonitor() {
         return amqpMonitor;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPInputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPInputHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPInputHandler.java
index 2fae3d5..a1c5278 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPInputHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPInputHandler.java
@@ -23,7 +23,7 @@ package org.apache.airavata.gfac.ssh.handler;
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.context.MessageContext;
-import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.AbstractHandler;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
 import org.apache.airavata.gfac.ssh.security.SSHSecurityContext;
@@ -57,7 +57,7 @@ import java.util.*;
  * <property name="hostName" value="gw98.iu.xsede.org"/>
  * <property name="inputPath" value="/home/airavata/outputData"/>
  */
-public class AdvancedSCPInputHandler extends AbstractRecoverableHandler {
+public class AdvancedSCPInputHandler extends AbstractHandler {
     private static final Logger log = 
LoggerFactory.getLogger(AdvancedSCPInputHandler.class);
     public static final String ADVANCED_SSH_AUTH = "advanced.ssh.auth";
     public static final int DEFAULT_SSH_PORT = 22;

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPOutputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPOutputHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPOutputHandler.java
index fac03e8..efed1bc 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPOutputHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/AdvancedSCPOutputHandler.java
@@ -212,5 +212,10 @@ public class AdvancedSCPOutputHandler extends 
AbstractHandler {
         }
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/NewSSHOutputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/NewSSHOutputHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/NewSSHOutputHandler.java
index f7efb34..93d0ed0 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/NewSSHOutputHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/NewSSHOutputHandler.java
@@ -64,7 +64,12 @@ public class NewSSHOutputHandler extends AbstractHandler{
               
            }
 
-       @Override
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
+    @Override
        public void initProperties(Properties properties) throws 
GFacHandlerException {
                // TODO Auto-generated method stub
                

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHDirectorySetupHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHDirectorySetupHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHDirectorySetupHandler.java
index 5c0d1f8..a985bd3 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHDirectorySetupHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHDirectorySetupHandler.java
@@ -63,7 +63,13 @@ public class SSHDirectorySetupHandler extends 
AbstractHandler {
         makeDirectory(jobExecutionContext);
 
        }
-       private void makeDirectory(JobExecutionContext jobExecutionContext) 
throws GFacHandlerException {
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
+    private void makeDirectory(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
                Cluster cluster = null;
                try{
             String hostAddress = jobExecutionContext.getHostName();

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHInputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHInputHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHInputHandler.java
index 27471d4..160c77d 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHInputHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHInputHandler.java
@@ -153,6 +153,11 @@ public class SSHInputHandler extends AbstractHandler {
         jobExecutionContext.setInMessageContext(inputNew);
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     private static String stageInputFiles(Cluster cluster, JobExecutionContext 
jobExecutionContext, String paramValue) throws IOException, GFacException {
         int i = paramValue.lastIndexOf(File.separator);
         String substring = paramValue.substring(i + 1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHOutputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHOutputHandler.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHOutputHandler.java
index 9b7cd2e..f9eb1ef 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHOutputHandler.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/handler/SSHOutputHandler.java
@@ -243,6 +243,11 @@ public class SSHOutputHandler extends AbstractHandler {
 
     }
 
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // TODO: Auto generated method body.
+    }
+
     public void initProperties(Properties properties) throws 
GFacHandlerException {
 
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3487e77/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
index 7023e3c..0f88327 100644
--- 
a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
+++ 
b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
@@ -21,7 +21,6 @@
 
 package org.apache.airavata.gfac.ssh.provider.impl;
 
-import org.airavata.appcatalog.cpi.AppCatalog;
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
@@ -34,7 +33,7 @@ import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
 import org.apache.airavata.gfac.core.handler.GFacHandlerException;
 import org.apache.airavata.gfac.core.handler.ThreadedHandler;
 import org.apache.airavata.gfac.core.notification.events.StartExecutionEvent;
-import org.apache.airavata.gfac.core.provider.AbstractRecoverableProvider;
+import org.apache.airavata.gfac.core.provider.AbstractProvider;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
 import org.apache.airavata.gfac.monitor.email.EmailBasedMonitor;
@@ -71,7 +70,7 @@ import java.util.*;
 /**
  * Execute application using remote SSH
  */
-public class SSHProvider extends AbstractRecoverableProvider {
+public class SSHProvider extends AbstractProvider {
     private static final Logger log = 
LoggerFactory.getLogger(SSHProvider.class);
     private Cluster cluster;
     private String jobID = null;

Reply via email to