This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit cc6009b050133eb053862feb35d433636224a506
Author: Max Fortun <max.for...@wsj.com>
AuthorDate: Tue May 22 17:19:39 2018 -0400

    Allow exceptions to be thrown so that route control could be configured on 
application level.
---
 .../org/apache/camel/component/dns/policy/DnsActivation.java   |  6 ++++--
 .../apache/camel/component/dns/policy/DnsActivationPolicy.java | 10 +++++++++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git 
a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivation.java
 
b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivation.java
index 7d7e886..cc9de5b 100644
--- 
a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivation.java
+++ 
b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivation.java
@@ -62,13 +62,13 @@ public class DnsActivation {
         this.resolvesTo.add(resolvesTo);
     }
 
-    public boolean isActive() {
+    public boolean isActive() throws Exception {
         if (resolvesTo.isEmpty()) {
             try {
                 resolvesTo.addAll(getLocalIps());
             } catch (Exception e) {
                 LOG.warn("Failed to get local ips and resolvesTo not 
specified. Identifying as inactive.", e);
-                return false;
+                throw e;
             }
         }
 
@@ -101,6 +101,7 @@ public class DnsActivation {
                 }
             } catch (Exception e) {
                 LOG.warn(hostname, e);
+                throw e;
             } finally {
                 if (attributeEnumeration != null) {
                     try {
@@ -112,6 +113,7 @@ public class DnsActivation {
                 }
             }
         }
+
         return false;
     }
 
diff --git 
a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
 
b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
index 4833136..d89c612 100644
--- 
a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
+++ 
b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
@@ -37,6 +37,7 @@ public class DnsActivationPolicy extends RoutePolicySupport {
     private ExceptionHandler exceptionHandler;
     private DnsActivation dnsActivation;
     private long ttl;
+    private boolean stopRoutesOnException;
 
     private Map<String, Route> routes = new ConcurrentHashMap<>();
     private Timer timer;
@@ -128,10 +129,14 @@ public class DnsActivationPolicy extends 
RoutePolicySupport {
         dnsActivation.setResolvesTo(resolvesTo);
     }
 
-    public void setTtl(String ttl) {
+    public void setTtl(String ttl) throws Exception {
         this.ttl = Long.parseLong(ttl);
     }
 
+    public void setStopRoutesOnException(String stopRoutesOnException) throws 
Exception {
+        this.stopRoutesOnException = 
Boolean.parseBoolean(stopRoutesOnException);
+    }
+
     private void startRouteImpl(Route route) throws Exception {
         ServiceStatus routeStatus = 
route.getRouteContext().getCamelContext().getRouteStatus(route.getId());
 
@@ -189,6 +194,9 @@ public class DnsActivationPolicy extends RoutePolicySupport 
{
                 }
             } catch (Exception e) {
                 LOG.warn("DnsActivation TimerTask failed", e);
+                if (stopRoutesOnException) {
+                    stopRoutes();
+                }
             }
         }
     }

-- 
To stop receiving notification emails like this one, please contact
acosent...@apache.org.

Reply via email to