| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| package ifc.system; |
| |
| import lib.MultiMethodTest; |
| import util.utils; |
| |
| import com.sun.star.lang.XMultiServiceFactory; |
| import com.sun.star.system.XSystemShellExecute; |
| import com.sun.star.ucb.XSimpleFileAccess; |
| import com.sun.star.uno.UnoRuntime; |
| |
| |
| /** |
| * Testing <code>com.sun.star.system.XSystemShellExecute</code> |
| * interface methods : |
| * <ul> |
| * <li><code> execute()</code></li> |
| * </ul> <p> |
| * Test is <b> NOT </b> multithread compilant. <p> |
| * @see com.sun.star.system.XSystemShellExecute |
| */ |
| public class _XSystemShellExecute extends MultiMethodTest { |
| |
| public XSystemShellExecute oObj = null; |
| |
| /** |
| * Excecutes 'java SystemShellExecute SystemShellExecute.txt' command line. |
| * <p>Has <b> OK </b> status if the method successfully returns |
| * and file 'SystemShellExecute.txt' was created. <p> |
| */ |
| public void _execute() { |
| String cClassPath = System.getProperty("DOCPTH"); |
| String cResFile = utils.getOfficeTempDirSys((XMultiServiceFactory)tParam.getMSF())+"SystemShellExecute.txt"; |
| String cResURL = utils.getOfficeTemp((XMultiServiceFactory)tParam.getMSF())+"SystemShellExecute.txt"; |
| String cArgs = "-classpath " + cClassPath + |
| " SystemShellExecute " + cResFile; |
| |
| String jh = System.getProperty("java.home"); |
| String fs = System.getProperty("file.separator"); |
| String cmd = jh+fs+"bin"+fs+"java"; |
| |
| log.println("Executing : '"+cmd+" " + cArgs + "'"); |
| try { |
| oObj.execute(cmd, cArgs, 1); |
| } catch (com.sun.star.system.SystemShellExecuteException e) { |
| log.println("Exception during execute: " + e); |
| log.println("This has been implemented due to security reasons"); |
| tRes.tested("execute()", true); |
| return; |
| } catch (com.sun.star.lang.IllegalArgumentException e) { |
| log.println("Exception during execute: " + e); |
| tRes.tested("execute()", false); |
| return; |
| } |
| |
| XSimpleFileAccess xFileAccess = null; |
| try { |
| XMultiServiceFactory xMSF = (XMultiServiceFactory)tParam.getMSF(); |
| Object fa = xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess"); |
| xFileAccess = (XSimpleFileAccess) |
| UnoRuntime.queryInterface(XSimpleFileAccess.class, fa); |
| } catch (com.sun.star.uno.Exception e) { |
| log.println("Couldn't create SimpleFileAccess:" + e); |
| tRes.tested("execute()", false); |
| } |
| |
| log.println("Waiting while the file will be created or timeout "+ |
| "reached ..."); |
| boolean bExist = false; |
| int i = 0; |
| while (i < 20 && !bExist) { |
| try { |
| bExist = xFileAccess.exists(cResURL); |
| } catch(com.sun.star.uno.Exception e) { |
| log.println("Exception:" + e); |
| } |
| shortWait(); |
| i++; |
| } |
| |
| if (bExist) { |
| log.println("The command was executed and file created in " + |
| i + " sec."); |
| } else { |
| log.println("File was not created"); |
| } |
| |
| tRes.tested("execute()", bExist); |
| } |
| |
| /** |
| * Sleeps to allow StarOffice to react on <code> |
| * reset</code> call. |
| */ |
| private void shortWait() { |
| try { |
| Thread.sleep(1000) ; |
| } catch (InterruptedException e) { |
| log.println("While waiting :" + e) ; |
| } |
| } |
| } // finish class _XSystemShellExecute |
| |
| |