You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/03/04 08:58:00 UTC
[camel] 15/32: Use a single class instead of various resolvers
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit fa5eaad050e2caaef1182f84a3bf14e456e019d4
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 19:48:20 2020 +0100
Use a single class instead of various resolvers
---
.../camel/component/file/GenericFileEndpoint.java | 11 +---
.../org/apache/camel/ExtendedCamelContext.java | 3 +-
.../java/org/apache/camel/spi/FactoryFinder.java | 2 +
.../apache/camel/spi/FactoryFinderResolver.java | 4 +-
.../component/properties/PropertiesComponent.java | 3 -
.../camel/impl/engine/AbstractCamelContext.java | 36 ++++------
.../camel/impl/engine/BaseServiceResolver.java | 64 ++++++++++++++++++
.../impl/engine/BeanProcessorFactoryResolver.java | 72 --------------------
.../impl/engine/BeanProxyFactoryResolver.java | 72 --------------------
.../impl/engine/CamelPostProcessorHelper.java | 3 -
.../impl/engine/DefaultFactoryFinderResolver.java | 5 --
.../impl/engine/HeadersMapFactoryResolver.java | 76 ----------------------
.../engine/PropertiesComponentFactoryResolver.java | 72 --------------------
.../impl/engine/ReactiveExecutorResolver.java | 73 ---------------------
.../impl/engine/RestRegistryFactoryResolver.java | 75 ---------------------
.../impl/engine/RuntimeCamelCatalogResolver.java | 76 ----------------------
.../org/apache/camel/builder/ProxyBuilder.java | 3 -
.../org/apache/camel/impl/DefaultCamelContext.java | 55 +++++++++++-----
.../camel/impl/ModelToXMLDumperResolver.java | 75 ---------------------
.../impl/XMLRoutesDefinitionLoaderResolver.java | 76 ----------------------
.../java/org/apache/camel/reifier/BeanReifier.java | 3 -
.../reifier/dataformat/DataFormatReifier.java | 20 ++----
.../camel/core/osgi/OsgiFactoryFinderResolver.java | 5 --
23 files changed, 131 insertions(+), 753 deletions(-)
diff --git a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index d5e1c4a..81c5e3d 100644
--- a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -489,14 +489,9 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
*/
@SuppressWarnings("unchecked")
protected GenericFileProcessStrategy<T> createGenericFileStrategy() {
- Class<?> factory = null;
- try {
- FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder("META-INF/services/org/apache/camel/component/");
- LOG.trace("Using FactoryFinder: {}", finder);
- factory = finder.findClass(getScheme(), "strategy.factory.", CamelContext.class).orElse(null);
- } catch (IOException e) {
- LOG.trace("No strategy factory defined in 'META-INF/services/org/apache/camel/component/'", e);
- }
+ FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder("META-INF/services/org/apache/camel/component/");
+ LOG.trace("Using FactoryFinder: {}", finder);
+ Class<?> factory = finder.findClass(getScheme(), "strategy.factory.", CamelContext.class).orElse(null);
if (factory == null) {
// use default
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 60c5458..3e7dad2 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -312,9 +312,8 @@ public interface ExtendedCamelContext extends CamelContext {
*
* @param path the META-INF path
* @return the factory finder
- * @throws NoFactoryAvailableException is thrown if a factory could not be found
*/
- FactoryFinder getFactoryFinder(String path) throws NoFactoryAvailableException;
+ FactoryFinder getFactoryFinder(String path);
/**
* Sets the factory finder resolver to use.
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
index ddd9948..6e5e584 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
@@ -23,6 +23,8 @@ import java.util.Optional;
*/
public interface FactoryFinder {
+ String DEFAULT_PATH = "META-INF/services/org/apache/camel/";
+
/**
* Gets the resource classpath.
*
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
index 6136127..e487d06 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
@@ -27,7 +27,9 @@ public interface FactoryFinderResolver {
* @param classResolver the class resolver to use
* @return a factory finder.
*/
- FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver);
+ default FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
+ return resolveFactoryFinder(classResolver, FactoryFinder.DEFAULT_PATH);
+ }
/**
* Creates a new factory finder.
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index a3c50db..78feca3 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
import org.apache.camel.StaticService;
import org.apache.camel.api.management.ManagedAttribute;
import org.apache.camel.api.management.ManagedResource;
@@ -548,8 +547,6 @@ public class PropertiesComponent extends ServiceSupport implements org.apache.ca
LOG.warn("PropertiesComponent cannot add custom PropertiesSource as the type is not a org.apache.camel.component.properties.PropertiesSource but: " + type.getName());
}
}
- } catch (NoFactoryAvailableException e) {
- // ignore
} catch (Exception e) {
LOG.debug("Error discovering and using custom PropertiesSource due to " + e.getMessage() + ". This exception is ignored", e);
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 1094d8f..160b839 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -58,7 +58,6 @@ import org.apache.camel.FluentProducerTemplate;
import org.apache.camel.GlobalEndpointConfiguration;
import org.apache.camel.IsSingleton;
import org.apache.camel.MultipleConsumersSupport;
-import org.apache.camel.NoFactoryAvailableException;
import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
@@ -264,7 +263,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
private volatile ProcessorFactory processorFactory;
private volatile MessageHistoryFactory messageHistoryFactory;
private volatile FactoryFinderResolver factoryFinderResolver;
- private volatile FactoryFinder defaultFactoryFinder;
private volatile StreamCachingStrategy streamCachingStrategy;
private volatile InflightRepository inflightRepository;
private volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
@@ -2727,12 +2725,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
forceLazyInitialization();
- // if camel-bean is on classpath then we can load its bean proxy factory
- BeanProxyFactory beanProxyFactory = new BeanProxyFactoryResolver().resolve(this);
- if (beanProxyFactory != null) {
- addService(beanProxyFactory);
- }
-
// re-create endpoint registry as the cache size limit may be set after the constructor of this instance was called.
// and we needed to create endpoints up-front as it may be accessed before this context is started
endpoints = doAddService(createEndpointRegistry(endpoints));
@@ -3528,7 +3520,11 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
getAsyncProcessorAwaitManager();
getShutdownStrategy();
getPackageScanClassResolver();
- getRestRegistryFactory();
+ try {
+ getRestRegistryFactory();
+ } catch (IllegalStateException e) {
+ // ignore in case camel-rest is not on the classpath
+ }
getReactiveExecutor();
getBeanIntrospection();
getPropertiesComponent();
@@ -3557,8 +3553,12 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
getUuidGenerator();
getUnitOfWorkFactory();
getRouteController();
- getBeanProxyFactory();
- getBeanProcessorFactory();
+ try {
+ addService(getBeanProxyFactory());
+ getBeanProcessorFactory();
+ } catch (Exception e) {
+ // ignore in case camel-bean is not on the classpath
+ }
getBeanPostProcessor();
}
@@ -3628,14 +3628,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
@Override
public FactoryFinder getDefaultFactoryFinder() {
- if (defaultFactoryFinder == null) {
- synchronized (lock) {
- if (defaultFactoryFinder == null) {
- defaultFactoryFinder = getFactoryFinderResolver().resolveDefaultFactoryFinder(getClassResolver());
- }
- }
- }
- return defaultFactoryFinder;
+ return getFactoryFinder(FactoryFinder.DEFAULT_PATH);
}
@Override
@@ -3656,7 +3649,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
}
@Override
- public FactoryFinder getFactoryFinder(String path) throws NoFactoryAvailableException {
+ public FactoryFinder getFactoryFinder(String path) {
return factories.computeIfAbsent(path, this::createFactoryFinder);
}
@@ -4207,9 +4200,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
protected RestRegistry createRestRegistry() {
RestRegistryFactory factory = getRestRegistryFactory();
- if (factory == null) {
- throw new IllegalStateException("No RestRegistryFactory implementation found. You need to add camel-rest to the classpath.");
- }
return factory.createRegistry();
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java
new file mode 100644
index 0000000..810b99a
--- /dev/null
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.impl.engine;
+
+import java.util.Optional;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.spi.FactoryFinder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BaseServiceResolver<T> {
+
+ protected final Logger LOG = LoggerFactory.getLogger(getClass());
+
+ protected final String factoryKey;
+ protected final Class<T> factoryClass;
+
+ public BaseServiceResolver(String factoryKey, Class<T> factoryClass) {
+ this.factoryKey = factoryKey;
+ this.factoryClass = factoryClass;
+ }
+
+ public Optional<T> resolve(CamelContext context) {
+ // use factory finder to find a custom implementations
+ Class<?> type = null;
+ try {
+ FactoryFinder finder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(FactoryFinder.DEFAULT_PATH);
+ type = finder.findClass(factoryKey).orElse(null);
+ } catch (Exception e) {
+ // ignore
+ }
+
+ if (type != null) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Found {}: {} via: {}{}", factoryClass.getSimpleName(), type.getName(), FactoryFinder.DEFAULT_PATH, factoryKey);
+ }
+ if (factoryClass.isAssignableFrom(type)) {
+ T answer = factoryClass.cast(context.getInjector().newInstance(type, false));
+ LOG.debug("Detected and using {}: {}", factoryClass.getSimpleName(), answer);
+ return Optional.of(answer);
+ } else {
+ throw new IllegalArgumentException("Type is not a " + factoryClass.getSimpleName() + " implementation. Found: " + type.getName());
+ }
+ }
+ return Optional.empty();
+ }
+
+}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
deleted file mode 100644
index df2945d..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link org.apache.camel.spi.BeanProcessorFactory} from the classpath in camel-bean.
- */
-public class BeanProcessorFactoryResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(BeanProcessorFactoryResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public BeanProcessorFactory resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(BeanProcessorFactory.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-processor-factory");
- }
- if (BeanProcessorFactory.class.isAssignableFrom(type)) {
- BeanProcessorFactory answer = (BeanProcessorFactory) context.getInjector().newInstance(type, false);
- LOG.debug("Detected and using BeanProcessorFactory: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a BeanProcessorFactory implementation. Found: " + type.getName());
- }
- }
-
- LOG.debug("Cannot find BeanProcessorFactory. Make sure camel-bean is on the classpath.");
- return null;
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
deleted file mode 100644
index 78a9a98..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.BeanProxyFactory;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link BeanProxyFactory} from the classpath in camel-bean.
- */
-public class BeanProxyFactoryResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(BeanProxyFactoryResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public BeanProxyFactory resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(BeanProxyFactory.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-proxy-factory");
- }
- if (BeanProxyFactory.class.isAssignableFrom(type)) {
- BeanProxyFactory answer = (BeanProxyFactory) context.getInjector().newInstance(type, false);
- LOG.debug("Detected and using BeanProxyFactory: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a BeanProxyFactory implementation. Found: " + type.getName());
- }
- }
-
- LOG.debug("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
- return null;
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 7bf8641..da743bc 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -238,9 +238,6 @@ public class CamelPostProcessorHelper implements CamelContextAware {
try {
// use proxy service
BeanProxyFactory factory = endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getBeanProxyFactory();
- if (factory == null) {
- throw new IllegalArgumentException("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
- }
return factory.createProxy(endpoint, binding, type);
} catch (Exception e) {
throw createProxyInstantiationRuntimeException(type, endpoint, e);
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
index 7fc2fb5..027dead 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
@@ -26,11 +26,6 @@ import org.apache.camel.spi.FactoryFinderResolver;
public class DefaultFactoryFinderResolver implements FactoryFinderResolver {
@Override
- public FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
- return resolveFactoryFinder(classResolver, "META-INF/services/org/apache/camel/");
- }
-
- @Override
public FactoryFinder resolveFactoryFinder(ClassResolver classResolver, String resourcePath) {
return new DefaultFactoryFinder(classResolver, resourcePath);
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
deleted file mode 100644
index a2059bb..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.HeadersMapFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link HeadersMapFactory} implementation to be used.
- *
- * @see HeadersMapFactory
- */
-public class HeadersMapFactoryResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(HeadersMapFactoryResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public HeadersMapFactory resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(HeadersMapFactory.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found HeadersMapFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "headers-map-factory");
- }
- if (HeadersMapFactory.class.isAssignableFrom(type)) {
- HeadersMapFactory answer = (HeadersMapFactory) context.getInjector().newInstance(type, false);
- LOG.info("Detected and using HeadersMapFactory: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a HeadersMapFactory implementation. Found: " + type.getName());
- }
- }
-
- // fallback to default
- LOG.debug("Creating default HeadersMapFactory");
- return new DefaultHeadersMapFactory();
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
-
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
deleted file mode 100644
index 1da4e68..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.PropertiesComponent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link org.apache.camel.spi.PropertiesComponent} from the classpath.
- */
-public class PropertiesComponentFactoryResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(PropertiesComponentFactoryResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public PropertiesComponent resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(PropertiesComponent.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found PropertiesComponent: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "properties-component-factory");
- }
- if (PropertiesComponent.class.isAssignableFrom(type)) {
- PropertiesComponent answer = (PropertiesComponent) context.getInjector().newInstance(type, false);
- LOG.debug("Detected and using PropertiesComponent: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a PropertiesComponent implementation. Found: " + type.getName());
- }
- }
-
- // use default component
- return new org.apache.camel.component.properties.PropertiesComponent();
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
deleted file mode 100644
index 563c803..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.ReactiveExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to create the {@link org.apache.camel.spi.ReactiveExecutor} to be used.
- */
-public class ReactiveExecutorResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(ReactiveExecutorResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public ReactiveExecutor resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(ReactiveExecutor.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found ReactiveExecutor: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "reactive-executor");
- }
- if (ReactiveExecutor.class.isAssignableFrom(type)) {
- ReactiveExecutor answer = (ReactiveExecutor) context.getInjector().newInstance(type, false);
- LOG.info("Detected and using ReactiveExecutor: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a ReactiveExecutor implementation. Found: " + type.getName());
- }
- }
-
- // fallback to default
- LOG.debug("Creating default ReactiveExecutor");
- return new DefaultReactiveExecutor();
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
deleted file mode 100644
index 2726bca..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.RestRegistryFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link RestRegistryFactory} implementation to be used.
- *
- * @see RestRegistryFactory
- */
-public class RestRegistryFactoryResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(RestRegistryFactoryResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public RestRegistryFactory resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(RestRegistryFactory.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found RestRegistryFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "rest-registry-factory");
- }
- if (RestRegistryFactory.class.isAssignableFrom(type)) {
- RestRegistryFactory answer = (RestRegistryFactory) context.getInjector().newInstance(type, false);
- LOG.debug("Detected and using RestRegistryFactory: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a RestRegistryFactory implementation. Found: " + type.getName());
- }
- }
-
- LOG.debug("Cannot find RestRegistryFactory. Make sure camel-rest is on the classpath.");
- return null;
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
-
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
deleted file mode 100644
index 8c97cf0..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.catalog.RuntimeCamelCatalog;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link org.apache.camel.catalog.RuntimeCamelCatalog} implementation to be used.
- *
- * @see RuntimeCamelCatalog
- */
-public class RuntimeCamelCatalogResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(RuntimeCamelCatalogResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public RuntimeCamelCatalog resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(RuntimeCamelCatalog.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found RuntimeCamelCatalog: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "runtime-camelcatalog");
- }
- if (RuntimeCamelCatalog.class.isAssignableFrom(type)) {
- RuntimeCamelCatalog answer = (RuntimeCamelCatalog) context.getInjector().newInstance(type, false);
- answer.setCamelContext(context);
- LOG.info("Detected and using RuntimeCamelCatalog: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a RuntimeCamelCatalog implementation. Found: " + type.getName());
- }
- }
-
- // fallback to default
- throw new IllegalArgumentException("Cannot find RuntimeCamelCatalog on classpath. Add camel-core-catalog to classpath.");
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index 23178c6..6676fc3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -83,9 +83,6 @@ public final class ProxyBuilder {
ObjectHelper.notNull(endpoint, "endpoint");
// use proxy service
BeanProxyFactory factory = camelContext.adapt(ExtendedCamelContext.class).getBeanProxyFactory();
- if (factory == null) {
- throw new IllegalArgumentException("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
- }
return factory.createProxy(endpoint, binding, interfaceClasses);
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index cf731f8..ede62b8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -26,8 +26,6 @@ import org.apache.camel.TypeConverter;
import org.apache.camel.catalog.RuntimeCamelCatalog;
import org.apache.camel.health.HealthCheckRegistry;
import org.apache.camel.impl.converter.DefaultTypeConverter;
-import org.apache.camel.impl.engine.BeanProcessorFactoryResolver;
-import org.apache.camel.impl.engine.BeanProxyFactoryResolver;
import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
import org.apache.camel.impl.engine.DefaultBeanIntrospection;
import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
@@ -38,6 +36,7 @@ import org.apache.camel.impl.engine.DefaultConfigurerResolver;
import org.apache.camel.impl.engine.DefaultDataFormatResolver;
import org.apache.camel.impl.engine.DefaultEndpointRegistry;
import org.apache.camel.impl.engine.DefaultFactoryFinderResolver;
+import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
import org.apache.camel.impl.engine.DefaultInflightRepository;
import org.apache.camel.impl.engine.DefaultInjector;
import org.apache.camel.impl.engine.DefaultLanguageResolver;
@@ -47,6 +46,7 @@ import org.apache.camel.impl.engine.DefaultNodeIdFactory;
import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
import org.apache.camel.impl.engine.DefaultProcessorFactory;
+import org.apache.camel.impl.engine.DefaultReactiveExecutor;
import org.apache.camel.impl.engine.DefaultRouteController;
import org.apache.camel.impl.engine.DefaultShutdownStrategy;
import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
@@ -54,12 +54,8 @@ import org.apache.camel.impl.engine.DefaultTracer;
import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory;
import org.apache.camel.impl.engine.DefaultUuidGenerator;
import org.apache.camel.impl.engine.EndpointKey;
-import org.apache.camel.impl.engine.HeadersMapFactoryResolver;
-import org.apache.camel.impl.engine.PropertiesComponentFactoryResolver;
-import org.apache.camel.impl.engine.ReactiveExecutorResolver;
-import org.apache.camel.impl.engine.RestRegistryFactoryResolver;
-import org.apache.camel.impl.engine.RuntimeCamelCatalogResolver;
import org.apache.camel.impl.engine.WebSpherePackageScanClassResolver;
+import org.apache.camel.impl.engine.BaseServiceResolver;
import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
import org.apache.camel.spi.AsyncProcessorAwaitManager;
import org.apache.camel.spi.BeanIntrospection;
@@ -170,7 +166,8 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected TypeConverter createTypeConverter() {
- return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(), getDefaultFactoryFinder(), isLoadTypeConverters());
+ return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(),
+ getDefaultFactoryFinder(), isLoadTypeConverters());
}
@Override
@@ -194,7 +191,9 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected PropertiesComponent createPropertiesComponent() {
- return new PropertiesComponentFactoryResolver().resolve(this);
+ return new BaseServiceResolver<>(PropertiesComponent.FACTORY, PropertiesComponent.class)
+ .resolve(this)
+ .orElseGet(org.apache.camel.component.properties.PropertiesComponent::new);
}
@Override
@@ -307,7 +306,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected RuntimeCamelCatalog createRuntimeCamelCatalog() {
- return new RuntimeCamelCatalogResolver().resolve(this);
+ return new BaseServiceResolver<>(RuntimeCamelCatalog.FACTORY, RuntimeCamelCatalog.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find RuntimeCamelCatalog on classpath. "
+ + "Add camel-core-catalog to classpath."));
}
@Override
@@ -322,17 +324,25 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected HeadersMapFactory createHeadersMapFactory() {
- return new HeadersMapFactoryResolver().resolve(this);
+ return new BaseServiceResolver<>(HeadersMapFactory.FACTORY, HeadersMapFactory.class)
+ .resolve(this)
+ .orElseGet(DefaultHeadersMapFactory::new);
}
@Override
protected BeanProxyFactory createBeanProxyFactory() {
- return new BeanProxyFactoryResolver().resolve(this);
+ return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
+ + "Add camel-bean to classpath."));
}
@Override
protected BeanProcessorFactory createBeanProcessorFactory() {
- return new BeanProcessorFactoryResolver().resolve(this);
+ return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
+ + "Add camel-bean to classpath."));
}
@Override
@@ -342,12 +352,18 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected XMLRoutesDefinitionLoader createXMLRoutesDefinitionLoader() {
- return new XMLRoutesDefinitionLoaderResolver().resolve(this);
+ return new BaseServiceResolver<>(XMLRoutesDefinitionLoader.FACTORY, XMLRoutesDefinitionLoader.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find XMLRoutesDefinitionLoader on classpath. "
+ + "Add either camel-xml-io or camel-xml-jaxb to classpath."));
}
@Override
protected ModelToXMLDumper createModelToXMLDumper() {
- return new ModelToXMLDumperResolver().resolve(this);
+ return new BaseServiceResolver<>(ModelToXMLDumper.FACTORY, ModelToXMLDumper.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find ModelToXMLDumper on classpath. "
+ + "Add camel-xml-jaxb to classpath."));
}
@Override
@@ -382,7 +398,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected RestRegistryFactory createRestRegistryFactory() {
- return new RestRegistryFactoryResolver().resolve(this);
+ return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class)
+ .resolve(this)
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
+ + "Add camel-rest to classpath."));
}
@Override
@@ -397,7 +416,9 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected ReactiveExecutor createReactiveExecutor() {
- return new ReactiveExecutorResolver().resolve(this);
+ return new BaseServiceResolver<>(ReactiveExecutor.FACTORY, ReactiveExecutor.class)
+ .resolve(this)
+ .orElseGet(DefaultReactiveExecutor::new);
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
deleted file mode 100644
index 57ac62f..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.ModelToXMLDumper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link ModelToXMLDumper} implementation to be used.
- *
- * @see ModelToXMLDumper
- */
-public class ModelToXMLDumperResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(ModelToXMLDumperResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public ModelToXMLDumper resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(ModelToXMLDumper.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found ModelToXMLDumper: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "modelxml-dumper");
- }
- if (ModelToXMLDumper.class.isAssignableFrom(type)) {
- ModelToXMLDumper answer = (ModelToXMLDumper) context.getInjector().newInstance(type, false);
- LOG.info("Detected and using ModelToXMLDumper: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a ModelToXMLDumper implementation. Found: " + type.getName());
- }
- }
-
- throw new RuntimeCamelException("Cannot find XML routes dumper in classpath. Add camel-xml-jaxb to the classpath.");
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
deleted file mode 100644
index 000c7cb..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.XMLRoutesDefinitionLoader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link XMLRoutesDefinitionLoader} implementation to be used.
- *
- * @see XMLRoutesDefinitionLoader
- */
-public class XMLRoutesDefinitionLoaderResolver {
-
- public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
- private static final Logger LOG = LoggerFactory.getLogger(XMLRoutesDefinitionLoaderResolver.class);
-
- private FactoryFinder factoryFinder;
-
- public XMLRoutesDefinitionLoader resolve(CamelContext context) {
- // use factory finder to find a custom implementations
- Class<?> type = null;
- try {
- type = findFactory(XMLRoutesDefinitionLoader.FACTORY, context);
- } catch (Exception e) {
- // ignore
- }
-
- if (type != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found XMLRoutesDefinitionLoader: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "xmlroutes-loader");
- }
- if (XMLRoutesDefinitionLoader.class.isAssignableFrom(type)) {
- XMLRoutesDefinitionLoader answer = (XMLRoutesDefinitionLoader) context.getInjector().newInstance(type, false);
- LOG.info("Detected and using XMLRoutesDefinitionLoader: {}", answer);
- return answer;
- } else {
- throw new IllegalArgumentException("Type is not a XMLRoutesDefinitionLoader implementation. Found: " + type.getName());
- }
- }
-
- throw new RuntimeCamelException("Cannot find XML routes loader in classpath. Add either camel-xml-io or camel-xml-jaxb to the classpath.");
- }
-
- private Class<?> findFactory(String name, CamelContext context) throws IOException {
- if (factoryFinder == null) {
- factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
- }
- return factoryFinder.findClass(name).orElse(null);
- }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 4fa6126..8e32da5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -39,9 +39,6 @@ public class BeanReifier extends ProcessorReifier<BeanDefinition> {
Class<?> beanClass = definition.getBeanClass();
BeanProcessorFactory fac = camelContext.adapt(ExtendedCamelContext.class).getBeanProcessorFactory();
- if (fac == null) {
- throw new IllegalStateException("Cannot find BeanProcessorFactory. Make sure camel-bean is on the classpath.");
- }
// use singleton as default scope
BeanScope scope = BeanScope.Singleton;
if (definition.getScope() != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 0707c79..02fb328 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -23,8 +23,6 @@ import java.util.function.BiFunction;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.model.Model;
import org.apache.camel.model.dataformat.ASN1DataFormat;
@@ -271,18 +269,14 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
}
}
if (configurer == null) {
- try {
- Class<?> clazz = camelContext.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH)
- .findOptionalClass(name + "-dataformat-configurer", null)
- .orElse(null);
- if (clazz != null) {
- configurer = org.apache.camel.support.ObjectHelper.newInstance(clazz, PropertyConfigurer.class);
- if (LOG.isDebugEnabled() && configurer != null) {
- LOG.debug("Discovered dataformat property configurer using the FactoryFinder: {} -> {}", name, configurer);
- }
+ Class<?> clazz = camelContext.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH)
+ .findOptionalClass(name + "-dataformat-configurer", null)
+ .orElse(null);
+ if (clazz != null) {
+ configurer = org.apache.camel.support.ObjectHelper.newInstance(clazz, PropertyConfigurer.class);
+ if (LOG.isDebugEnabled() && configurer != null) {
+ LOG.debug("Discovered dataformat property configurer using the FactoryFinder: {} -> {}", name, configurer);
}
- } catch (NoFactoryAvailableException e) {
- throw new RuntimeCamelException("Unable to retrieve dataformat property configurer factory finder", e);
}
}
return configurer;
diff --git a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
index 8bed373..631c190 100644
--- a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
+++ b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
@@ -30,11 +30,6 @@ public class OsgiFactoryFinderResolver implements FactoryFinderResolver {
}
@Override
- public FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
- return resolveFactoryFinder(classResolver, "META-INF/services/org/apache/camel/");
- }
-
- @Override
public FactoryFinder resolveFactoryFinder(ClassResolver classResolver, String resourcePath) {
return new OsgiFactoryFinder(bundleContext, classResolver, resourcePath);
}