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/02/09 16:15:09 UTC
[camel] branch master updated: CAMEL-16155: camel-zookeeper-master:
add option to set a custom ManagedGroupFactory
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new af2134b CAMEL-16155: camel-zookeeper-master: add option to set a custom ManagedGroupFactory
af2134b is described below
commit af2134b1f385171a9086ca19251fd08caa749581
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Feb 9 17:14:22 2021 +0100
CAMEL-16155: camel-zookeeper-master: add option to set a custom ManagedGroupFactory
---
...ctory.java => ManagedGroupFactoryStrategy.java} | 22 ++++++----
.../zookeepermaster/ZookeeperGroupSupport.java | 48 +++++++++++++++++++---
...ilder.java => DefaultGroupFactoryStrategy.java} | 15 ++++---
...actory.java => DefaultManagedGroupFactory.java} | 10 ++---
.../group/{internal => }/ManagedGroupFactory.java | 3 +-
.../internal/osgi/OsgiManagedGroupFactory.java | 2 +-
6 files changed, 72 insertions(+), 28 deletions(-)
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ManagedGroupFactoryStrategy.java
similarity index 60%
copy from components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java
copy to components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ManagedGroupFactoryStrategy.java
index eadb26a..3e6c861 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ManagedGroupFactoryStrategy.java
@@ -14,15 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.zookeepermaster.group.internal;
+package org.apache.camel.component.zookeepermaster;
-import org.apache.camel.component.zookeepermaster.group.GroupFactory;
-import org.apache.curator.framework.CuratorFramework;
-
-public interface ManagedGroupFactory extends GroupFactory {
+import java.util.concurrent.Callable;
- CuratorFramework getCurator();
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.zookeepermaster.group.ManagedGroupFactory;
+import org.apache.curator.framework.CuratorFramework;
- void close();
+/**
+ * SPI Strategy for custom {@link ManagedGroupFactory} implementations.
+ */
+public interface ManagedGroupFactoryStrategy {
+ ManagedGroupFactory createGroupFactory(
+ CuratorFramework curator,
+ ClassLoader loader,
+ CamelContext camelContext,
+ Callable<CuratorFramework> factory)
+ throws Exception;
}
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ZookeeperGroupSupport.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ZookeeperGroupSupport.java
index dd5785f..7a71d5f 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ZookeeperGroupSupport.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/ZookeeperGroupSupport.java
@@ -16,13 +16,14 @@
*/
package org.apache.camel.component.zookeepermaster;
+import java.util.Set;
import java.util.concurrent.Callable;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
+import org.apache.camel.component.zookeepermaster.group.DefaultGroupFactoryStrategy;
import org.apache.camel.component.zookeepermaster.group.Group;
-import org.apache.camel.component.zookeepermaster.group.internal.ManagedGroupFactory;
-import org.apache.camel.component.zookeepermaster.group.internal.ManagedGroupFactoryBuilder;
+import org.apache.camel.component.zookeepermaster.group.ManagedGroupFactory;
import org.apache.camel.spi.Metadata;
import org.apache.camel.support.service.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
@@ -46,8 +47,11 @@ public class ZookeeperGroupSupport extends ServiceSupport
private static final String ZOOKEEPER_PORT_ENV = "ZK_CLIENT_SERVICE_PORT";
private CamelContext camelContext;
- private ManagedGroupFactory managedGroupFactory;
+ @Metadata(label = "advanced", autowired = true)
+ private ManagedGroupFactory managedGroupFactory;
+ @Metadata(label = "advanced", autowired = true)
+ private ManagedGroupFactoryStrategy managedGroupFactoryStrategy;
@Metadata(label = "advanced")
private CuratorFramework curator;
@Metadata(defaultValue = "10000")
@@ -122,6 +126,22 @@ public class ZookeeperGroupSupport extends ServiceSupport
this.zooKeeperPassword = zooKeeperPassword;
}
+ public ManagedGroupFactory getManagedGroupFactory() {
+ return managedGroupFactory;
+ }
+
+ public void setManagedGroupFactory(ManagedGroupFactory managedGroupFactory) {
+ this.managedGroupFactory = managedGroupFactory;
+ }
+
+ public ManagedGroupFactoryStrategy getManagedGroupFactoryStrategy() {
+ return managedGroupFactoryStrategy;
+ }
+
+ public void setManagedGroupFactoryStrategy(ManagedGroupFactoryStrategy managedGroupFactoryStrategy) {
+ this.managedGroupFactoryStrategy = managedGroupFactoryStrategy;
+ }
+
@Override
protected void doStart() throws Exception {
ObjectHelper.notNull(camelContext, "CamelContext");
@@ -140,8 +160,26 @@ public class ZookeeperGroupSupport extends ServiceSupport
}
}
- // will auto create curator if needed
- managedGroupFactory = ManagedGroupFactoryBuilder.create(curator, getClass().getClassLoader(), getCamelContext(), this);
+ if (managedGroupFactoryStrategy == null) {
+ Set<ManagedGroupFactoryStrategy> set
+ = getCamelContext().getRegistry().findByType(ManagedGroupFactoryStrategy.class);
+ if (set.size() == 1) {
+ setManagedGroupFactoryStrategy(set.iterator().next());
+ }
+ }
+ if (managedGroupFactory == null) {
+ Set<ManagedGroupFactory> set = getCamelContext().getRegistry().findByType(ManagedGroupFactory.class);
+ if (set.size() == 1) {
+ setManagedGroupFactory(set.iterator().next());
+ }
+ }
+ if (managedGroupFactory == null) {
+ if (managedGroupFactoryStrategy == null) {
+ managedGroupFactoryStrategy = new DefaultGroupFactoryStrategy();
+ }
+ managedGroupFactory = managedGroupFactoryStrategy.createGroupFactory(curator, getClass().getClassLoader(),
+ getCamelContext(), this);
+ }
}
@Override
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactoryBuilder.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultGroupFactoryStrategy.java
similarity index 82%
rename from components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactoryBuilder.java
rename to components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultGroupFactoryStrategy.java
index da132b8..b0fe74c 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactoryBuilder.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultGroupFactoryStrategy.java
@@ -14,29 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.zookeepermaster.group.internal;
+package org.apache.camel.component.zookeepermaster.group;
import java.util.concurrent.Callable;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.component.zookeepermaster.ManagedGroupFactoryStrategy;
import org.apache.camel.spi.BeanIntrospection;
import org.apache.camel.support.ObjectHelper;
import org.apache.curator.framework.CuratorFramework;
-public final class ManagedGroupFactoryBuilder {
+public class DefaultGroupFactoryStrategy implements ManagedGroupFactoryStrategy {
- private ManagedGroupFactoryBuilder() {
- }
-
- public static ManagedGroupFactory create(
+ @Override
+ public ManagedGroupFactory createGroupFactory(
CuratorFramework curator,
ClassLoader loader,
CamelContext camelContext,
Callable<CuratorFramework> factory)
throws Exception {
if (curator != null) {
- return new StaticManagedGroupFactory(curator, false);
+ return new DefaultManagedGroupFactory(curator, false);
}
try {
Class<?> clazz = camelContext.getClassResolver()
@@ -50,7 +49,7 @@ public final class ManagedGroupFactoryBuilder {
} catch (Throwable e) {
// Ignore if we're not in OSGi
}
- return new StaticManagedGroupFactory(factory.call(), true);
+ return new DefaultManagedGroupFactory(factory.call(), true);
}
}
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/StaticManagedGroupFactory.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultManagedGroupFactory.java
similarity index 84%
rename from components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/StaticManagedGroupFactory.java
rename to components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultManagedGroupFactory.java
index b60973b..12a4beb 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/StaticManagedGroupFactory.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/DefaultManagedGroupFactory.java
@@ -14,20 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.zookeepermaster.group.internal;
+package org.apache.camel.component.zookeepermaster.group;
import java.util.concurrent.ThreadFactory;
-import org.apache.camel.component.zookeepermaster.group.Group;
-import org.apache.camel.component.zookeepermaster.group.NodeState;
+import org.apache.camel.component.zookeepermaster.group.internal.ZooKeeperGroup;
+import org.apache.camel.component.zookeepermaster.group.internal.ZooKeeperMultiGroup;
import org.apache.curator.framework.CuratorFramework;
-public class StaticManagedGroupFactory implements ManagedGroupFactory {
+public class DefaultManagedGroupFactory implements ManagedGroupFactory {
private final CuratorFramework curator;
private final boolean shouldClose;
- StaticManagedGroupFactory(CuratorFramework curator, boolean shouldClose) {
+ public DefaultManagedGroupFactory(CuratorFramework curator, boolean shouldClose) {
this.curator = curator;
this.shouldClose = shouldClose;
}
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/ManagedGroupFactory.java
similarity index 87%
rename from components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java
rename to components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/ManagedGroupFactory.java
index eadb26a..000bbb3 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ManagedGroupFactory.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/ManagedGroupFactory.java
@@ -14,9 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.zookeepermaster.group.internal;
+package org.apache.camel.component.zookeepermaster.group;
-import org.apache.camel.component.zookeepermaster.group.GroupFactory;
import org.apache.curator.framework.CuratorFramework;
public interface ManagedGroupFactory extends GroupFactory {
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/osgi/OsgiManagedGroupFactory.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/osgi/OsgiManagedGroupFactory.java
index 0e36fc9..c206c59 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/osgi/OsgiManagedGroupFactory.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/osgi/OsgiManagedGroupFactory.java
@@ -22,10 +22,10 @@ import java.util.List;
import java.util.concurrent.ThreadFactory;
import org.apache.camel.component.zookeepermaster.group.Group;
+import org.apache.camel.component.zookeepermaster.group.ManagedGroupFactory;
import org.apache.camel.component.zookeepermaster.group.NodeState;
import org.apache.camel.component.zookeepermaster.group.internal.DelegateZooKeeperGroup;
import org.apache.camel.component.zookeepermaster.group.internal.DelegateZooKeeperMultiGroup;
-import org.apache.camel.component.zookeepermaster.group.internal.ManagedGroupFactory;
import org.apache.curator.framework.CuratorFramework;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleReference;