You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2015/04/19 07:50:59 UTC

Re: camel git commit: CAMEL-8647: Make Camel OSGI Extender Subsystem-Aware - With thanks to Manuel Holzleitner

Hi

I wonder if this may cause master branch to fail in the
camel-test-blueprint module?

https://builds.apache.org/job/Camel.trunk.fulltest/org.apache.camel$camel-test-blueprint/2274/testReport/junit/org.apache.camel.test.blueprint/CustomIdIssuesTest/testCustomId/

I get same errors running it locally on my laptop



On Fri, Apr 17, 2015 at 4:52 PM,  <cs...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/master 96cfe14c9 -> a5a0cd7e7
>
>
> CAMEL-8647: Make Camel OSGI Extender Subsystem-Aware - With thanks to Manuel Holzleitner
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a5a0cd7e
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a5a0cd7e
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a5a0cd7e
>
> Branch: refs/heads/master
> Commit: a5a0cd7e7dcc9b3c41ee96f5da0975f48c98ca7b
> Parents: 96cfe14
> Author: Christian Schneider <ch...@die-schneider.net>
> Authored: Fri Apr 17 15:42:33 2015 +0200
> Committer: Christian Schneider <ch...@die-schneider.net>
> Committed: Fri Apr 17 16:52:16 2015 +0200
>
> ----------------------------------------------------------------------
>  .../org/apache/camel/impl/osgi/Activator.java   | 48 ++++++++++++++++----
>  parent/pom.xml                                  |  3 +-
>  2 files changed, 40 insertions(+), 11 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/a5a0cd7e/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
> ----------------------------------------------------------------------
> diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
> index d73f6c6..2eddc25 100644
> --- a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
> +++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
> @@ -64,6 +64,8 @@ import org.osgi.framework.BundleContext;
>  import org.osgi.framework.BundleEvent;
>  import org.osgi.framework.Constants;
>  import org.osgi.framework.ServiceRegistration;
> +import org.osgi.framework.wiring.BundleWire;
> +import org.osgi.framework.wiring.BundleWiring;
>  import org.slf4j.Logger;
>  import org.slf4j.LoggerFactory;
>
> @@ -75,15 +77,20 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>      public static final String META_INF_DATAFORMAT = "META-INF/services/org/apache/camel/dataformat/";
>      public static final String META_INF_TYPE_CONVERTER = "META-INF/services/org/apache/camel/TypeConverter";
>      public static final String META_INF_FALLBACK_TYPE_CONVERTER = "META-INF/services/org/apache/camel/FallbackTypeConverter";
> +    public static final String EXTENDER_NAMESPACE = "osgi.extender";
> +    public static final String CAMEL_EXTENDER = "org.apache.camel";
>
>      private static final Logger LOG = LoggerFactory.getLogger(Activator.class);
>
>      private BundleTracker tracker;
>      private Map<Long, List<BaseService>> resolvers = new ConcurrentHashMap<Long, List<BaseService>>();
> +    private long bundleId;
>
>      public void start(BundleContext context) throws Exception {
>          LOG.info("Camel activator starting");
> -        tracker = new BundleTracker(context, Bundle.ACTIVE, this);
> +        bundleId = context.getBundle().getBundleId();
> +        BundleContext systemBundleContext = context.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).getBundleContext();
> +        tracker = new BundleTracker(systemBundleContext, Bundle.ACTIVE, this);
>          tracker.open();
>          LOG.info("Camel activator started");
>      }
> @@ -96,18 +103,38 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>
>      public Object addingBundle(Bundle bundle, BundleEvent event) {
>          LOG.debug("Bundle started: {}", bundle.getSymbolicName());
> -        List<BaseService> r = new ArrayList<BaseService>();
> -        registerComponents(bundle, r);
> -        registerLanguages(bundle, r);
> -        registerDataFormats(bundle, r);
> -        registerTypeConverterLoader(bundle, r);
> -        for (BaseService service : r) {
> -            service.register();
> -        }
> -        resolvers.put(bundle.getBundleId(), r);
> +        if (extenderCapabilityWired(bundle)) {
> +            List<BaseService> r = new ArrayList<BaseService>();
> +            registerComponents(bundle, r);
> +            registerLanguages(bundle, r);
> +            registerDataFormats(bundle, r);
> +            registerTypeConverterLoader(bundle, r);
> +            for (BaseService service : r) {
> +                service.register();
> +            }
> +            resolvers.put(bundle.getBundleId(), r);
> +        }
> +
>          return bundle;
>      }
>
> +    private boolean extenderCapabilityWired(Bundle bundle) {
> +        BundleWiring wiring = bundle.adapt(BundleWiring.class);
> +        List<BundleWire> requiredWires = wiring.getRequiredWires(EXTENDER_NAMESPACE);
> +        for (BundleWire requiredWire : requiredWires) {
> +            if (CAMEL_EXTENDER.equals(requiredWire.getCapability().getAttributes().get(EXTENDER_NAMESPACE))) {
> +                if (this.bundleId == requiredWire.getProviderWiring().getBundle().getBundleId()) {
> +                    LOG.debug("Camel extender requirement of bundle {} correctly wired to this implementation", bundle.getBundleId());
> +                    return true;
> +                } else {
> +                    LOG.info("Not processing bundle {} as it requires a camel extender but is not wired to the this implementation", bundle.getBundleId());
> +                    return false;
> +                }
> +            }
> +        }
> +        return true;
> +    }
> +
>      public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
>      }
>
> @@ -537,3 +564,4 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>
>  }
>
> +
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/a5a0cd7e/parent/pom.xml
> ----------------------------------------------------------------------
> diff --git a/parent/pom.xml b/parent/pom.xml
> index 530371f..877c6ba 100644
> --- a/parent/pom.xml
> +++ b/parent/pom.xml
> @@ -521,7 +521,8 @@
>      <camel.osgi.import.strict.version>version="[$(version;===;${camel.osgi.version.clean}),$(version;==+;${camel.osgi.version.clean}))"</camel.osgi.import.strict.version>
>      <camel.osgi.import.default.version>[$(version;==;$(@)),$(version;+;$(@)))</camel.osgi.import.default.version>
>      <camel.osgi.import.defaults>
> -      org.osgi.framework*;version="[1.5,2)",
> +      org.osgi.framework;version="[1.5,2)",
> +      org.osgi.framework.wiring;version="[1.0,2)",
>        org.springframework.ws.*;version="[2,3)",
>        org.springframework.xml.*;version="[2,3)",
>        org.springframework.*;version="${spring-version-range}",
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Re: camel git commit: CAMEL-8647: Make Camel OSGI Extender Subsystem-Aware - With thanks to Manuel Holzleitner

Posted by Christian Schneider <ch...@die-schneider.net>.
Hi Claus,

you are right. The problem was caused by my commit. I am currently 
testing a fix and will shortly do the commit.
I also found why I did not see the problem in my own test by hand. It 
was simply because I used camel-blueprint not camel-spring. So gladly 
karaf 4 and 2.4 do not work differently here.

Christian

On 19.04.2015 07:50, Claus Ibsen wrote:
> Hi
>
> I wonder if this may cause master branch to fail in the
> camel-test-blueprint module?
>
> https://builds.apache.org/job/Camel.trunk.fulltest/org.apache.camel$camel-test-blueprint/2274/testReport/junit/org.apache.camel.test.blueprint/CustomIdIssuesTest/testCustomId/
>
> I get same errors running it locally on my laptop
>
>
>
> On Fri, Apr 17, 2015 at 4:52 PM,  <cs...@apache.org> wrote:
>> Repository: camel
>> Updated Branches:
>>    refs/heads/master 96cfe14c9 -> a5a0cd7e7
>>
>>
>> CAMEL-8647: Make Camel OSGI Extender Subsystem-Aware - With thanks to Manuel Holzleitner
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a5a0cd7e
>> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a5a0cd7e
>> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a5a0cd7e
>>
>> Branch: refs/heads/master
>> Commit: a5a0cd7e7dcc9b3c41ee96f5da0975f48c98ca7b
>> Parents: 96cfe14
>> Author: Christian Schneider <ch...@die-schneider.net>
>> Authored: Fri Apr 17 15:42:33 2015 +0200
>> Committer: Christian Schneider <ch...@die-schneider.net>
>> Committed: Fri Apr 17 16:52:16 2015 +0200
>>
>> ----------------------------------------------------------------------
>>   .../org/apache/camel/impl/osgi/Activator.java   | 48 ++++++++++++++++----
>>   parent/pom.xml                                  |  3 +-
>>   2 files changed, 40 insertions(+), 11 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/camel/blob/a5a0cd7e/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
>> ----------------------------------------------------------------------
>> diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
>> index d73f6c6..2eddc25 100644
>> --- a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
>> +++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
>> @@ -64,6 +64,8 @@ import org.osgi.framework.BundleContext;
>>   import org.osgi.framework.BundleEvent;
>>   import org.osgi.framework.Constants;
>>   import org.osgi.framework.ServiceRegistration;
>> +import org.osgi.framework.wiring.BundleWire;
>> +import org.osgi.framework.wiring.BundleWiring;
>>   import org.slf4j.Logger;
>>   import org.slf4j.LoggerFactory;
>>
>> @@ -75,15 +77,20 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>>       public static final String META_INF_DATAFORMAT = "META-INF/services/org/apache/camel/dataformat/";
>>       public static final String META_INF_TYPE_CONVERTER = "META-INF/services/org/apache/camel/TypeConverter";
>>       public static final String META_INF_FALLBACK_TYPE_CONVERTER = "META-INF/services/org/apache/camel/FallbackTypeConverter";
>> +    public static final String EXTENDER_NAMESPACE = "osgi.extender";
>> +    public static final String CAMEL_EXTENDER = "org.apache.camel";
>>
>>       private static final Logger LOG = LoggerFactory.getLogger(Activator.class);
>>
>>       private BundleTracker tracker;
>>       private Map<Long, List<BaseService>> resolvers = new ConcurrentHashMap<Long, List<BaseService>>();
>> +    private long bundleId;
>>
>>       public void start(BundleContext context) throws Exception {
>>           LOG.info("Camel activator starting");
>> -        tracker = new BundleTracker(context, Bundle.ACTIVE, this);
>> +        bundleId = context.getBundle().getBundleId();
>> +        BundleContext systemBundleContext = context.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).getBundleContext();
>> +        tracker = new BundleTracker(systemBundleContext, Bundle.ACTIVE, this);
>>           tracker.open();
>>           LOG.info("Camel activator started");
>>       }
>> @@ -96,18 +103,38 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>>
>>       public Object addingBundle(Bundle bundle, BundleEvent event) {
>>           LOG.debug("Bundle started: {}", bundle.getSymbolicName());
>> -        List<BaseService> r = new ArrayList<BaseService>();
>> -        registerComponents(bundle, r);
>> -        registerLanguages(bundle, r);
>> -        registerDataFormats(bundle, r);
>> -        registerTypeConverterLoader(bundle, r);
>> -        for (BaseService service : r) {
>> -            service.register();
>> -        }
>> -        resolvers.put(bundle.getBundleId(), r);
>> +        if (extenderCapabilityWired(bundle)) {
>> +            List<BaseService> r = new ArrayList<BaseService>();
>> +            registerComponents(bundle, r);
>> +            registerLanguages(bundle, r);
>> +            registerDataFormats(bundle, r);
>> +            registerTypeConverterLoader(bundle, r);
>> +            for (BaseService service : r) {
>> +                service.register();
>> +            }
>> +            resolvers.put(bundle.getBundleId(), r);
>> +        }
>> +
>>           return bundle;
>>       }
>>
>> +    private boolean extenderCapabilityWired(Bundle bundle) {
>> +        BundleWiring wiring = bundle.adapt(BundleWiring.class);
>> +        List<BundleWire> requiredWires = wiring.getRequiredWires(EXTENDER_NAMESPACE);
>> +        for (BundleWire requiredWire : requiredWires) {
>> +            if (CAMEL_EXTENDER.equals(requiredWire.getCapability().getAttributes().get(EXTENDER_NAMESPACE))) {
>> +                if (this.bundleId == requiredWire.getProviderWiring().getBundle().getBundleId()) {
>> +                    LOG.debug("Camel extender requirement of bundle {} correctly wired to this implementation", bundle.getBundleId());
>> +                    return true;
>> +                } else {
>> +                    LOG.info("Not processing bundle {} as it requires a camel extender but is not wired to the this implementation", bundle.getBundleId());
>> +                    return false;
>> +                }
>> +            }
>> +        }
>> +        return true;
>> +    }
>> +
>>       public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
>>       }
>>
>> @@ -537,3 +564,4 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
>>
>>   }
>>
>> +
>>
>> http://git-wip-us.apache.org/repos/asf/camel/blob/a5a0cd7e/parent/pom.xml
>> ----------------------------------------------------------------------
>> diff --git a/parent/pom.xml b/parent/pom.xml
>> index 530371f..877c6ba 100644
>> --- a/parent/pom.xml
>> +++ b/parent/pom.xml
>> @@ -521,7 +521,8 @@
>>       <camel.osgi.import.strict.version>version="[$(version;===;${camel.osgi.version.clean}),$(version;==+;${camel.osgi.version.clean}))"</camel.osgi.import.strict.version>
>>       <camel.osgi.import.default.version>[$(version;==;$(@)),$(version;+;$(@)))</camel.osgi.import.default.version>
>>       <camel.osgi.import.defaults>
>> -      org.osgi.framework*;version="[1.5,2)",
>> +      org.osgi.framework;version="[1.5,2)",
>> +      org.osgi.framework.wiring;version="[1.0,2)",
>>         org.springframework.ws.*;version="[2,3)",
>>         org.springframework.xml.*;version="[2,3)",
>>         org.springframework.*;version="${spring-version-range}",
>>
>
>


-- 
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com