/** {@inheritDoc} */
 public void runTask(KernelRunnable task, Identity owner) throws Exception {
   if (isShutdown) {
     throw new IllegalStateException("Scheduler is shutdown");
   }
   if (ContextResolver.isCurrentTransaction()) {
     // we're already active in a transaction, so just run the task
     task.run();
   } else {
     // we're starting a new transaction
     ScheduledTaskImpl scheduledTask =
         new ScheduledTaskImpl(task, owner, defaultPriority, System.currentTimeMillis());
     waitForTask(scheduledTask, false);
   }
 }
 /**
  * Returns the base type of the task that is run transactionally by this <code>TransactionRunner
  * </code>.
  *
  * @return the base type of the wrapped task
  */
 public String getBaseTaskType() {
   return transactionalTask.getBaseTaskType();
 }