1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package ifc.container; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import java.io.PrintWriter; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 29*b1cdbd2cSJim Jagielski import lib.Status; 30*b1cdbd2cSJim Jagielski import lib.StatusException; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski import com.sun.star.awt.XControl; 33*b1cdbd2cSJim Jagielski import com.sun.star.awt.XControlContainer; 34*b1cdbd2cSJim Jagielski import com.sun.star.container.ContainerEvent; 35*b1cdbd2cSJim Jagielski import com.sun.star.container.XContainer; 36*b1cdbd2cSJim Jagielski import com.sun.star.container.XContainerListener; 37*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameContainer; 38*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameReplace; 39*b1cdbd2cSJim Jagielski import com.sun.star.lang.EventObject; 40*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 41*b1cdbd2cSJim Jagielski import com.sun.star.uno.XNamingService; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski /** 45*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.container.XContainer</code> 46*b1cdbd2cSJim Jagielski * interface methods : 47*b1cdbd2cSJim Jagielski * <ul> 48*b1cdbd2cSJim Jagielski * <li><code> addContainerListener()</code></li> 49*b1cdbd2cSJim Jagielski * <li><code> removeContainerListener()</code></li> 50*b1cdbd2cSJim Jagielski * </ul> 51*b1cdbd2cSJim Jagielski * This test needs the following object relations : 52*b1cdbd2cSJim Jagielski * <ul> 53*b1cdbd2cSJim Jagielski * <li> <code>'INSTANCE'</code> : Object which can be inserted into 54*b1cdbd2cSJim Jagielski * container.</li> 55*b1cdbd2cSJim Jagielski * <li> <code>'INSTANCE2'</code> : <b>(optional)</b> 56*b1cdbd2cSJim Jagielski * Object which can be inserted into container. The relation 57*b1cdbd2cSJim Jagielski * must be specified when container cann't contain two 58*b1cdbd2cSJim Jagielski * identical objects. Replaces the first instance.</li> 59*b1cdbd2cSJim Jagielski * <li> <code>'XContainer.Container'</code> (of type 60*b1cdbd2cSJim Jagielski * <code>com.sun.star.container.XNameContainer</code>) 61*b1cdbd2cSJim Jagielski * <b>optional</b> : is required when the tested component 62*b1cdbd2cSJim Jagielski * doesn't implement <code>XNameContainer</code> and is used 63*b1cdbd2cSJim Jagielski * for adding and removing elements.</li> 64*b1cdbd2cSJim Jagielski * <ul> <p> 65*b1cdbd2cSJim Jagielski * Object <b>must implement</b> 66*b1cdbd2cSJim Jagielski * <code>com.sun.star.container.XNameContainer</code>. 67*b1cdbd2cSJim Jagielski * <p> 68*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 69*b1cdbd2cSJim Jagielski * @see com.sun.star.container.XContainer 70*b1cdbd2cSJim Jagielski */ 71*b1cdbd2cSJim Jagielski public class _XContainer extends MultiMethodTest { 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski public XContainer oObj = null; 74*b1cdbd2cSJim Jagielski private boolean bElementInserted = false; 75*b1cdbd2cSJim Jagielski private boolean bElementRemoved = false; 76*b1cdbd2cSJim Jagielski private boolean bElementReplaced = false; 77*b1cdbd2cSJim Jagielski private PrintWriter _log = null; 78*b1cdbd2cSJim Jagielski private XNameContainer NC = null ; 79*b1cdbd2cSJim Jagielski private XControlContainer CC = null ; 80*b1cdbd2cSJim Jagielski private XNamingService NV = null ; 81*b1cdbd2cSJim Jagielski private XNameReplace NR = null ; 82*b1cdbd2cSJim Jagielski private Object inst = null ; 83*b1cdbd2cSJim Jagielski private Object inst2 = null ; 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski /** 86*b1cdbd2cSJim Jagielski * Retrieves object relations, and tries to query object for 87*b1cdbd2cSJim Jagielski * <code>XNameContainer</code> interface. 88*b1cdbd2cSJim Jagielski * @throws StatusException If one of relations not found or 89*b1cdbd2cSJim Jagielski * object doesn't implement <code>XNameContainer</code> interface. 90*b1cdbd2cSJim Jagielski */ before()91*b1cdbd2cSJim Jagielski public void before() throws StatusException { 92*b1cdbd2cSJim Jagielski _log = log; 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski // do this test with a different object 95*b1cdbd2cSJim Jagielski Object altObj = tEnv.getObjRelation("XContainer.AlternateObject"); 96*b1cdbd2cSJim Jagielski if (altObj != null) { 97*b1cdbd2cSJim Jagielski oObj = (XContainer)UnoRuntime.queryInterface(XContainer.class, altObj); 98*b1cdbd2cSJim Jagielski } 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski NC = (XNameContainer) UnoRuntime.queryInterface 101*b1cdbd2cSJim Jagielski (XNameContainer.class, oObj) ; 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski Object container = null; 104*b1cdbd2cSJim Jagielski if (NC == null) { 105*b1cdbd2cSJim Jagielski container = tEnv.getObjRelation("XContainer.Container") ; 106*b1cdbd2cSJim Jagielski } 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski if (container != null) { 109*b1cdbd2cSJim Jagielski if (container instanceof com.sun.star.awt.XControlContainer) { 110*b1cdbd2cSJim Jagielski CC = (XControlContainer) container; 111*b1cdbd2cSJim Jagielski } else if (container instanceof com.sun.star.uno.XNamingService) { 112*b1cdbd2cSJim Jagielski NV = (XNamingService) container; 113*b1cdbd2cSJim Jagielski } else if (container instanceof com.sun.star.container.XNameReplace) { 114*b1cdbd2cSJim Jagielski NR = (XNameReplace) container; 115*b1cdbd2cSJim Jagielski inst2 = tEnv.getObjRelation("XContainer.NewValue"); 116*b1cdbd2cSJim Jagielski inst = tEnv.getObjRelation("XContainer.ElementName"); 117*b1cdbd2cSJim Jagielski } else if (container instanceof com.sun.star.container.XNameContainer) { 118*b1cdbd2cSJim Jagielski NC = (XNameContainer) container; 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski } 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski if (NC == null && CC == null && NV == null && NR == null) 123*b1cdbd2cSJim Jagielski throw new StatusException( 124*b1cdbd2cSJim Jagielski Status.failed("Neither object implements XNameContainer" + 125*b1cdbd2cSJim Jagielski " nor relation 'XContainer.Container' found.")) ; 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski if (inst == null) 128*b1cdbd2cSJim Jagielski inst = tEnv.getObjRelation("INSTANCE"); 129*b1cdbd2cSJim Jagielski if (inst == null) { 130*b1cdbd2cSJim Jagielski log.println("No INSTANCE ObjRelation!!! "); 131*b1cdbd2cSJim Jagielski throw new StatusException(Status.failed("No INSTANCE ObjRelation!!!")) ; 132*b1cdbd2cSJim Jagielski } 133*b1cdbd2cSJim Jagielski if (inst2 == null) 134*b1cdbd2cSJim Jagielski inst2 = tEnv.getObjRelation("INSTANCE2"); 135*b1cdbd2cSJim Jagielski } 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski /** 138*b1cdbd2cSJim Jagielski * Listener implementation which just set flags on appropriate 139*b1cdbd2cSJim Jagielski * events. 140*b1cdbd2cSJim Jagielski */ 141*b1cdbd2cSJim Jagielski public class MyListener implements XContainerListener { elementInserted(ContainerEvent e)142*b1cdbd2cSJim Jagielski public void elementInserted(ContainerEvent e) { 143*b1cdbd2cSJim Jagielski //_log.println("Element was inserted"); 144*b1cdbd2cSJim Jagielski bElementInserted = true; 145*b1cdbd2cSJim Jagielski } elementRemoved(ContainerEvent e)146*b1cdbd2cSJim Jagielski public void elementRemoved(ContainerEvent e) { 147*b1cdbd2cSJim Jagielski //_log.println("Element was removed"); 148*b1cdbd2cSJim Jagielski bElementRemoved = true; 149*b1cdbd2cSJim Jagielski } elementReplaced(ContainerEvent e)150*b1cdbd2cSJim Jagielski public void elementReplaced(ContainerEvent e) { 151*b1cdbd2cSJim Jagielski //_log.println("Element was replaced"); 152*b1cdbd2cSJim Jagielski bElementReplaced = true; 153*b1cdbd2cSJim Jagielski } disposing(EventObject obj)154*b1cdbd2cSJim Jagielski public void disposing (EventObject obj) {} 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski MyListener listener = new MyListener(); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski /** 160*b1cdbd2cSJim Jagielski * Adds <code>MyListener</code> and performs all possible changes 161*b1cdbd2cSJim Jagielski * (insert, replace, remove) with container. The checks which 162*b1cdbd2cSJim Jagielski * events were called. <p> 163*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if all methods of the listener were called. 164*b1cdbd2cSJim Jagielski */ _addContainerListener()165*b1cdbd2cSJim Jagielski public void _addContainerListener() { 166*b1cdbd2cSJim Jagielski boolean bResult = true; 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski oObj.addContainerListener(listener); 169*b1cdbd2cSJim Jagielski bResult &= performChanges(); 170*b1cdbd2cSJim Jagielski //we can't replace if the container is XControlContainer 171*b1cdbd2cSJim Jagielski if (NC != null) bResult &= bElementReplaced; 172*b1cdbd2cSJim Jagielski // we do not remove and insert if the listener is triggered by XNameReplace 173*b1cdbd2cSJim Jagielski if (NR == null) bResult &= bElementRemoved; 174*b1cdbd2cSJim Jagielski if (NR == null) bResult &= bElementInserted; 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski if (!bResult) { 177*b1cdbd2cSJim Jagielski log.println("inserted was " + (bElementInserted ? "" : "NOT") 178*b1cdbd2cSJim Jagielski + " called."); 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski if (NC != null) { 181*b1cdbd2cSJim Jagielski log.println("replaced was " + (bElementReplaced ? "" : "NOT") 182*b1cdbd2cSJim Jagielski + " called."); 183*b1cdbd2cSJim Jagielski } 184*b1cdbd2cSJim Jagielski log.println("removed was " + (bElementRemoved ? "" : "NOT") 185*b1cdbd2cSJim Jagielski + " called."); 186*b1cdbd2cSJim Jagielski } 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski tRes.tested("addContainerListener()", bResult); 189*b1cdbd2cSJim Jagielski } 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski /** 192*b1cdbd2cSJim Jagielski * Removes listener added before and performs all possible changes 193*b1cdbd2cSJim Jagielski * (insert, replace, remove) with container. The checks which 194*b1cdbd2cSJim Jagielski * events were called. <p> 195*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if no methods of the listener were called. <p> 196*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 197*b1cdbd2cSJim Jagielski * <ul> 198*b1cdbd2cSJim Jagielski * <li> <code> addContainerListener() </code> : to remove it now. </li> 199*b1cdbd2cSJim Jagielski * </ul> 200*b1cdbd2cSJim Jagielski */ _removeContainerListener()201*b1cdbd2cSJim Jagielski public void _removeContainerListener() { 202*b1cdbd2cSJim Jagielski requiredMethod("addContainerListener()") ; 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski boolean bResult = true; 205*b1cdbd2cSJim Jagielski bElementReplaced = bElementRemoved = bElementInserted = false; 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski oObj.removeContainerListener(listener); 208*b1cdbd2cSJim Jagielski bResult &= performChanges(); 209*b1cdbd2cSJim Jagielski bResult &= !bElementReplaced; 210*b1cdbd2cSJim Jagielski bResult &= !bElementRemoved; 211*b1cdbd2cSJim Jagielski bResult &= !bElementInserted; 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski tRes.tested("removeContainerListener()", bResult); 214*b1cdbd2cSJim Jagielski } 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski /** 217*b1cdbd2cSJim Jagielski * Inserts, replaces and finally removes object from container. 218*b1cdbd2cSJim Jagielski * Object is gotten from <code>'INSTANCE'</code> relation. If 219*b1cdbd2cSJim Jagielski * the relation <code>'INSTANCE2'</code> exists then the first 220*b1cdbd2cSJim Jagielski * instance is replaced with second. 221*b1cdbd2cSJim Jagielski */ performChanges()222*b1cdbd2cSJim Jagielski protected boolean performChanges() { 223*b1cdbd2cSJim Jagielski if (CC != null) return performChanges2(); 224*b1cdbd2cSJim Jagielski if (NV != null) return performChanges3(); 225*b1cdbd2cSJim Jagielski if (NR != null) return performChanges4(); 226*b1cdbd2cSJim Jagielski boolean bResult = true; 227*b1cdbd2cSJim Jagielski try { 228*b1cdbd2cSJim Jagielski String[] names = NC.getElementNames(); 229*b1cdbd2cSJim Jagielski log.println("Elements count = " + names.length); 230*b1cdbd2cSJim Jagielski NC.insertByName("XContainer_dummy", inst); 231*b1cdbd2cSJim Jagielski names = NC.getElementNames(); 232*b1cdbd2cSJim Jagielski log.println("Elements count = " + names.length); 233*b1cdbd2cSJim Jagielski if (inst2 == null) { 234*b1cdbd2cSJim Jagielski NC.replaceByName("XContainer_dummy", inst); 235*b1cdbd2cSJim Jagielski } else { 236*b1cdbd2cSJim Jagielski NC.replaceByName("XContainer_dummy", inst2); 237*b1cdbd2cSJim Jagielski } 238*b1cdbd2cSJim Jagielski NC.removeByName("XContainer_dummy"); 239*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 240*b1cdbd2cSJim Jagielski log.println("Exception occured "); 241*b1cdbd2cSJim Jagielski ex.printStackTrace(log); 242*b1cdbd2cSJim Jagielski bResult = false; 243*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException ex) { 244*b1cdbd2cSJim Jagielski log.println("Exception occured "); 245*b1cdbd2cSJim Jagielski ex.printStackTrace(log); 246*b1cdbd2cSJim Jagielski bResult = false; 247*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException ex) { 248*b1cdbd2cSJim Jagielski log.println("Exception occured "); 249*b1cdbd2cSJim Jagielski ex.printStackTrace(log); 250*b1cdbd2cSJim Jagielski bResult = false; 251*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.ElementExistException ex) { 252*b1cdbd2cSJim Jagielski log.println("Exception occured "); 253*b1cdbd2cSJim Jagielski ex.printStackTrace(log); 254*b1cdbd2cSJim Jagielski bResult = false; 255*b1cdbd2cSJim Jagielski } 256*b1cdbd2cSJim Jagielski 257*b1cdbd2cSJim Jagielski return bResult; 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski /** 261*b1cdbd2cSJim Jagielski * In case no XNameContainer is available, but a XControlContainer 262*b1cdbd2cSJim Jagielski * instead. 263*b1cdbd2cSJim Jagielski * the XControl instance is inserted 264*b1cdbd2cSJim Jagielski * Method returns true if the count of Controls is changed afterwards 265*b1cdbd2cSJim Jagielski */ performChanges2()266*b1cdbd2cSJim Jagielski protected boolean performChanges2() { 267*b1cdbd2cSJim Jagielski int precount = CC.getControls().length; 268*b1cdbd2cSJim Jagielski CC.addControl("NewControl",(XControl) inst); 269*b1cdbd2cSJim Jagielski shortWait(); 270*b1cdbd2cSJim Jagielski int count = CC.getControls().length; 271*b1cdbd2cSJim Jagielski CC.removeControl(CC.getControl("NewControl")); 272*b1cdbd2cSJim Jagielski shortWait(); 273*b1cdbd2cSJim Jagielski return count>precount; 274*b1cdbd2cSJim Jagielski } 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski /** 277*b1cdbd2cSJim Jagielski * In case no XNameContainer is available, but a XNamingService 278*b1cdbd2cSJim Jagielski * instead. 279*b1cdbd2cSJim Jagielski * the instance is registered and revoked again 280*b1cdbd2cSJim Jagielski * Method return true if getRegisteredObject() works after 281*b1cdbd2cSJim Jagielski * registering and doesn't after revoke 282*b1cdbd2cSJim Jagielski */ performChanges3()283*b1cdbd2cSJim Jagielski protected boolean performChanges3() { 284*b1cdbd2cSJim Jagielski boolean res = true; 285*b1cdbd2cSJim Jagielski Object reg = null; 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski try { 288*b1cdbd2cSJim Jagielski reg = NV.getRegisteredObject("MyFactory"); 289*b1cdbd2cSJim Jagielski NV.revokeObject("MyFactory"); 290*b1cdbd2cSJim Jagielski } catch (Exception e) { 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski } 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski try { 295*b1cdbd2cSJim Jagielski NV.registerObject("MyFactory", inst); 296*b1cdbd2cSJim Jagielski reg = NV.getRegisteredObject("MyFactory"); 297*b1cdbd2cSJim Jagielski res &= (reg != null); 298*b1cdbd2cSJim Jagielski } catch (Exception e) { 299*b1cdbd2cSJim Jagielski e.printStackTrace(log); 300*b1cdbd2cSJim Jagielski log.println("registerObject failed"); 301*b1cdbd2cSJim Jagielski res &= false; 302*b1cdbd2cSJim Jagielski } 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski try { 305*b1cdbd2cSJim Jagielski NV.revokeObject("MyFactory"); 306*b1cdbd2cSJim Jagielski reg = NV.getRegisteredObject("MyFactory"); 307*b1cdbd2cSJim Jagielski log.println("revokeObject failed"); 308*b1cdbd2cSJim Jagielski res &= false; 309*b1cdbd2cSJim Jagielski } catch (Exception e) { 310*b1cdbd2cSJim Jagielski res &= true; 311*b1cdbd2cSJim Jagielski } 312*b1cdbd2cSJim Jagielski 313*b1cdbd2cSJim Jagielski return res; 314*b1cdbd2cSJim Jagielski } 315*b1cdbd2cSJim Jagielski 316*b1cdbd2cSJim Jagielski /** 317*b1cdbd2cSJim Jagielski * In case no XNameContainer is available, but a XNamingReplace 318*b1cdbd2cSJim Jagielski * instead. 319*b1cdbd2cSJim Jagielski */ performChanges4()320*b1cdbd2cSJim Jagielski protected boolean performChanges4() { 321*b1cdbd2cSJim Jagielski boolean res = true; 322*b1cdbd2cSJim Jagielski Object newValue = inst2; 323*b1cdbd2cSJim Jagielski Object originalValue = null; 324*b1cdbd2cSJim Jagielski String name = null; 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski try { 327*b1cdbd2cSJim Jagielski name = (String)inst; 328*b1cdbd2cSJim Jagielski } 329*b1cdbd2cSJim Jagielski catch(java.lang.ClassCastException e) { 330*b1cdbd2cSJim Jagielski log.write("Expected String as object relations 'XContainer.ElementName'."); 331*b1cdbd2cSJim Jagielski e.printStackTrace(log); 332*b1cdbd2cSJim Jagielski return false; 333*b1cdbd2cSJim Jagielski } 334*b1cdbd2cSJim Jagielski 335*b1cdbd2cSJim Jagielski try { 336*b1cdbd2cSJim Jagielski originalValue = NR.getByName(name); 337*b1cdbd2cSJim Jagielski NR.replaceByName(name, newValue); 338*b1cdbd2cSJim Jagielski } catch (Exception e) { 339*b1cdbd2cSJim Jagielski e.printStackTrace(log); 340*b1cdbd2cSJim Jagielski res = false; 341*b1cdbd2cSJim Jagielski } 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski try { 344*b1cdbd2cSJim Jagielski NR.replaceByName(name, originalValue); 345*b1cdbd2cSJim Jagielski } catch (Exception e) { 346*b1cdbd2cSJim Jagielski e.printStackTrace(log); 347*b1cdbd2cSJim Jagielski res = false; 348*b1cdbd2cSJim Jagielski } 349*b1cdbd2cSJim Jagielski 350*b1cdbd2cSJim Jagielski return res; 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski /** 354*b1cdbd2cSJim Jagielski * Sleeps for 0.5 sec. to allow StarOffice to react on <code> 355*b1cdbd2cSJim Jagielski * reset</code> call. 356*b1cdbd2cSJim Jagielski */ shortWait()357*b1cdbd2cSJim Jagielski private void shortWait() { 358*b1cdbd2cSJim Jagielski try { 359*b1cdbd2cSJim Jagielski Thread.sleep(1000) ; 360*b1cdbd2cSJim Jagielski } catch (InterruptedException e) { 361*b1cdbd2cSJim Jagielski log.println("While waiting :" + e) ; 362*b1cdbd2cSJim Jagielski } 363*b1cdbd2cSJim Jagielski } 364*b1cdbd2cSJim Jagielski } 365*b1cdbd2cSJim Jagielski 366*b1cdbd2cSJim Jagielski 367