You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mi...@apache.org on 2009/11/19 22:32:50 UTC

svn commit: r882307 - in /ode/branches/APACHE_ODE_1.X: bpel-api/src/main/java/org/apache/ode/bpel/iapi/ bpel-epr/src/main/java/org/apache/ode/il/ bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ bpel-runtime/src/test/java/org/apache/ode/...

Author: midon
Date: Thu Nov 19 21:32:50 2009
New Revision: 882307

URL: http://svn.apache.org/viewvc?rev=882307&view=rev
Log:
add a method to schedule volatile jobs at a given date

Modified:
    ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java

Modified: ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java Thu Nov 19 21:32:50 2009
@@ -61,9 +61,17 @@
      * jobs scheduled from a transactional context should be scheduled
      * regardless of whether the transaction commits.
      *
+     * @param transacted should the job be executed in a transaction?
      * @param jobDetail information about the job
+     * @param when does the job should be executed?
      * @return unique (as far as the scheduler is concerned) job identifier
      */
+    String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail, Date when) throws ContextException;
+
+    /**
+     * Schedule a volatile job for right now
+     * @see #scheduleVolatileJob(boolean, java.util.Map, java.util.Date)
+     */
     String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException;
 
     /**

Modified: ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java Thu Nov 19 21:32:50 2009
@@ -71,59 +71,66 @@
 
     public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
         if (date != null) {
+            return scheduleVolatileJob(true, detail, date);
+        } else {
+            return scheduleVolatileJob(true, detail);
+        }
+    }
+
+    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+        return scheduleVolatileJob(transacted, jobDetail, null);
+    }
+
+    public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+        if (date != null) {
             registerSynchronizer(new Synchronizer() {
                 public void afterCompletion(boolean success) {
                     if (!success) return;
                     _timer.schedule(new TimerTask() {
                         @SuppressWarnings("unchecked")
                         public void run() {
-                            try {
-                                execIsolatedTransaction(new Callable() {
-                                    public Object call() throws Exception {
-                                        JobInfo ji = new JobInfo("volatileJob", detail, 0);
-                                        doExecute(ji);
-                                        return null;
-                                    }
-                                });
-                            } catch (Exception e) {
-                                throw new ContextException("Failure when scheduling a new volatile job.", e);
-                            }
+                            exec(transacted, detail);
                         }
                     }, date);
                 }
-                public void beforeCompletion() { }
+
+                public void beforeCompletion() {
+                }
             });
             return null;
         } else {
-            return scheduleVolatileJob(true, detail);
+            registerSynchronizer(new Synchronizer() {
+                @SuppressWarnings("unchecked")
+                public void afterCompletion(boolean success) {
+                    if (!success) return;
+                    exec(transacted, detail);
+                }
+
+                public void beforeCompletion() {
+                }
+            });
+            return null;
         }
     }
 
-    public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail) throws ContextException {
-        registerSynchronizer(new Synchronizer() {
-            @SuppressWarnings("unchecked")
-            public void afterCompletion(boolean success) {
-                if (!success) return;
-                try {
-                    if (transacted) {
-                        execIsolatedTransaction(new Callable() {
-                            public Object call() throws Exception {
-                                JobInfo ji = new JobInfo("volatileJob", detail, 0);
-                                doExecute(ji);
-                                return null;
-                            }
-                        });
-                    } else {
+    private void exec(boolean transacted, final Map<String, Object> detail) {
+        try {
+            if (transacted) {
+
+                execIsolatedTransaction(new Callable() {
+                    public Object call() throws Exception {
                         JobInfo ji = new JobInfo("volatileJob", detail, 0);
                         doExecute(ji);
+                        return null;
                     }
-                } catch (Exception e) {
-                    throw new ContextException("Failure when starting a new volatile job.", e);
-                }
+                });
+            } else {
+                JobInfo ji = new JobInfo("volatileJob", detail, 0);
+                doExecute(ji);
             }
-            public void beforeCompletion() { }
-        });
-        return null;
+        } catch (Exception e) {
+            throw new ContextException("Failure when scheduling a new volatile job.", e);
+        }
     }
 
     public String scheduleMapSerializableRunnable(final MapSerializableRunnable runnable, final Date when) throws ContextException {

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java Thu Nov 19 21:32:50 2009
@@ -117,6 +117,10 @@
         return null;
     }
 
+    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+        return null;
+    }
+
     public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
         return null;
     }

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Thu Nov 19 21:32:50 2009
@@ -300,9 +300,13 @@
             runnable.run();
             return new GUID().toString();
         }
-        
+
         public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
-            String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail);
+            return scheduleVolatileJob(transacted, jobDetail, null);
+        }
+
+        public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+            String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
             _nextSchedule = System.currentTimeMillis();
             return jobId;
         }

Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java Thu Nov 19 21:32:50 2009
@@ -378,7 +378,14 @@
     }
 
     public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
-        Job job = new Job(System.currentTimeMillis(), transacted, jobDetail);
+        return scheduleVolatileJob(transacted, jobDetail, null);
+    }
+
+    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+        long ctime = System.currentTimeMillis();
+        if (when == null)
+            when = new Date(ctime);
+        Job job = new Job(when.getTime(), transacted, jobDetail);
         job.persisted = false;
         addTodoOnCommit(job);
         return job.toString();