1*a5b190bfSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*a5b190bfSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*a5b190bfSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*a5b190bfSAndrew Rist * distributed with this work for additional information 6*a5b190bfSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*a5b190bfSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*a5b190bfSAndrew Rist * "License"); you may not use this file except in compliance 9*a5b190bfSAndrew Rist * with the License. You may obtain a copy of the License at 10*a5b190bfSAndrew Rist * 11*a5b190bfSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*a5b190bfSAndrew Rist * 13*a5b190bfSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*a5b190bfSAndrew Rist * software distributed under the License is distributed on an 15*a5b190bfSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*a5b190bfSAndrew Rist * KIND, either express or implied. See the License for the 17*a5b190bfSAndrew Rist * specific language governing permissions and limitations 18*a5b190bfSAndrew Rist * under the License. 19*a5b190bfSAndrew Rist * 20*a5b190bfSAndrew Rist *************************************************************/ 21*a5b190bfSAndrew Rist 22*a5b190bfSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package com.sun.star.lib.uno.helper; 25cdf0e10cSrcweir import com.sun.star.uno.XWeak; 26cdf0e10cSrcweir import com.sun.star.lang.XTypeProvider; 27cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 28cdf0e10cSrcweir import com.sun.star.lang.XEventListener; 29cdf0e10cSrcweir 30cdf0e10cSrcweir public class ComponentBase_Test 31cdf0e10cSrcweir { 32cdf0e10cSrcweir AWeakBase obj1, obj2, obj3; 33cdf0e10cSrcweir Object proxyObj1Weak1; 34cdf0e10cSrcweir Object proxyObj3Weak1; 35cdf0e10cSrcweir Object proxyObj3Weak2; 36cdf0e10cSrcweir Object proxyObj3TypeProv; 37cdf0e10cSrcweir Object proxyObj2TypeProv; 38cdf0e10cSrcweir 39cdf0e10cSrcweir /** Creates a new instance of ComponentBase_Test */ ComponentBase_Test()40cdf0e10cSrcweir public ComponentBase_Test() 41cdf0e10cSrcweir { 42cdf0e10cSrcweir obj1= new AWeakBase(); 43cdf0e10cSrcweir obj2= new AWeakBase(); 44cdf0e10cSrcweir obj3= new AWeakBase(); 45cdf0e10cSrcweir proxyObj1Weak1= ProxyProvider.createProxy(obj1, XWeak.class); 46cdf0e10cSrcweir proxyObj3Weak1= ProxyProvider.createProxy(obj3, XWeak.class); 47cdf0e10cSrcweir proxyObj3Weak2= ProxyProvider.createProxy(obj3, XWeak.class); 48cdf0e10cSrcweir proxyObj2TypeProv= ProxyProvider.createProxy(obj2, XTypeProvider.class); 49cdf0e10cSrcweir proxyObj3TypeProv= ProxyProvider.createProxy(obj3, XTypeProvider.class); 50cdf0e10cSrcweir } 51cdf0e10cSrcweir dispose()52cdf0e10cSrcweir public boolean dispose() 53cdf0e10cSrcweir { 54cdf0e10cSrcweir System.out.println("Testing ComponentBase"); 55cdf0e10cSrcweir ComponentBase comp= new ComponentBase(); 56cdf0e10cSrcweir boolean r[]= new boolean[50]; 57cdf0e10cSrcweir int i= 0; 58cdf0e10cSrcweir // addEventListener 59cdf0e10cSrcweir 60cdf0e10cSrcweir comp.addEventListener(obj1); 61cdf0e10cSrcweir comp.addEventListener(obj2); 62cdf0e10cSrcweir comp.addEventListener(obj3); 63cdf0e10cSrcweir comp.addEventListener(UnoRuntime.queryInterface(XEventListener.class, proxyObj1Weak1)); 64cdf0e10cSrcweir comp.addEventListener(UnoRuntime.queryInterface(XEventListener.class, proxyObj3Weak2)); 65cdf0e10cSrcweir comp.addEventListener(UnoRuntime.queryInterface(XEventListener.class, proxyObj3TypeProv)); 66cdf0e10cSrcweir obj1.nDisposingCalled = 0; 67cdf0e10cSrcweir obj2.nDisposingCalled = 0; 68cdf0e10cSrcweir obj3.nDisposingCalled = 0; 69cdf0e10cSrcweir 70cdf0e10cSrcweir comp.dispose(); 71cdf0e10cSrcweir r[i++]= obj1.nDisposingCalled == 1; 72cdf0e10cSrcweir r[i++]= obj2.nDisposingCalled == 1; 73cdf0e10cSrcweir r[i++]= obj3.nDisposingCalled == 1; 74cdf0e10cSrcweir // adding a listener after dispose, causes a immediate call to the listerner 75cdf0e10cSrcweir obj1.nDisposingCalled= 0; 76cdf0e10cSrcweir comp.addEventListener(obj1); 77cdf0e10cSrcweir r[i++]= obj1.nDisposingCalled == 1; 78cdf0e10cSrcweir //calling dispose again must not notify the listeners again 79cdf0e10cSrcweir obj1.nDisposingCalled= 0; 80cdf0e10cSrcweir obj2.nDisposingCalled= 0; 81cdf0e10cSrcweir obj3.nDisposingCalled= 0; 82cdf0e10cSrcweir comp.dispose(); // allready disposed; 83cdf0e10cSrcweir r[i++]= obj1.nDisposingCalled == 0; 84cdf0e10cSrcweir 85cdf0e10cSrcweir boolean bOk= true; 86cdf0e10cSrcweir for (int c= 0; c < i; c++) 87cdf0e10cSrcweir bOk= bOk && r[c]; 88cdf0e10cSrcweir if (bOk == false) 89cdf0e10cSrcweir System.out.println("Failed"); 90cdf0e10cSrcweir else 91cdf0e10cSrcweir System.out.println("Ok"); 92cdf0e10cSrcweir return bOk; 93cdf0e10cSrcweir } 94cdf0e10cSrcweir test_finalize()95cdf0e10cSrcweir public boolean test_finalize() 96cdf0e10cSrcweir { 97cdf0e10cSrcweir System.out.println("Testing ComponentBase"); 98cdf0e10cSrcweir ComponentBase comp= new ComponentBase(); 99cdf0e10cSrcweir boolean r[]= new boolean[50]; 100cdf0e10cSrcweir int i= 0; 101cdf0e10cSrcweir obj1.nDisposingCalled = 0; 102cdf0e10cSrcweir comp.addEventListener(obj1); 103cdf0e10cSrcweir 104cdf0e10cSrcweir comp= null; 105cdf0e10cSrcweir System.out.println("Waiting 10s"); 106cdf0e10cSrcweir for(int c= 0; c < 100; c++) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir try 109cdf0e10cSrcweir { 110cdf0e10cSrcweir Thread.currentThread().sleep(100); 111cdf0e10cSrcweir System.gc(); 112cdf0e10cSrcweir System.runFinalization(); 113cdf0e10cSrcweir }catch (InterruptedException ie) 114cdf0e10cSrcweir { 115cdf0e10cSrcweir } 116cdf0e10cSrcweir } 117cdf0e10cSrcweir r[i++]= obj1.nDisposingCalled == 1; 118cdf0e10cSrcweir 119cdf0e10cSrcweir boolean bOk= true; 120cdf0e10cSrcweir for (int c= 0; c < i; c++) 121cdf0e10cSrcweir bOk= bOk && r[c]; 122cdf0e10cSrcweir if (bOk == false) 123cdf0e10cSrcweir System.out.println("Failed"); 124cdf0e10cSrcweir else 125cdf0e10cSrcweir System.out.println("Ok"); 126cdf0e10cSrcweir return bOk; 127cdf0e10cSrcweir } 128cdf0e10cSrcweir main(String[] args)129cdf0e10cSrcweir public static void main(String[] args) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir ComponentBase_Test test= new ComponentBase_Test(); 132cdf0e10cSrcweir 133cdf0e10cSrcweir boolean r[]= new boolean[50]; 134cdf0e10cSrcweir int i= 0; 135cdf0e10cSrcweir r[i++]= test.dispose(); 136cdf0e10cSrcweir r[i++]= test.test_finalize(); 137cdf0e10cSrcweir 138cdf0e10cSrcweir boolean bOk= true; 139cdf0e10cSrcweir for (int c= 0; c < i; c++) 140cdf0e10cSrcweir bOk= bOk && r[c]; 141cdf0e10cSrcweir if (bOk == false) 142cdf0e10cSrcweir System.out.println("Errors occured!"); 143cdf0e10cSrcweir else 144cdf0e10cSrcweir System.out.println("No errors."); 145cdf0e10cSrcweir 146cdf0e10cSrcweir } 147cdf0e10cSrcweir 148cdf0e10cSrcweir } 149cdf0e10cSrcweir 150