]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java
Ignore target
[gpl/argeo-slc.git] / org.argeo.slc.detached / src / main / java / org / argeo / slc / detached / DetachedExecutionServerImpl.java
index 718809ec01689017332d5767ad5d67f6a2b924e2..4d9abc59827a52e774873c5b68b0511d536d4663 100644 (file)
@@ -17,7 +17,8 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer {
        private final DetachedContextImpl detachedContext;
        private final List sessions;
 
-       private int skipCount = 0;
+       private int skipCount = 1;// start skipCount at 1 since the first step is
+                                                               // always an open session
 
        private BundleContext bundleContext;
 
@@ -29,8 +30,6 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer {
        public synchronized DetachedAnswer executeRequest(DetachedRequest request) {
                DetachedAnswer answer = null;
                try {
-                       // DetachedStep step = null;
-
                        // Find action
                        ServiceReference[] refs = bundleContext.getAllServiceReferences(
                                        StaticRefProvider.class.getName(), null);
@@ -61,23 +60,18 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer {
                                throw new DetachedException("Unknown action type "
                                                + obj.getClass() + " for action with ref "
                                                + request.getRef());
-                       } else {
-                               log.info("Processed '" + request.getRef() + "' (path="
-                                               + request.getPath() + ")");
                        }
-
-               } catch (DetachedException e) {
+               } catch (Exception e) {
                        answer = new DetachedAnswer(request);
                        answer.setStatus(DetachedAnswer.ERROR);
                        answer.setLog(e.getMessage());
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       throw new DetachedException(
-                                       "Unexpected exception while executing request " + request,
-                                       e);
                }
                getCurrentSession().getRequests().add(request);
                getCurrentSession().getAnswers().add(answer);
+               if (log.isDebugEnabled())
+                       log.debug("Processed '" + request.getRef() + "' (status="
+                                       + answer.getStatusAsString() + ", path="
+                                       + request.getPath() + ")");
                return answer;
        }
 
@@ -110,6 +104,18 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer {
 
                                        if (previousAnswer.getStatus() != DetachedAnswer.ERROR) {
                                                execute = false;
+                                               String msg = "Skipped path " + request.getPath()
+                                                               + " (skipCount=" + skipCount + ")";
+                                               skippedLog.append(msg);
+                                               log.info(msg);
+                                               skipCount++;
+                                       } else {
+                                               log
+                                                               .info("Path "
+                                                                               + request.getPath()
+                                                                               + " was previously in error, executing it again."
+                                                                               + " (skipCount=" + skipCount + "). Reset skip count to 1");
+                                               skipCount = 1;
                                        }
                                } else {
                                        // went further as skip count, doing nothing.
@@ -121,8 +127,6 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer {
                        DetachedStep step = (DetachedStep) obj;
                        answer = step.execute(detachedContext, request);
                } else {
-                       skippedLog.append("Skipped path " + request.getPath()
-                                       + " (skipCount=" + skipCount + ")");
                        answer = new DetachedAnswer(request);
                        answer.setStatus(DetachedAnswer.SKIPPED);
                        answer.setLog(skippedLog.toString());