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 > >>> 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
