I entered it into the OSGi member bugzilla system as bug 941. -- BJ Hargrave Senior Technical Staff Member, IBM OSGi Fellow and CTO of the OSGi Alliance [EMAIL PROTECTED]
office: +1 386 848 1781 mobile: +1 386 848 3788 From: "Fredrik Alströmer" <[EMAIL PROTECTED]> To: "OSGi Developer Mail List" <[email protected]> Date: 2008/12/04 06:35 Subject: Re: [osgi-dev] DS / method visibility...? Sent by: [EMAIL PROTECTED] Hi BJ, great, thanks! Did you enter it into bugzilla somewhere where I might find it by any chance? Thanks, Fredrik. On Thu, Dec 4, 2008 at 02:51, Alin Dreghiciu <[EMAIL PROTECTED]> wrote: > +1. Please do so BJ. > > On Wed, Dec 3, 2008 at 10:11 PM, BJ Hargrave <[EMAIL PROTECTED]> wrote: >> Excellent point. So the desired behavior is that DS can call any method the >> declared implementation class could call itself. >> >> So then, DS can call activate/deactivate/bind/unbind methods of any >> visibility (private, default, protected, public) if the method is defined by >> the implementation class declared in the component description. But, if the >> method is defined by a super class of the declared implementation class, DS >> will only call it if the method has public or protected visibility or if it >> has default visibility and the super class is in the same package as the >> declared implementation class and loaded by the same class loader as the >> declared implementation class. >> >> I will propose this change to the DS spec. >> -- >> >> BJ Hargrave >> Senior Technical Staff Member, IBM >> OSGi Fellow and CTO of the OSGi Alliance >> [EMAIL PROTECTED] >> office: +1 386 848 1781 >> mobile: +1 386 848 3788 >> >> >> From: >> "Fredrik Alströmer" <[EMAIL PROTECTED]> >> To: >> "OSGi Developer Mail List" <[email protected]> >> Date: 2008/12/03 10:35 >> Subject: Re: [osgi-dev] DS / method visibility...? >> Sent by: [EMAIL PROTECTED] >> ________________________________ >> >> >> Hi BJ, >> >> thanks for you're answer, although default-visibility methods are not >> private, they're still not callable from the class hierarchy if the >> class is not in the same package. However, the activate/bind methods >> are perfect candidates to be used by unit-tests, and these are often >> depending on the package-protected visibility. Wouldn't be easier in >> that case to define it as 'whatever the implementation class would be >> able to call', i.e. in the class itself, even private methods may be >> called, in parent classes protected and public are always callable and >> default is callable if it's the same package as the implementation >> class? >> >> I assume since SCR is using reflection and traversing the hierarchy >> anyway, such a check should be fairly cheap. It's also making the spec >> more consistent with the Java environment, as you're suggesting is the >> (quite reasonable i might add) rationale behind it, without adding >> complexity. >> >> Greetings, >> Fredrik. >> >> On Wed, Dec 3, 2008 at 15:50, BJ Hargrave <[EMAIL PROTECTED]> wrote: >>> The reasoning is inheritance. Since a component implementation class can >>> extend some other class, we wanted DS to only call methods which would be >>> callable by the implementation class declared in the component >>> description. >>> If we allowed DS to call private methods, then this breaks the visibility >>> of >>> the class hierarchy. It would allow someone to extend some class and have >>> DS >>> call its private methods. >>> -- >>> >>> BJ Hargrave >>> Senior Technical Staff Member, IBM >>> OSGi Fellow and CTO of the OSGi Alliance >>> [EMAIL PROTECTED] >>> office: +1 386 848 1781 >>> mobile: +1 386 848 3788 >>> >>> >>> From: "Fredrik Alströmer" <[EMAIL PROTECTED]> >>> To: "OSGi Developer Mail List" <[email protected]> >>> Date: 2008/12/03 04:33 >>> Subject: [osgi-dev] DS / method visibility...? >>> Sent by: [EMAIL PROTECTED] >>> ________________________________ >>> >>> >>> Hi, >>> >>> perhaps this question has been asked many times before, but here goes >>> anyway: >>> >>> What's the rationale behind the fact that all methods that should be >>> called by DS should be public or protected? Why is it not 'not >>> private' (i.e. including default)? >>> >>> Thanks, >>> Fredrik. >>> _______________________________________________ >>> OSGi Developer Mail List >>> [email protected] >>> https://mail.osgi.org/mailman/listinfo/osgi-dev >>> >>> >>> _______________________________________________ >>> OSGi Developer Mail List >>> [email protected] >>> https://mail.osgi.org/mailman/listinfo/osgi-dev >>> >> >> _______________________________________________ >> OSGi Developer Mail List >> [email protected] >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >> _______________________________________________ >> OSGi Developer Mail List >> [email protected] >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> > > > > -- > Alin Dreghiciu > http://www.ops4j.org - New Energy for OSS Communities - Open > Participation Software. > http://www.qi4j.org - New Energy for Java - Domain Driven > Development. > http://malaysia.jayway.net - New Energy for Projects - Great People > working on Great Projects at Great Places > > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev > _______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
