Repository: camel
Updated Branches:
  refs/heads/camel-2.15.x 2f29f5d9a -> a3b216df5
  refs/heads/master a6793490e -> a01d49f80


CAMEL-8995: camel-restlet - Should defer UoW done until after writing response


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a01d49f8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a01d49f8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a01d49f8

Branch: refs/heads/master
Commit: a01d49f8092739ae09a256c8f45c426bcdb5cef7
Parents: a679349
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Jul 22 07:03:31 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Jul 22 07:03:31 2015 +0200

----------------------------------------------------------------------
 .../camel/component/restlet/RestletConsumer.java   | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a01d49f8/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletConsumer.java
 
b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletConsumer.java
index fd39ac8..fa1f847 100644
--- 
a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletConsumer.java
+++ 
b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletConsumer.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.restlet;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultConsumer;
 import org.restlet.Request;
 import org.restlet.Response;
@@ -50,10 +49,16 @@ public class RestletConsumer extends DefaultConsumer {
         return new Restlet() {
             @Override
             public void handle(Request request, Response response) {
+                // must call super according to restlet documentation
+                super.handle(request, response);
+
                 LOG.debug("Consumer restlet handle request method: {}", 
request.getMethod());
 
+                Exchange exchange = null;
                 try {
-                    Exchange exchange = getEndpoint().createExchange();
+                    // we want to handle the UoW
+                    exchange = getEndpoint().createExchange();
+                    createUoW(exchange);
 
                     RestletBinding binding = getEndpoint().getRestletBinding();
                     binding.populateExchangeFromRestletRequest(request, 
response, exchange);
@@ -65,8 +70,12 @@ public class RestletConsumer extends DefaultConsumer {
                     }
                     binding.populateRestletResponseFromExchange(exchange, 
response);
 
-                } catch (Exception e) {
-                    throw new RuntimeCamelException("Cannot process request", 
e);
+                } catch (Throwable e) {
+                    getExceptionHandler().handleException("Error processing 
request", exchange, e);
+                } finally {
+                    if (exchange != null) {
+                        doneUoW(exchange);
+                    }
                 }
             }
         };

Reply via email to