You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/08 13:59:34 UTC
[camel] 03/04: CAMEL-17302: camel-core - Route reload event to indicate index/total
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 356ed29929ee02003ebb99fde5dc2200acaa9051
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Dec 8 14:54:40 2021 +0100
CAMEL-17302: camel-core - Route reload event to indicate index/total
---
.../src/main/java/org/apache/camel/spi/CamelEvent.java | 10 ++++++++++
.../main/java/org/apache/camel/spi/EventFactory.java | 4 +++-
.../apache/camel/impl/event/DefaultEventFactory.java | 4 ++--
.../org/apache/camel/impl/event/RouteReloadedEvent.java | 17 ++++++++++++++++-
.../main/java/org/apache/camel/support/EventHelper.java | 4 ++--
.../camel/support/RouteWatcherReloadStrategy.java | 4 +++-
6 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java b/core/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
index 6a34fa8..68ec435 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
@@ -353,6 +353,16 @@ public interface CamelEvent {
default Type getType() {
return Type.RouteReloaded;
}
+
+ /**
+ * The route index in this batch (starts from 1)
+ */
+ int getIndex();
+
+ /**
+ * Total number of routes being reloaded in this batch
+ */
+ int getTotal();
}
interface RouteStartingEvent extends RouteEvent {
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
index fa402e9..a92bcd7 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
@@ -199,9 +199,11 @@ public interface EventFactory {
* Creates an {@link CamelEvent} for {@link Route} has been reloaded successfully.
*
* @param route the route
+ * @param index the route index in this batch
+ * @param total total number of routes being reloaded in this batch
* @return the reloaded event
*/
- CamelEvent createRouteReloaded(Route route);
+ CamelEvent createRouteReloaded(Route route, int index, int total);
/**
* Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has been created
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
index f04c267..c54a1cc 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
@@ -131,8 +131,8 @@ public class DefaultEventFactory implements EventFactory {
}
@Override
- public CamelEvent createRouteReloaded(Route route) {
- return new RouteReloadedEvent(route);
+ public CamelEvent createRouteReloaded(Route route, int index, int total) {
+ return new RouteReloadedEvent(route, index, total);
}
@Override
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java
index 651bc22..de2ea8c 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/RouteReloadedEvent.java
@@ -23,8 +23,23 @@ public class RouteReloadedEvent extends AbstractRouteEvent implements CamelEvent
private static final long serialVersionUID = 7966471393751298718L;
- public RouteReloadedEvent(Route source) {
+ private final int index;
+ private final int total;
+
+ public RouteReloadedEvent(Route source, int index, int total) {
super(source);
+ this.index = index;
+ this.total = total;
+ }
+
+ @Override
+ public int getIndex() {
+ return index;
+ }
+
+ @Override
+ public int getTotal() {
+ return total;
}
@Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java
index fcc8f39..a480ee4 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/EventHelper.java
@@ -462,7 +462,7 @@ public final class EventHelper {
return answer;
}
- public static boolean notifyRouteReloaded(CamelContext context, Route route) {
+ public static boolean notifyRouteReloaded(CamelContext context, Route route, int index, int total) {
ManagementStrategy management = context.getManagementStrategy();
if (management == null) {
return false;
@@ -490,7 +490,7 @@ public final class EventHelper {
if (event == null) {
// only create event once
- event = factory.createRouteReloaded(route);
+ event = factory.createRouteReloaded(route, index, total);
if (event == null) {
// factory could not create event so exit
return false;
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java b/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
index e765e01..a9848e3 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
@@ -200,9 +200,11 @@ public class RouteWatcherReloadStrategy extends FileWatcherResourceReloadStrateg
}
// fire events for routes reloaded
+ int index = 1;
+ int total = ids.size();
for (String id : ids) {
Route route = getCamelContext().getRoute(id);
- EventHelper.notifyRouteReloaded(getCamelContext(), route);
+ EventHelper.notifyRouteReloaded(getCamelContext(), route, index++, total);
}
if (!removeAllRoutes) {