That's cool, Richard. I'm at the EclipseCon conference and will definitely start on this right away after discussing a few things with Felix and whoever else is interested in contributing. Regards,
Rick -----Original Message----- From: Richard S. Hall [mailto:[EMAIL PROTECTED] Sent: Mon 3/5/2007 7:33 AM To: felix-dev@incubator.apache.org Subject: Re: Leveraging OBR's generic dependency mechanism Rick Litton wrote: > Hi all, > > Just to add to my response below, I was actually thinking along the > lines of implementing JSR 124 (J2EE Client Provisioning) based on > OBR. I know that provisioning is becoming a hot topic particularly > within the Eclipse community where there are discussions on enhancing > the Upgrade Manager feature. I'm not sure if there is interest among > the Felix community though... I am definitely interested in improving this area for Felix...adding this type of support in another layer on top of OBR sounds like a good idea to me. -> richard > > Thanks! > > Rick Litton > > ----- Original Message ----- From: "Rick Litton" <[EMAIL PROTECTED]> > To: <felix-dev@incubator.apache.org> > Sent: Saturday, March 03, 2007 3:04 AM > Subject: Re: Leveraging OBR's generic dependency mechanism > > >> Hi Felix, >> >> I certainly would like to contribute (not take over) to this feature >> if that's ok. Perhaps we can define some more use cases so that >> Assembly could accommodate other requirements. What do you think? >> >> Rick >> >> ----- Original Message ----- From: "Felix Meschberger" >> <[EMAIL PROTECTED]> >> To: <felix-dev@incubator.apache.org> >> Sent: Saturday, March 03, 2007 1:39 AM >> Subject: Re: Leveraging OBR's generic dependency mechanism >> >> >>> Hi Rick, >>> >>> Ok, thanks for the information. >>> >>> BTW: As noted earlier I attached the Assembly support stuff to JIRA >>> http://issues.apache.org/jira/browse/FELIX-217. Is there any >>> interest to >>> take this over as a contribution to the Felix project ? Otherwise, I >>> would >>> close the issue again. Thanks for any feedback. >>> >>> Regards >>> Felix >>> >>> On 3/2/07, Rick Litton <[EMAIL PROTECTED]> wrote: >>>> >>>> Felix Meschberger wrote: >>>> >>>> > Just being curious, what exactly did you patch in InstallerImpl (and >>>> > ResolverImpl) ? >>>> >>>> Hi Felix, >>>> >>>> Actually, I created a class called LocalResolverImpl which extends >>>> from >>>> ResolverImpl. It was meant to deal with the categorization of bundles >>>> into "updatable bundles" and "installable bundles" and to search for a >>>> "capable resource" by matching capabilities and requirements. This >>>> created the potential for intercepting the update process at a certain >>>> point sometime later. The InstallerImpl was actually built from the >>>> ground up although it pretty much also does the install operation. >>>> Similar to your class, it delegates the actual work of deploying the >>>> updated or new bundle to the resolver and manages the startlevel of >>>> these bundles. >>>> >>>> Regards. >>>> >>>> Rick Litton >>>> >>>> >>>> -----Original Message----- >>>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of >>>> Felix >>>> Meschberger >>>> Sent: Friday, March 02, 2007 12:52 AM >>>> To: felix-dev@incubator.apache.org >>>> Subject: Re: Leveraging OBR's generic dependency mechanism >>>> >>>> Hi Rick, >>>> >>>> Thanks for the update. >>>> >>>> Just being curious, what exactly did you patch in InstallerImpl (and >>>> ResolverImpl) ? >>>> >>>> Regards >>>> Felix >>>> >>>> On 3/2/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >>>> > >>>> > FW: Leveraging OBR's generic dependency mechanismHi Felix, >>>> > >>>> > Felix Meschberger wrote on 2/22/2007: >>>> > >>>> > >Hi, >>>> > >>>> > >> Apparently, there is only a single queueHandler >>>> > >> thread which handles the events. I must be missing something. >>>> > >>>> > > The thread is started at the end of the AssemblyManager.start >>>> method, >>>> > > which >>>> > > first gathers existing bundles to jump start the Assembly Manager >>>> with >>>> > > simulated events for them. The AssemblyManager.start method itself >>>> is >>>> > > called >>>> > > from AssemblyActivator (the BundleActivator) start method... >>>> > >>>> > >> My question is how does the installer handle direct and >>>> > >> indirect dependencies if those dependencies are also required >>>> to be >>>> > >> updated? >>>> > >>>> > > Ok. This depends. If the dependencies are included with the >>>> assembly, >>>> > > there >>>> > > lifecycle is controlled through the Assembly Bundle. If the >>>> dependencies >>>> > > are >>>> > > not included in the assembly, and an OBR is used to install the >>>> bundles, >>>> > > the >>>> > > dependencies will be resolved by the OBR and just started by the >>>> > > AssemblyManager (these are the requiredResources of the Resolver). >>>> They >>>> > > are >>>> > > not further managed by the AssemblyManager, they are just there. >>>> > >>>> > > If the dependencies not managed by the AssemblyManage happen to >>>> require >>>> > an >>>> > > update due to updated requirements of managed bundles, these >>>> updates >>>> may >>>> > > take place as a "side effect" of OBR bundle resolution. >>>> > >>>> > > So for complete management, it might be a good idea to include all >>>> > > dependencies as far as possible in the Assembly. Again: This is a >>>> > > management >>>> > > task based on a management decision outside of the framework >>>> and not >>>> a >>>> > > technically required task ! >>>> > >>>> > > Regards >>>> > > Felix >>>> > >>>> > I should have responded much earlier, but instead I would just >>>> like to >>>> > provide you with a quick update. Apparently, our automated update >>>> process >>>> > using OBR seems to be working. Thanks to your examples and by >>>> following >>>> > Richard's original suggestion consisting of 4 steps, I was able to >>>> build >>>> > a >>>> > customized version of InstallerImpl and ResolverImpl. The whole >>>> process >>>> > is >>>> > triggered when a local repository is detected. The approach I have >>>> taken >>>> > was to identify updatable bundles (those that have an older version) >>>> from >>>> > the installable bundles (those that are entirely new) up front. By >>>> > matching >>>> > capabilities and requirements, I was then able to build a list of >>>> > resources >>>> > that could be installed, lining them up in a stack, to ensure >>>> that the >>>> > required dependencies pulled in were installed first. So far the >>>> update >>>> > seems to work provided that there were no cyclical dependencies >>>> which >>>> in >>>> > our >>>> > case, we took the effort to avoid. Of course, this doesn't sound so >>>> ideal >>>> > but it's currently the situation which I know will improve over time >>>> as >>>> > the >>>> > benefits of a service architecture are fully realized. >>>> > >>>> > One issue I encountered was with the LocalRepositoryImpl. I may >>>> have >>>> it >>>> > wrong but apparently its m_local variable points to the .felix cache >>>> > instead >>>> > of the actual "physical" repository. To resolve this issue, I >>>> had to >>>> > create >>>> > a "map" of the repository so that resources can be discovered and >>>> > eventually >>>> > the actual bundles are installed. I also found that the getURL >>>> method >>>> of >>>> > the resource returns null but that was overcome with this >>>> workaround. >>>> > Although some more work remains to be completed, overall the >>>> direction >>>> > looks >>>> > okay. >>>> > >>>> > And to those who will be at EclipseCon next week, I hope to meet up >>>> with >>>> > you >>>> > at the conference! >>>> > >>>> > Best regards. >>>> > Rick >>>> > >>>> > >>>> > >>>> >>> >> >> >> > >