You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/09/04 16:30:42 UTC
[camel-karaf] 01/02: CAMEL-14672: Invoke customizers as part of
services initialization
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-karaf.git
commit 774e50704472babece202b6e7ce8dd140ad89d5a
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Sep 4 18:24:40 2020 +0200
CAMEL-14672: Invoke customizers as part of services initialization
---
.../blueprint/BlueprintDataFormatResolver.java | 18 ---------------
.../camel/core/osgi/OsgiDataFormatResolver.java | 23 +++---------------
.../org/apache/camel/core/osgi/impl/Activator.java | 27 +++++-----------------
.../core/osgi/OsgiDataFormatResolverTest.java | 13 +++++------
4 files changed, 15 insertions(+), 66 deletions(-)
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintDataFormatResolver.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintDataFormatResolver.java
index 0f504d0..c602d36 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintDataFormatResolver.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintDataFormatResolver.java
@@ -20,7 +20,6 @@ import org.apache.camel.CamelContext;
import org.apache.camel.core.osgi.OsgiDataFormatResolver;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.DataFormatFactory;
-import org.apache.camel.spi.DataFormatResolver;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,23 +32,6 @@ public class BlueprintDataFormatResolver extends OsgiDataFormatResolver {
}
@Override
- public DataFormat resolveDataFormat(String name, CamelContext context) {
- DataFormat dataFormat = null;
-
- DataFormatResolver resolver = context.getRegistry().lookupByNameAndType(".camelBlueprint.dataformatResolver." + name, DataFormatResolver.class);
- if (resolver != null) {
- LOG.debug("Found dataformat resolver: {} in registry: {}", name, resolver);
- dataFormat = resolver.resolveDataFormat(name, context);
- }
-
- if (dataFormat == null) {
- dataFormat = super.resolveDataFormat(name, context);
- }
-
- return dataFormat;
- }
-
- @Override
public DataFormat createDataFormat(String name, CamelContext context) {
DataFormatFactory factory = context.getRegistry().lookupByNameAndType(".camelBlueprint.dataformatFactory." + name, DataFormatFactory.class);
if (factory != null) {
diff --git a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
index 417fba0..d9954ec 100644
--- a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
+++ b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
@@ -40,21 +40,6 @@ public class OsgiDataFormatResolver implements DataFormatResolver {
}
@Override
- public DataFormat resolveDataFormat(String name, CamelContext context) {
- // lookup in registry first
- DataFormat dataFormat = ResolverHelper.lookupDataFormatInRegistryWithFallback(context, name);
- if (dataFormat == null) {
- dataFormat = getDataFormat(name, context, false);
- }
-
- if (dataFormat == null) {
- dataFormat = createDataFormat(name, context);
- }
-
- return dataFormat;
- }
-
- @Override
public DataFormat createDataFormat(String name, CamelContext context) {
DataFormat dataFormat = null;
@@ -65,21 +50,19 @@ public class OsgiDataFormatResolver implements DataFormatResolver {
}
if (dataFormat == null) {
- dataFormat = getDataFormat(name, context, true);
+ dataFormat = getDataFormat(name, context);
}
return dataFormat;
}
- private DataFormat getDataFormat(String name, CamelContext context, boolean create) {
+ private DataFormat getDataFormat(String name, CamelContext context) {
LOG.trace("Finding DataFormat: {}", name);
try {
Collection<ServiceReference<DataFormatResolver>> refs = bundleContext.getServiceReferences(DataFormatResolver.class, "(dataformat=" + name + ")");
if (refs != null) {
for (ServiceReference<DataFormatResolver> ref : refs) {
- return create
- ? bundleContext.getService(ref).createDataFormat(name, context)
- : bundleContext.getService(ref).resolveDataFormat(name, context);
+ return bundleContext.getService(ref).createDataFormat(name, context);
}
}
return null;
diff --git a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java
index 6443411..463c0a8 100644
--- a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java
+++ b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java
@@ -43,7 +43,6 @@ import org.apache.camel.TypeConverter;
import org.apache.camel.TypeConverterLoaderException;
import org.apache.camel.impl.converter.AnnotationTypeConverterLoader;
import org.apache.camel.impl.scan.AnnotatedWithPackageScanFilter;
-import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.spi.ComponentResolver;
import org.apache.camel.spi.ConfigurerResolver;
import org.apache.camel.spi.DataFormat;
@@ -92,7 +91,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
private BundleTracker<?> tracker;
private final Map<Long, List<BaseService>> resolvers = new ConcurrentHashMap<>();
private long bundleId;
-
+
// Map from package name to the capability we export for this package
private final Map<String, BundleCapability> packageCapabilities = new HashMap<>();
@@ -114,7 +113,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
packageCapabilities.clear();
LOG.info("Camel activator stopped");
}
-
+
/**
* Caches the package capabilities that are needed for a set of interface classes
*/
@@ -286,14 +285,14 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
}
}
}
-
+
} else if (url1 != null || url3 != null) {
LOG.debug("Found TypeConverter in bundle {}", bundle.getSymbolicName());
resolvers.add(new BundleTypeConverterLoader(bundle, url3 != null));
}
}
}
-
+
/**
* Check if bundle can see the given class
*/
@@ -433,24 +432,10 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
}
@Override
- public DataFormat resolveDataFormat(String name, CamelContext context) {
- DataFormat dataFormat = createInstance(name, dataformats.get(name), context);
- if (dataFormat == null) {
- dataFormat = createDataFormat(name, context);
- }
-
- return dataFormat;
- }
-
- @Override
public DataFormat createDataFormat(String name, CamelContext context) {
return createInstance(name, dataformats.get(name), context);
}
- public DataFormatDefinition resolveDataFormatDefinition(String name, CamelContext context) {
- return null;
- }
-
@Override
public void register() {
doRegister(DataFormatResolver.class, "dataformat", dataformats.keySet());
@@ -469,7 +454,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
this.bundle = bundle;
this.hasFallbackTypeConverter = hasFallbackTypeConverter;
}
-
+
public void setTypeConverterLoader(TypeConverterLoader typeConverterloader) {
this.loader = typeConverterloader;
}
@@ -690,7 +675,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec
}
return properties;
}
-
+
protected static Set<String> getConverterPackages(URL resource) {
Set<String> packages = new LinkedHashSet<>();
if (resource != null) {
diff --git a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java
index dab6602..0aa6ecc 100644
--- a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java
+++ b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.core.osgi;
import java.io.InputStream;
import java.io.OutputStream;
-import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.spi.DataFormat;
@@ -35,10 +34,10 @@ public class OsgiDataFormatResolverTest extends CamelOsgiTestSupport {
Registry registry = new DefaultRegistry();
registry.bind("allstar-dataformat", new SampleDataFormat(true));
- CamelContext camelContext = new DefaultCamelContext(registry);
+ DefaultCamelContext camelContext = new DefaultCamelContext(registry);
+ camelContext.setDataFormatResolver(new OsgiDataFormatResolver(getBundleContext()));
- OsgiDataFormatResolver resolver = new OsgiDataFormatResolver(getBundleContext());
- DataFormat dataformat = resolver.resolveDataFormat("allstar", camelContext);
+ DataFormat dataformat = camelContext.resolveDataFormat("allstar");
assertNotNull("We should find the super dataformat", dataformat);
assertTrue("We should get the super dataformat here", dataformat instanceof SampleDataFormat);
}
@@ -49,10 +48,10 @@ public class OsgiDataFormatResolverTest extends CamelOsgiTestSupport {
registry.bind("allstar", new SampleDataFormat(false));
registry.bind("allstar-dataformat", new SampleDataFormat(true));
- CamelContext camelContext = new DefaultCamelContext(registry);
+ DefaultCamelContext camelContext = new DefaultCamelContext(registry);
+ camelContext.setDataFormatResolver(new OsgiDataFormatResolver(getBundleContext()));
- OsgiDataFormatResolver resolver = new OsgiDataFormatResolver(getBundleContext());
- DataFormat dataformat = resolver.resolveDataFormat("allstar", camelContext);
+ DataFormat dataformat = camelContext.resolveDataFormat("allstar");
assertNotNull("We should find the super dataformat", dataformat);
assertTrue("We should get the super dataformat here", dataformat instanceof SampleDataFormat);
assertFalse("We should NOT find the fallback dataformat", ((SampleDataFormat) dataformat).isFallback());