xref: /AOO41X/main/scripting/workben/installer/ExecCmd.java (revision cd519653a6b6a9e2ff38774da567b1ae7cbeddbb)
1*cd519653SAndrew Rist /**************************************************************
2*cd519653SAndrew Rist  *
3*cd519653SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cd519653SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cd519653SAndrew Rist  * distributed with this work for additional information
6*cd519653SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cd519653SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cd519653SAndrew Rist  * "License"); you may not use this file except in compliance
9*cd519653SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*cd519653SAndrew Rist  *
11*cd519653SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*cd519653SAndrew Rist  *
13*cd519653SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cd519653SAndrew Rist  * software distributed under the License is distributed on an
15*cd519653SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cd519653SAndrew Rist  * KIND, either express or implied.  See the License for the
17*cd519653SAndrew Rist  * specific language governing permissions and limitations
18*cd519653SAndrew Rist  * under the License.
19*cd519653SAndrew Rist  *
20*cd519653SAndrew Rist  *************************************************************/
21*cd519653SAndrew Rist 
22cdf0e10cSrcweir package installer;
23cdf0e10cSrcweir import java.util.*;
24cdf0e10cSrcweir import java.io.*;
25cdf0e10cSrcweir public class ExecCmd
26cdf0e10cSrcweir {
27cdf0e10cSrcweir 
exec( String cmd, String[] env )28cdf0e10cSrcweir     public boolean exec( String cmd, String[] env )
29cdf0e10cSrcweir     {
30cdf0e10cSrcweir        System.out.println("About to exectute " + cmd);
31cdf0e10cSrcweir        final Process p;
32cdf0e10cSrcweir        boolean result = false;
33cdf0e10cSrcweir        try
34cdf0e10cSrcweir        {
35cdf0e10cSrcweir            Runtime rt = Runtime.getRuntime();
36cdf0e10cSrcweir            p=rt.exec( cmd, env );
37cdf0e10cSrcweir            new Thread(new Runnable() {
38cdf0e10cSrcweir                public void run()
39cdf0e10cSrcweir                {
40cdf0e10cSrcweir                    BufferedReader br_in = null;
41cdf0e10cSrcweir                    try
42cdf0e10cSrcweir                    {
43cdf0e10cSrcweir                        br_in = new BufferedReader(new InputStreamReader(p.getInputStream()));
44cdf0e10cSrcweir                        String buff = null;
45cdf0e10cSrcweir                        while ((buff = br_in.readLine()) != null)
46cdf0e10cSrcweir                        {
47cdf0e10cSrcweir                            System.out.println("Process out :" + buff);
48cdf0e10cSrcweir                            /*try
49cdf0e10cSrcweir                            {
50cdf0e10cSrcweir                                Thread.sleep(100);
51cdf0e10cSrcweir                            }
52cdf0e10cSrcweir                            catch(Exception e) {}*/
53cdf0e10cSrcweir                        }
54cdf0e10cSrcweir                        System.out.println("finished reading out");
55cdf0e10cSrcweir                     }
56cdf0e10cSrcweir                     catch (IOException ioe)
57cdf0e10cSrcweir                     {
58cdf0e10cSrcweir                         System.out.println("Exception caught printing javac result");
59cdf0e10cSrcweir                         ioe.printStackTrace();
60cdf0e10cSrcweir                     }
61cdf0e10cSrcweir                     finally
62cdf0e10cSrcweir                     {
63cdf0e10cSrcweir                        if ( br_in != null )
64cdf0e10cSrcweir                        {
65cdf0e10cSrcweir                            try
66cdf0e10cSrcweir                            {
67cdf0e10cSrcweir                                br_in.close();
68cdf0e10cSrcweir                            }
69cdf0e10cSrcweir                            catch( Exception e ) {} // nothing can be done
70cdf0e10cSrcweir                        }
71cdf0e10cSrcweir                     }
72cdf0e10cSrcweir                } } ).start();
73cdf0e10cSrcweir 
74cdf0e10cSrcweir             new Thread(new Runnable() {
75cdf0e10cSrcweir                 public void run() {
76cdf0e10cSrcweir                 BufferedReader br_err = null;
77cdf0e10cSrcweir                 try {
78cdf0e10cSrcweir                     br_err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
79cdf0e10cSrcweir                     String buff = null;
80cdf0e10cSrcweir                     while ((buff = br_err.readLine()) != null) {
81cdf0e10cSrcweir                     System.out.println("Process err :" + buff);
82cdf0e10cSrcweir                     /*try {Thread.sleep(100); } catch(Exception e) {}*/
83cdf0e10cSrcweir                  }
84cdf0e10cSrcweir                  System.out.println("finished reading err");
85cdf0e10cSrcweir                  } catch (IOException ioe) {
86cdf0e10cSrcweir                     System.out.println("Exception caught printing javac result");
87cdf0e10cSrcweir                     ioe.printStackTrace();
88cdf0e10cSrcweir                  }
89cdf0e10cSrcweir                  finally
90cdf0e10cSrcweir                  {
91cdf0e10cSrcweir                     if ( br_err != null )
92cdf0e10cSrcweir                     {
93cdf0e10cSrcweir                         try
94cdf0e10cSrcweir                         {
95cdf0e10cSrcweir                             br_err.close();
96cdf0e10cSrcweir                         }
97cdf0e10cSrcweir                         catch( Exception e ) {} // nothing can be done
98cdf0e10cSrcweir                     }
99cdf0e10cSrcweir                  }
100cdf0e10cSrcweir             } }).start();
101cdf0e10cSrcweir             int exitcode = p.waitFor();
102cdf0e10cSrcweir             if ( exitcode != 0 )
103cdf0e10cSrcweir             {
104cdf0e10cSrcweir                 System.out.println("cmd [" + cmd + "] failed" );
105cdf0e10cSrcweir                 result= false;
106cdf0e10cSrcweir             }
107cdf0e10cSrcweir             else
108cdf0e10cSrcweir             {
109cdf0e10cSrcweir                 System.out.println("cmd [" + cmd + "] completed successfully");
110cdf0e10cSrcweir                 result= true;
111cdf0e10cSrcweir             }
112cdf0e10cSrcweir         }
113cdf0e10cSrcweir         catch (Exception e) {
114cdf0e10cSrcweir           System.out.println("Exception");
115cdf0e10cSrcweir           e.printStackTrace();
116cdf0e10cSrcweir        }
117cdf0e10cSrcweir        System.out.println("command complete");
118cdf0e10cSrcweir        return result;
119cdf0e10cSrcweir     }
120cdf0e10cSrcweir }
121cdf0e10cSrcweir 
122