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 <lburgazz...@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());