On Mon, Feb 21, 2011 at 14:12, Alasdair Nottingham <[email protected]> wrote: > Let me try an example of what I mean. > > Bundle A: > package org.example.first > public interface AnInterface { > public org.example.second.AUsefulType createAUsefulType(); > } > public class AUsefulStaticUtility { > public void doSomeStuff() { > > org.example.third.ANotherUsefulUtility.doReallyCoolFunkyStuff(); > } > } > > Bundle B: > package org.example.second > interface AUsefulType {} > > Bundle C: > package org.example.third > public class ANotherUsefulUtility { > public void doReallyCoolFunkyStuff() {} > } > > Bundle A exports org.example.first and imports org.example.second and > org.example.third. > Including uses its export clauses should look like this: > > org.example.first; uses="org.example.second" > > It should not contain org.example.third. A fourth bundle D could > easily use org.example.first and > org.example.third and have org.example.third imported from a different > version to Bundle A because they > never attempt to share the types in the package org.example.third. The > usage is completely internal, the fact > that org.example.first is exported is irrelevant.
I think we agree. But your example rely on a bad use of uses constraints. Do you reckon my example would need to have a major version bump ? Btw, I haven't checked, but does BND put the third package in uses clauses in your example ? if so, maybe it should get fixed if possible. > Going back to the blueprint example I do not believe that the > blueprint API references any types from the > util package, so the usage is internal and therefore does not affect > the uses clause. As a result blueprint can > use 1.0.0 without affecting its clients. So blueprint-core actually export org.apache.aries.blueprint.container with a use constraint on org.apache.aries.util and org.apache.aries.util.tracker. So in the current state, the org.apache.aries.blueprint.container package version would have to be bumped to a major version, hence the whole blueprint-core bundle version. Though maybe those use constraints should not be here as you depicted in your example. > On 21 February 2011 12:53, Guillaume Nodet <[email protected]> wrote: >> Oops, hit send too early >> >> On Mon, Feb 21, 2011 at 13:46, Guillaume Nodet <[email protected]> wrote: >>> On Mon, Feb 21, 2011 at 13:42, Alasdair Nottingham <[email protected]> wrote: >>>> On 21 February 2011 12:19, Guillaume Nodet <[email protected]> wrote: >>>>> On Mon, Feb 21, 2011 at 12:28, Alasdair Nottingham <[email protected]> >>>>> wrote: >>>>>> So assume we released util as a 1.0 bundle, why would that prevent >>>>>> blueprint 0.4 >>>>>> using it? I don't think I've seen anything that says you have to bump >>>>>> your major >>>>>> version based on the dependency doing so. That seems like a crazy idea. >>>>>> You >>>>>> should only bump your major version if you have to. >>>>> >>>>> Ok, so let's think about that a bit more. I think the case is a bit >>>>> different if the package is exported or not. >>>>> If the package is exported, the dependent package will be imported and >>>>> end up in uses constraints, so if you change the import range to be >>>>> incompatible, you actually have a major incompatibility I think. If I >>>>> have a bundle that depend on both packages, my bundle would clearly >>>>> become unusable with the new version, which means it's a major change >>>>> on the package actually. >>>>> If the package isn't exported, the change would at least require other >>>>> updates in bundles, so while the packages would still be fully >>>>> compatible, the bundle version should be incremented from at least a >>>>> minor version imho. >>>>> Here, I'm not sure that any package depending on aries-util is >>>>> actually exported, but we'd have to check. >>>>> >>>> >>>> I do not think this is how uses should be interpreted. uses is designed to >>>> solve >>>> the problem whereby a package A returns, or receives types from package B >>>> and >>>> you want to ensure the bundle and its clients have a consistent view >>>> of A and B. It >>>> is not there to ensure that bundle A and bundle B share the same copy >>>> of a package >>>> A when package A is strictly part of the internals. As a result the >>>> scenario you describe >>>> would never happen. >>> >> >> That's what I said about non exported packages. But uses constraints >> are on exported packages and one of the goal of uses constraints is to >> ensure a consistent class-space. If you change it in an incompatible >> way, that is an incompatible change. Unless we differ on the notion >> of compatible. Let's take a clear example: >> >> Bundle bundle.a exports a package named package.a in version 1.0 >> Bundle bundle.b exports a package named package.b in version 1.0 which >> uses package.a with a range [1,2) >> Bundle bundle.c imports package.a with [1,2) and package.b with [1,2) >> >> Now, the use case here is the following modification: >> bundle.a exports package.a in version 2.0 >> bundle.b exports package.b in version 1.1 and imports bundle.a in >> version [2,3) >> >> Now I can use bundle.c anymore with the newer version of bundle.v as >> the resolver won't allow such an inconsistent class-space caused by >> the two incompaitble versions of bundle.a. >> WHich is to me a clear indication that package.b has changed in an >> incompatible way. >> >> Am I wrong somehwere ? >> >> >>> >>>> >>>>>> I would also say that until we have had a vote about exactly what we are >>>>>> doing >>>>>> regarding releasing and versioning this kind of activity is a little >>>>>> premature. >>>>> >>>>> Well, I'm raising things that we need to keep in mind when we vote for >>>>> the policy we'll use. We were supposed to use a release cycle at the >>>>> component level, so I'm actually trying to release blueprint without >>>>> having to release everything, that's all. If/when we move that at the >>>>> bundle level, things will be even more complicated. >>>>> >>>> >>>> I am not saying that raising the issue is premature, I am saying that >>>> creating a >>>> branch is premature. >>> >>> So are you suggesting I release aries-util 0.4 with such a major >>> incompatiblity (meaning I may break all other aries components) in >>> order to be able to release blueprint 0.4 ? >>> >>>> >>>>>> Alasdair >>>>>> >>>>>> On 21 February 2011 11:21, Guillaume Nodet <[email protected]> wrote: >>>>>>> Sorry for not being more clear, I was referring to the following change: >>>>>>> >>>>>>>> Removed: >>>>>>>> >>>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>>>>>> >>>>>>> One class has been deleted from a package, so that's a major >>>>>>> incompabible change which needs aries-util version to be bumped to 1.0 >>>>>>> according to semantic versioning rules. What I'm not sure is how it >>>>>>> affect other projects, for example blueprint trunk would need to >>>>>>> change the aries-util dependency from [0.3,1) to [1,2) and I'm not >>>>>>> sure how the blueprint version should reflect that change. >>>>>>> >>>>>>> I don't really want to include an update to a new major version of a >>>>>>> dependency in a minor release of blueprint, so I think we should bump >>>>>>> blueprint to 1.0, hence my point of creating a 0.4 branch for >>>>>>> blueprint. >>>>>>> >>>>>>> Hope it's a bit more clear now. >>>>>>> >>>>>>> On Mon, Feb 21, 2011 at 12:12, Alasdair Nottingham <[email protected]> >>>>>>> wrote: >>>>>>>> Can you clarify what in this commit you are objecting to? There were >>>>>>>> rather a large number of >>>>>>>> changes not all of which are included in your email. >>>>>>>> >>>>>>>> Why would you create a branch for blueprint 0.4? What is the point? >>>>>>>> >>>>>>>> Alasdair >>>>>>>> >>>>>>>> On 21 February 2011 10:55, Guillaume Nodet <[email protected]> wrote: >>>>>>>>> I come back to this commit as this is a *major* incompatibility >>>>>>>>> change. >>>>>>>>> The util package major version need be bumped up. I'm not quite sure >>>>>>>>> what kind of changes that impact on downstream bundles (blueprint, >>>>>>>>> jndi, jpa, etc...) but I think the cascading effect is that their >>>>>>>>> major version need to be bumped too. Can someone please have a look >>>>>>>>> at that and fix the problems ? >>>>>>>>> >>>>>>>>> I'll create a branch for blueprint 0.4.x which can work with other >>>>>>>>> components in 0.3 as that's what is implied the version range is >>>>>>>>> afaik. >>>>>>>>> >>>>>>>>> On Fri, Feb 4, 2011 at 19:22, Guillaume Nodet <[email protected]> >>>>>>>>> wrote: >>>>>>>>>> While I do not question the validity of such changes, it tends to >>>>>>>>>> confirm my impression that we have components that are quite tied >>>>>>>>>> together and that we'll never be able to release them independantly >>>>>>>>>> (apart from bug fix release which do not matter here). >>>>>>>>>> How easy would such things be if we had several trunks, one jira per >>>>>>>>>> component, each jira associated to a different version in jira... >>>>>>>>>> This also changes the constraints on the packages imported by a >>>>>>>>>> component, so you'd have to change some package versions. That's >>>>>>>>>> kinda bad as if a user want to update one bundle, he has to actually >>>>>>>>>> update a bunch of bundles. if we're going to use a different version >>>>>>>>>> for each component, we'd have to keep track of the compatibility >>>>>>>>>> somewhere so that this can appear in the release notes. >>>>>>>>>> >>>>>>>>>> i'll stop to lobby on the release cycle versioning, but I just want >>>>>>>>>> to >>>>>>>>>> make everyone knows where we're going. >>>>>>>>>> >>>>>>>>>> I wonder if we'll have to change to a more manual management of the >>>>>>>>>> imported packages in the pom, disabling * packages expansions by bnd >>>>>>>>>> and also disabling auto computation of version ranges to make sure >>>>>>>>>> we're aware of changes >>>>>>>>>> >>>>>>>>>> On Friday, February 4, 2011, <[email protected]> wrote: >>>>>>>>>>> Author: timothyjward >>>>>>>>>>> Date: Fri Feb 4 16:13:32 2011 >>>>>>>>>>> New Revision: 1067207 >>>>>>>>>>> >>>>>>>>>>> URL: http://svn.apache.org/viewvc?rev=1067207&view=rev >>>>>>>>>>> Log: >>>>>>>>>>> ARIES-567 - Add a common utility for safe unregistration >>>>>>>>>>> >>>>>>>>>>> Added: >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/util/ >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/util/ >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/tracker/SingleServiceTracker.java >>>>>>>>>>> - copied, changed from r1067146, >>>>>>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>>>>>>>>>> Removed: >>>>>>>>>>> >>>>>>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/pom.xml >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>>>>>> aries/trunk/jmx/jmx-blueprint-core/pom.xml >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jmx/jmx-blueprint-core/src/main/java/org/apache/aries/jmx/blueprint/impl/BlueprintState.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jndi/jndi-rmi/src/main/java/org/apache/aries/jndi/rmi/Activator.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/Activator.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/GlobalPersistenceManager.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/CountingEntityManagerFactory.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java >>>>>>>>>>> aries/trunk/quiesce/quiesce-manager/pom.xml >>>>>>>>>>> >>>>>>>>>>> aries/trunk/quiesce/quiesce-manager/src/main/java/org/apache/aries/quiesce/manager/impl/Activator.java >>>>>>>>>>> aries/trunk/transaction/pom.xml >>>>>>>>>>> aries/trunk/transaction/transaction-manager/pom.xml >>>>>>>>>>> >>>>>>>>>>> aries/trunk/transaction/transaction-manager/src/main/java/org/apache/aries/transaction/TransactionManagerService.java >>>>>>>>>>> aries/trunk/transaction/transaction-wrappers/pom.xml >>>>>>>>>>> >>>>>>>>>>> aries/trunk/transaction/transaction-wrappers/src/main/java/org/apache/aries/transaction/jdbc/Activator.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>>>>>> >>>>>>>>>>> aries/trunk/util/src/test/java/org/apache/aries/util/SingleServiceTrackerTest.java >>>>>>>>>>> >>>>>>>>>>> Modified: aries/trunk/blueprint/blueprint-annotation-impl/pom.xml >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-annotation-impl/pom.xml?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- aries/trunk/blueprint/blueprint-annotation-impl/pom.xml >>>>>>>>>>> (original) >>>>>>>>>>> +++ aries/trunk/blueprint/blueprint-annotation-impl/pom.xml Fri Feb >>>>>>>>>>> 4 16:13:32 2011 >>>>>>>>>>> @@ -57,6 +57,10 @@ >>>>>>>>>>> >>>>>>>>>>> <artifactId>org.apache.aries.blueprint.annotation.api</artifactId> >>>>>>>>>>> </dependency> >>>>>>>>>>> <dependency> >>>>>>>>>>> + <groupId>org.apache.aries</groupId> >>>>>>>>>>> + <artifactId>org.apache.aries.util</artifactId> >>>>>>>>>>> + </dependency> >>>>>>>>>>> + <dependency> >>>>>>>>>>> <groupId>org.osgi</groupId> >>>>>>>>>>> <artifactId>org.osgi.core</artifactId> >>>>>>>>>>> <scope>provided</scope> >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -19,11 +19,12 @@ package org.apache.aries.blueprint.annot >>>>>>>>>>> import java.util.Dictionary; >>>>>>>>>>> import java.util.Hashtable; >>>>>>>>>>> >>>>>>>>>>> +import >>>>>>>>>>> org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner; >>>>>>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>>>>>> import org.osgi.framework.BundleActivator; >>>>>>>>>>> import org.osgi.framework.BundleContext; >>>>>>>>>>> import org.osgi.framework.Constants; >>>>>>>>>>> import org.osgi.framework.ServiceRegistration; >>>>>>>>>>> -import >>>>>>>>>>> org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner; >>>>>>>>>>> >>>>>>>>>>> public class Activator implements BundleActivator { >>>>>>>>>>> >>>>>>>>>>> @@ -36,9 +37,7 @@ public class Activator implements Bundle >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> public void stop(BundleContext context) { >>>>>>>>>>> - if (sr != null) { >>>>>>>>>>> - sr.unregister(); >>>>>>>>>>> - } >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(sr); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -35,6 +35,7 @@ import org.apache.aries.blueprint.Servic >>>>>>>>>>> import org.apache.aries.blueprint.container.ServiceListener; >>>>>>>>>>> import org.apache.aries.blueprint.utils.JavaUtils; >>>>>>>>>>> import org.apache.aries.blueprint.utils.ReflectionUtils; >>>>>>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>>>>>> import org.osgi.framework.Bundle; >>>>>>>>>>> import org.osgi.framework.Constants; >>>>>>>>>>> import org.osgi.framework.ServiceReference; >>>>>>>>>>> @@ -100,9 +101,7 @@ public class CmManagedServiceFactory { >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> public void destroy() { >>>>>>>>>>> - if (registration != null) { >>>>>>>>>>> - registration.unregister(); >>>>>>>>>>> - } >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>>>>>> for (Map.Entry<ServiceRegistration, Object> entry : >>>>>>>>>>> services.entrySet()) { >>>>>>>>>>> destroy(entry.getValue(), entry.getKey(), >>>>>>>>>>> BUNDLE_STOPPING); >>>>>>>>>>> } >>>>>>>>>>> @@ -119,7 +118,7 @@ public class CmManagedServiceFactory { >>>>>>>>>>> } >>>>>>>>>>> } >>>>>>>>>>> destroyComponent(component, code); >>>>>>>>>>> - registration.unregister(); >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> public Map<ServiceRegistration, Object> getServiceMap() { >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -25,6 +25,7 @@ import java.util.HashMap; >>>>>>>>>>> import java.util.List; >>>>>>>>>>> import java.util.Properties; >>>>>>>>>>> >>>>>>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>>>>>> import org.osgi.framework.ServiceRegistration; >>>>>>>>>>> import org.osgi.service.cm.ConfigurationException; >>>>>>>>>>> import org.osgi.service.cm.ManagedService; >>>>>>>>>>> @@ -60,7 +61,7 @@ public class ManagedObjectManager { >>>>>>>>>>> reg.remove(cm); >>>>>>>>>>> if (reg.isEmpty()) { >>>>>>>>>>> map.remove(key); >>>>>>>>>>> - reg.getRegistration().unregister(); >>>>>>>>>>> + >>>>>>>>>>> AriesFrameworkUtil.safeUnregisterService(reg.getRegistration()); >>>>>>>>>>> } >>>>>>>>>>> } >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -62,6 +62,7 @@ import org.apache.aries.blueprint.reflec >>>>>>>>>>> import org.apache.aries.blueprint.utils.HeaderParser; >>>>>>>>>>> import org.apache.aries.blueprint.utils.JavaUtils; >>>>>>>>>>> import org.apache.aries.blueprint.utils.HeaderParser.PathElement; >>>>>>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>>>>>> import org.osgi.framework.Bundle; >>>>>>>>>>> import org.osgi.framework.BundleContext; >>>>>>>>>>> import org.osgi.framework.Constants; >>>>>>>>>>> @@ -812,9 +813,7 @@ public class BlueprintContainerImpl impl >>>>>>>>>>> if (timeoutFuture != null) { >>>>>>>>>>> timeoutFuture.cancel(false); >>>>>>>>>>> } >>>>>>>>>>> - if (registration != null) { >>>>>>>>>>> - registration.unregister(); >>>>>>>>>>> - } >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>>>>>> if (handlerSet != null) { >>>>>>>>>>> handlerSet.removeListener(this); >>>>>>>>>>> handlerSet.destroy(); >>>>>>>>>>> @@ -845,9 +844,7 @@ public class BlueprintContainerImpl impl >>>>>>>>>>> if (timeoutFuture != null) { >>>>>>>>>>> timeoutFuture.cancel(false); >>>>>>>>>>> } >>>>>>>>>>> - if (registration != null) { >>>>>>>>>>> - registration.unregister(); >>>>>>>>>>> - } >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>>>>>> if (handlerSet != null) { >>>>>>>>>>> handlerSet.removeListener(this); >>>>>>>>>>> handlerSet.destroy(); >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -39,9 +39,10 @@ import org.apache.aries.blueprint.namesp >>>>>>>>>>> import org.apache.aries.blueprint.utils.HeaderParser; >>>>>>>>>>> import org.apache.aries.blueprint.utils.HeaderParser.PathElement; >>>>>>>>>>> import org.apache.aries.proxy.ProxyManager; >>>>>>>>>>> -import org.apache.aries.util.SingleServiceTracker; >>>>>>>>>>> -import >>>>>>>>>>> org.apache.aries.util.SingleServiceTracker.SingleServiceListener; >>>>>>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>>>>>> import org.apache.aries.util.tracker.RecursiveBundleTracker; >>>>>>>>>>> +import org.apache.aries.util.tracker.SingleServiceTracker; >>>>>>>>>>> +import >>>>>>>>>>> org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener; >>>>>>>>>>> import org.osgi.framework.Bundle; >>>>>>>>>>> import org.osgi.framework.BundleActivator; >>>>>>>>>>> import org.osgi.framework.BundleContext; >>>>>>>>>>> @@ -154,10 +155,9 @@ public class BlueprintExtender implement >>>>>>>>>>> bt.close(); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> - parserServiceReg.unregister(); >>>>>>>>>>> - >>>>>>>>>>> - if (quiesceParticipantReg != null) >>>>>>>>>>> - quiesceParticipantReg.unregister(); >>>>>>>>>>> + AriesFrameworkUtil.safeUnregisterService(parserServiceReg); >>>>>>>>>>> + >>>>>>>>>>> + >>>>>>>>>>> AriesFrameworkUtil.safeUnregisterService(quiesceParticipantReg); >>>>>>>>>>> >>>>>>>>>>> // Orderly shutdown of containers >>>>>>>>>>> while (!containers.isEmpty()) { >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>>>>>> URL: >>>>>>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>>>>>> ============================================================================== >>>>>>>>>>> --- >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>>>>>> @@ -44,6 +44,7 @@ import org.apache.aries.blueprint.proxy. >>>>>>>>>>> import org. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Cheers, >>>>>>>>>> Guillaume Nodet >>>>>>>>>> ------------------------ >>>>>>>>>> Blog: http://gnodet.blogspot.com/ >>>>>>>>>> ------------------------ >>>>>>>>>> Open Source SOA >>>>>>>>>> http://fusesource.com >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Cheers, >>>>>>>>> Guillaume Nodet >>>>>>>>> ------------------------ >>>>>>>>> Blog: http://gnodet.blogspot.com/ >>>>>>>>> ------------------------ >>>>>>>>> Open Source SOA >>>>>>>>> http://fusesource.com >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Alasdair Nottingham >>>>>>>> [email protected] >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Cheers, >>>>>>> Guillaume Nodet >>>>>>> ------------------------ >>>>>>> Blog: http://gnodet.blogspot.com/ >>>>>>> ------------------------ >>>>>>> Open Source SOA >>>>>>> http://fusesource.com >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Alasdair Nottingham >>>>>> [email protected] >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, >>>>> Guillaume Nodet >>>>> ------------------------ >>>>> Blog: http://gnodet.blogspot.com/ >>>>> ------------------------ >>>>> Open Source SOA >>>>> http://fusesource.com >>>>> >>>> >>>> >>>> >>>> -- >>>> Alasdair Nottingham >>>> [email protected] >>>> >>> >>> >>> >>> -- >>> Cheers, >>> Guillaume Nodet >>> ------------------------ >>> Blog: http://gnodet.blogspot.com/ >>> ------------------------ >>> Open Source SOA >>> http://fusesource.com >>> >> >> >> >> -- >> Cheers, >> Guillaume Nodet >> ------------------------ >> Blog: http://gnodet.blogspot.com/ >> ------------------------ >> Open Source SOA >> http://fusesource.com >> > > > > -- > Alasdair Nottingham > [email protected] > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
