ODE
  1. ODE
  2. ODE-126

the "until" form of <wait> does not appear to work.

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.0-incubating
    • Fix Version/s: 1.1
    • Component/s: BPEL Runtime
    • Labels:
      None

      Description

      Reported by Rene Bos to the development list:

      ---------- Forwarded message ----------
      From: René Bos
      Date: Apr 25, 2007 7:10 AM
      Subject: Wait until error
      To: ode-user@incubator.apache.org

      Hello!!

      I have some problems using the <wait> activity. The <for> works perfect, but <until> not. I looked at the BPEL 2.0 spec draft and saw the following format:

      <wait>
      <until>'2002-12-24T18:00+01:00'</until>
      </wait>

      When I use that I get the following error indicating that the date is incorrect:

      DEBUG - MessageExchangeContextImpl.onAsyncReply(57) | Processing an async reply from service

      {http://Testje1.wsdl}

      Testje1Service
      ERROR - XPath20ExpressionRuntime.evaluateAsDate (147) | Invalid date: 2002-12-24T18:00+01:00
      java.lang.IllegalArgumentException: Bad dateTime: 2002-12-24T18:00+01:00
      at org.apache.ode.utils.xsd.XMLCalendar.<init>(XMLCalendar.java:90)
      at org.apache.ode.bpel.elang.xpath20.runtime.XPath20ExpressionRuntime.evaluateAsDate (XPath20ExpressionRuntime.java:144)
      at org.apache.ode.bpel.runtime.ExpressionLanguageRuntimeRegistry.evaluateAsDate(ExpressionLanguageRuntimeRegistry.java:88)
      at org.apache.ode.bpel.runtime.WAIT.getDueDate (WAIT.java:119)
      at org.apache.ode.bpel.runtime.WAIT.run(WAIT.java:51)
      at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
      at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java :139)
      at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:817)
      at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeMyRole(PartnerLinkMyRoleImpl.java:193)
      at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:153)
      at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:280)
      at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob (BpelEngineImpl.java:311)
      at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:384)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.doExecute(QuartzSchedulerImpl.java :351)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.execute(QuartzSchedulerImpl.java:367)
      at org.apache.ode.bpel.scheduler.quartz.JobImpl.execute(JobImpl.java:32)
      at org.quartz.core.JobRunShell.run (JobRunShell.java:203)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:595)
      ERROR - WAIT.run(53) | Fault while calculating due date:

      {http://schemas.xmlsoap.org/ws/2004/03/business-process/}

      invalidExpressionValue ; Reason: Invalid date: 2002-12-24T18:00+01:00

      The problem is that no seconds are provided. Is this wrong in the specs or are the specs not correctly implemented?

      When I add the seconds I get:

      DEBUG - MessageExchangeContextImpl.onAsyncReply(57) | Processing an async reply from service

      {http://Testje1.wsdl}

      Testje1Service
      ERROR - JacobVPU$JacobThreadImpl.run(463) | Method "completed" in class " org.apache.ode.bpel.runtime.SEQUENCE$ACTIVE$1" threw an unexpected exception.
      java.lang.NullPointerException
      at java.util.AbstractCollection.addAll(AbstractCollection.java:316)
      at org.apache.ode.bpel.runtime.SEQUENCE$ACTIVE$1.completed (SEQUENCE.java:101)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
      at org.apache.ode.jacob.vpu.JacobVPU.execute (JacobVPU.java:139)
      at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:817)
      at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeMyRole(PartnerLinkMyRoleImpl.java :193)
      at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:153)
      at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:280)
      at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob (BpelEngineImpl.java:311)
      at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:384)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.doExecute(QuartzSchedulerImpl.java :351)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.execute(QuartzSchedulerImpl.java:367)
      at org.apache.ode.bpel.scheduler.quartz.JobImpl.execute(JobImpl.java:32)
      at org.quartz.core.JobRunShell.run (JobRunShell.java:203)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:595)

      And after that some of:

      ERROR - BpelEngineImpl.onScheduledJob(320) | Scheduled job failed; jobDetail=org.quartz.JobDataMap@165415e
      java.lang.RuntimeException: java.lang.NullPointerException
      at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464)
      at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
      at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute (BpelRuntimeContextImpl.java:817)
      at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeMyRole(PartnerLinkMyRoleImpl.java:193)
      at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java :153)
      at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:280)
      at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:311)
      at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob (BpelServerImpl.java:384)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.doExecute(QuartzSchedulerImpl.java:351)
      at org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.execute(QuartzSchedulerImpl.java :367)
      at org.apache.ode.bpel.scheduler.quartz.JobImpl.execute(JobImpl.java:32)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask (ThreadPoolExecutor.java:650)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: java.lang.NullPointerException
      at java.util.AbstractCollection.addAll(AbstractCollection.java:316)
      at org.apache.ode.bpel.runtime.SEQUENCE$ACTIVE$1.completed(SEQUENCE.java:101)
      at sun.reflect.GeneratedMethodAccessor289.invoke (Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run (JacobVPU.java:451)
      ... 14 more

      And when I use:

      <wait>
      <until>'2007-04-25T16:01:10.000+02:00'</until>
      </wait>

      Nothing happens at the specified time. Even not if I copy the format from the instance management (2007-04-25T15:59: 48.566+02:00)

      It even looks like the testcases for wait until are missing. There is one for wait for.

      Cheers,
      René

        Activity

        Hide
        Maciej Szefler added a comment -

        Thanks, for pointing this out, very bad indeed.

        Show
        Maciej Szefler added a comment - Thanks, for pointing this out, very bad indeed.
        Hide
        Tammo van Lessen added a comment -

        This has already been fixed and can be closed, right?

        Show
        Tammo van Lessen added a comment - This has already been fixed and can be closed, right?
        Hide
        Matthieu Riou added a comment -

        I believe this has been fixed.

        Show
        Matthieu Riou added a comment - I believe this has been fixed.

          People

          • Assignee:
            Maciej Szefler
            Reporter:
            Maciej Szefler
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development