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

Reply via email to