1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 package com.sun.star.comp.beans; 25 26 import com.sun.star.uno.UnoRuntime; 27 28 //========================================================================== 29 /** Wrapper base class for UNO services which emulates the upcoming 30 mode of automatic runtime Java classes to get rid of the need for 31 queryInterface. 32 33 Because its not worth the efford to create a runtime generated wrapper 34 for this purpose, as it might be for OOo 2.0, you still have to use 35 UnoRuntime.queryInterface() for interfaces which are optional or come 36 from a subclass. But for non optional interfaces you can already 37 directly call their methods. 38 39 This wrapper will only work for UNO objects via a bridge, not for 40 direct Java objects. 41 42 @since OOo 2.0.0 43 */ 44 class Wrapper 45 implements 46 com.sun.star.lib.uno.Proxy, 47 // see the comment in com.sun.star.lib.uno.bridges.java_remote 48 // .java_remote_bridge.mapInterfaceTo for the consequences of this 49 // hack 50 com.sun.star.uno.IQueryInterface, 51 com.sun.star.lang.XComponent 52 { 53 private com.sun.star.uno.IQueryInterface xQueryInterface; 54 private com.sun.star.lang.XComponent xComponent; 55 Wrapper( com.sun.star.uno.XInterface xProxy )56 public Wrapper( com.sun.star.uno.XInterface xProxy ) 57 { 58 xQueryInterface = (com.sun.star.uno.IQueryInterface) xProxy; 59 xComponent = (com.sun.star.lang.XComponent) 60 UnoRuntime.queryInterface( 61 com.sun.star.lang.XComponent.class, xProxy ); 62 } 63 64 //============================================================== 65 // com.sun.star.uno.IQueryInterface 66 //-------------------------------------------------------------- 67 getOid()68 public String getOid() 69 { 70 return xQueryInterface.getOid(); 71 } 72 isSame( Object aObject )73 public boolean isSame( Object aObject ) 74 { 75 return xQueryInterface.isSame( aObject ); 76 } 77 queryInterface( com.sun.star.uno.Type aType )78 public Object queryInterface( com.sun.star.uno.Type aType ) 79 { 80 //System.err.println( "Wrapper::queryInterface(" + aType + ")" ); 81 return xQueryInterface.queryInterface( aType ); 82 } 83 84 //============================================================== 85 // com.sun.star.lang.XComponent 86 //-------------------------------------------------------------- 87 dispose( )88 public void dispose( ) 89 { 90 xComponent.dispose(); 91 } 92 addEventListener( com.sun.star.lang.XEventListener xListener )93 public void addEventListener( /*IN*/ com.sun.star.lang.XEventListener xListener ) 94 { 95 xComponent.addEventListener( xListener ); 96 } 97 removeEventListener( com.sun.star.lang.XEventListener xListener )98 public void removeEventListener( /*IN*/ com.sun.star.lang.XEventListener xListener ) 99 { 100 xComponent.removeEventListener( xListener ); 101 } 102 }; 103 104 105