1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.kernel.util;
24  
25  import com.liferay.portal.kernel.io.unsync.UnsyncBufferedReader;
26  
27  import java.io.IOException;
28  import java.io.InputStreamReader;
29  
30  import java.util.Enumeration;
31  import java.util.Properties;
32  
33  /**
34   * <a href="SystemEnv.java.html"><b><i>View Source</i></b></a>
35   *
36   * @author Brian Wing Shun Chan
37   */
38  public class SystemEnv {
39  
40      public static Properties getProperties() {
41          Properties props = new Properties();
42  
43          try {
44              Runtime runtime = Runtime.getRuntime();
45              Process process = null;
46  
47              String osName = System.getProperty("os.name").toLowerCase();
48  
49              if (osName.indexOf("windows ") > -1) {
50                  if (osName.indexOf("windows 9") > -1) {
51                      process = runtime.exec("command.com /c set");
52                  }
53                  else {
54                      process = runtime.exec("cmd.exe /c set");
55                  }
56              }
57              else {
58                  process = runtime.exec("env");
59              }
60  
61              UnsyncBufferedReader unsyncBufferedReader =
62                  new UnsyncBufferedReader(
63                      new InputStreamReader(process.getInputStream()));
64  
65              String line;
66  
67              while ((line = unsyncBufferedReader.readLine()) != null) {
68                  int pos = line.indexOf(StringPool.EQUAL);
69  
70                  if (pos != -1) {
71                      String key = line.substring(0, pos);
72                      String value = line.substring(pos + 1);
73  
74                      props.setProperty(key, value);
75                  }
76              }
77          }
78          catch (IOException ioe) {
79              ioe.printStackTrace();
80          }
81  
82          return props;
83      }
84  
85      public static void setProperties(Properties props) {
86          Properties envProps = getProperties();
87  
88          Enumeration<String> enu = (Enumeration<String>)envProps.propertyNames();
89  
90          while (enu.hasMoreElements()) {
91              String key = enu.nextElement();
92  
93              props.setProperty("env." + key, (String)envProps.get(key));
94          }
95      }
96  
97  }