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