You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/04/26 17:07:22 UTC

svn commit: r938083 - /ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java

Author: rr
Date: Mon Apr 26 15:07:22 2010
New Revision: 938083

URL: http://svn.apache.org/viewvc?rev=938083&view=rev
Log:
ODE-626: Unpack details blob from ODE_JOB table (fixed class cast exception on dequeue immediate)

Modified:
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java

Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java?rev=938083&r1=938082&r2=938083&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java (original)
+++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java Mon Apr 26 15:07:22 2010
@@ -255,6 +255,21 @@ public class JdbcDelegate implements Dat
         }
     }
 
+    private Long asLong(Object o) {
+        if (o == null) return null;
+        else if (o instanceof BigDecimal) return ((BigDecimal) o).longValue();
+        else if (o instanceof Long) return (Long) o;
+        else if (o instanceof Integer) return ((Integer) o).longValue();
+        else throw new IllegalStateException("Can't convert to long " + o.getClass());
+    }
+
+    private Integer asInteger(Object o) {
+        if (o == null) return null;
+        else if (o instanceof BigDecimal) return ((BigDecimal) o).intValue();
+        else if (o instanceof Integer) return (Integer) o;
+        else throw new IllegalStateException("Can't convert to integer " + o.getClass());
+    }
+
     @SuppressWarnings("unchecked")
     public List<Job> dequeueImmediate(String nodeId, long maxtime, int maxjobs) throws DatabaseException {
         ArrayList<Job> ret = new ArrayList<Job>(maxjobs);
@@ -270,15 +285,15 @@ public class JdbcDelegate implements Dat
             ResultSet rs = ps.executeQuery();
             while (rs.next()) {
                 Scheduler.JobDetails details = new Scheduler.JobDetails();
-                details.instanceId = (Long) rs.getObject("instanceId");
+                details.instanceId = asLong(rs.getObject("instanceId"));
                 details.mexId = (String) rs.getObject("mexId");
                 details.processId = (String) rs.getObject("processId");
                 details.type = (String) rs.getObject("type");
                 details.channel = (String) rs.getObject("channel");
                 details.correlatorId = (String) rs.getObject("correlatorId");
                 details.correlationKeySet = (String) rs.getObject("correlationKeySet");
-                details.retryCount = (Integer) rs.getObject("retryCount");
-                details.inMem = (Boolean) rs.getObject("inMem");
+                details.retryCount = asInteger(rs.getObject("retryCount"));
+                details.inMem = asBoolean(rs.getInt("inMem"));
                 if (rs.getObject("detailsExt") != null) {
                     try {
                         ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream("detailsExt"));
@@ -324,7 +339,7 @@ public class JdbcDelegate implements Dat
                     }
                 }
                 
-                Job job = new Job(rs.getLong(2), rs.getString(1), asBoolean(rs.getInt(3)), details);
+                Job job = new Job(rs.getLong("ts"), rs.getString("jobid"), asBoolean(rs.getInt("transacted")), details);
                 ret.add(job);
             }
             rs.close();