1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 package helper; 29 30 import share.*; 31 import lib.TestParameters; 32 import util.PropertyName; 33 import util.utils; 34 35 /** 36 * This class is printing to a <CODE>LogWriter</CODE>. This could be usefull if a UNO-API 37 * function runns longer the the time out. To avoid the assumption of death applikation 38 * a simple string is logged for 100 times of time out.</br> 39 * Example:</br> 40 * logger = new LoggingThread((LogWriter)log, tParam); 41 * logger.start(); 42 * oObj.longRunningFunction(); 43 * logger.finish(); 44 * 45 */ 46 public class LoggingThread extends Thread { 47 48 TestParameters param; 49 LogWriter log = null; 50 boolean finished = false; 51 boolean debug = false; 52 53 /** 54 * 55 * @param log 56 * @param tParam 57 */ 58 public LoggingThread(LogWriter log, TestParameters tParam) { 59 this.log = log; 60 this.param = tParam; 61 this.debug = tParam.getBool(PropertyName.DEBUG_IS_ACTIVE); 62 } 63 64 public void run() { 65 final int timeOut = param.getInt(PropertyName.TIME_OUT) / 2; 66 int count = 0; 67 finished = false; 68 if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " start"); 69 while (!finished && count < 200) { 70 try { 71 if (debug) log.println("TimeOutLogger: "+utils.getDateTime() + count); 72 synchronized (this) { 73 wait(timeOut); 74 } 75 count++; 76 } catch (InterruptedException ex) { 77 } 78 } 79 if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " finished"); 80 } 81 82 /** 83 * finished the LoggingThread 84 */ 85 public void finish() { 86 try { 87 finished = true; 88 synchronized (this) { 89 notify(); 90 } 91 if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " try to finish "); 92 sleep(1000); 93 } catch (InterruptedException ex) { 94 } 95 } 96 } 97