[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] BundleContext and getName

my summary:

- leave
        public Bundle BundleContext.getBundle (String uniqueId)
note the arg name change and implied semantics.

- defer the addition of a getBundles(String, ...) until we better understand what is happening in the multiple version area

- do not remove other methods.  In general the existing OSGi API should be left as unchanged as possible.  Bundle.getName() has weak semantics but callers do have certain expectations.  Removing/changing the method would break them.


Pascal Rapicault/Ottawa/IBM@IBMCA
Sent by: equinox-dev-admin@xxxxxxxxxxx

10/06/2003 12:46 PM

        To:        equinox-dev@xxxxxxxxxxx
        Subject:        Re: [equinox-dev] BundleContext and getName

To summarize:
we get rid of
       public Bundle BundleContext.getBundle(String name);

and replace it by
       public Bundle[] BundleContext.getBundles(String name, String version);

On Bundle, I propose that we remove
       public Bundle getName();

and replace it with
       public Bundle getUniqueId();

unless we simply get rid of any extra methods on Bundle and access the value using getHeaders().


Thomas Watson <tjwatson@xxxxxxxxxx>
Sent by: equinox-dev-admin@xxxxxxxxxxx

10/06/2003 09:17 AM

       To:        equinox-dev@xxxxxxxxxxx


       Subject:        Re: [equinox-dev] BundleContext and getName

I think you are refering to the BundleContext.getBundle(String name)
method.  The BundleContext interface has a new method
BundleContext.getBundle(String name) which was intended to take a
Bundle-Name and look in the framework to find a single bundle with a
matching name.  This method definition has a flaw in the fact that it
assumes that Bundle-Names are unique in the framework.  I agree that the
new BundleContext.getBundle(String name) method should be changed.  I have
the following two proposals.

interface BundleContext {

     * Returns all Bundles with the specified Bundle-UniqueId or null
     * if none exist.
    public Bundle[] getBundle(String uniqueId);
     * Returns the Bundle with the specified Bundle-UniqueId and
     * or null if none exist.
    public Bundle getBundle(String uniqueId, String version);


Since the framework can have multiple versions of a bundle with the same
uniqueId installed then the BundleContext.getBundle(String uniqueId) should
return a list of all the bundles with the specified uniqueId.  If you want
a specific version of a bundle then use the BundleContext.getBundle(String
uniqueId, String version) method.  We can get by with only the
BundleContext.getBundle(String unqueId) method.  This just means the
callers would have to look for specific versions if they needed to in the
list returned.

Any comments?

Thomas Watson
Pervasive Development
Phone: 512-838-4533 Tie: 678-4533

                    Pascal Rapicault                                                                                                        
                    <Pascal_Rapicault@        To:       equinox-dev@xxxxxxxxxxx                                                              
                    ca.ibm.com>               cc:                                                                                            
                    Sent by:                  Subject:  [equinox-dev] BundleContext and getName                                              
                    10/06/2003 07:35                                                                                                        


Currently BundleContext.getName(String) uses the Bundle-name entry to do
the lookup.
Now that we have Bundle-uniqueId, it seems to me that it would be more
appropriate to do the lookup on this value.
Any comments?


equinox-dev mailing list