I think blueprint-cm should be a fragment on blueprint-core and we should stop exporting those internals.
I think that would fix this problem. I would also need to look further to see why we get this issue. Alasdair On 21 February 2011 13:30, Guillaume Nodet <[email protected]> wrote: > 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 > -- Alasdair Nottingham [email protected]
