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();