Re: [Fwd: info/DEV300 CWS sb113 : Java UnoRuntime.queryInterface simplification]

Stephan Bergmann <[email protected]> Fri, 28 Aug 2009 08:07:36 +0200
Newsgroups gmane.comp.openoffice.announce.interface
Message-ID <[email protected]>
See inline for fix:

On 08/19/09 16:53, Stephan Bergmann wrote:
> As automatic mailing from EIS to interface-announce appears to be broken:
> 
> -------- Original Message --------
> Subject: info/DEV300 CWS sb113 : Java UnoRuntime.queryInterface 
> simplification
> Date: Tue, 18 Aug 2009 10:15:29 +0200 (CEST)
> From: [email protected]
> To: [email protected], [email protected]
> 
> 
> 
>           Type: info
>          Title: Java UnoRuntime.queryInterface simplification
>      Posted by: [email protected]
>       Affected: [email protected],
>          TaskId: i102469
> <http://www.openoffice.org/issues/show_bug.cgi?id=102469>
> Effective from: DEV300 CWS sb113
>            CWS:
> <http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=DEV300/sb113>
>     CWS status: new
> 
> 
> *Summary*
> --------
> com.sun.star.uno.UnoRuntime:
> - Object queryInterface(Class, Object)
> + <T extends XInterface> T queryInterface(Class<T>, Object)
> 
> *Description*
> -------------
> With the URE/OOo Java baseline lifted to Java 5,
> UnoRuntime.queryInterface can now make use of generics, and in a call like
> 
>   XFoo x = UnoRuntime.queryInterface(XFoo.class, o);
> 
> it is no longer necessary to explicitly cast the return value of
> queryInterface to (XFoo).
> 
> Strictly speaking, due to the "extends XInterface," this change is
> compile-time incompatible (but strictly run-time compatible).  If this
> turns out to be a problem in practice (which I doubt), we can easily
> make the change strictly compile-time compatible (by simply dropping
> the "extends XInterface" qualification).

Nonsense.  The "extends XInterface" is (of course) a run-time 
incompatible change, as it changes the signature of that queryInterface 
method from (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object; to 
(Ljava/lang/Class;Ljava/lang/Object;)Lcom/sun/star/uno/XInterface;.  So 
I had to drop the qualification again.

-Stephan

> I adapted all the relevant calls to UnoRuntime.queryInterface in the
> URE-related OOo code modules (in bridges, javaunohelper, jurt,
> ridljar, testtools, and ure), and added a note about the changed Java
> method to the Developer's Guide at
> <http://wiki.services.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Java/Handling_Interfaces&oldid=137069>. 
> 
>  Other people might want to eventually adapt further OOo code, the SDK
> examples, and/or the complete Developer's Guide.