You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/02/28 03:03:33 UTC
svn commit: r512562 -
/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java
Author: mszefler
Date: Tue Feb 27 18:03:32 2007
New Revision: 512562
URL: http://svn.apache.org/viewvc?view=rev&rev=512562
Log:
Fixed ERROR exchange handling.
Modified:
incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java
Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java?view=diff&rev=512562&r1=512561&r2=512562
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java (original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java Tue Feb 27 18:03:32 2007
@@ -133,9 +133,11 @@
} finally {
if (!success) {
jbiMex.setStatus(ExchangeStatus.ERROR);
- jbiMex.setError(err);
+ if (err != null && jbiMex.getError() != null)
+ jbiMex.setError(err);
} else {
- jbiMex.setStatus(ExchangeStatus.DONE);
+ if (jbiMex.getStatus() == ExchangeStatus.ACTIVE)
+ jbiMex.setStatus(ExchangeStatus.DONE);
}
}
} else if (jbiMex.getPattern().equals(org.apache.ode.jbi.MessageExchangePattern.IN_OUT)) {
@@ -147,11 +149,18 @@
} catch (Exception ex) {
__log.error("Error invoking ODE.", ex);
err = ex;
+ } catch (Throwable t) {
+ __log.error("Unexpected error invoking ODE.", t);
+ err = new RuntimeException(t);
} finally {
- if (!success) {
- jbiMex.setError(err);
- jbiMex.setStatus(ExchangeStatus.ERROR);
- }
+ // If we got an error that wasn't sent.
+ if (jbiMex.getStatus() == ExchangeStatus.ACTIVE && !success) {
+ if (err != null && jbiMex.getError() != null) {
+ jbiMex.setError(err);
+ }
+ jbiMex.setStatus(ExchangeStatus.ERROR);
+ _ode.getChannel().send(jbiMex);
+ }
}
} else {
__log.error("JBI MessageExchange " + jbiMex.getExchangeId() + " is of an unsupported pattern "
@@ -244,7 +253,7 @@
}
} else {
__log.error("ODE MEX " + odeMex + " was unroutable.");
- jbiMex.setError(new IllegalArgumentException("Unroutable invocation."));
+ sendError(jbiMex, new IllegalArgumentException("Unroutable invocation."));
}
success = true;