KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jruby > environment > OSEnvironmentReaderFromApacheAnt


1 /***** BEGIN LICENSE BLOCK *****
2  * Version: CPL 1.0/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Common Public
5  * License Version 1.0 (the "License"); you may not use this file
6  * except in compliance with the License. You may obtain a copy of
7  * the License at http://www.eclipse.org/legal/cpl-v10.html
8  *
9  * Software distributed under the License is distributed on an "AS
10  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11  * implied. See the License for the specific language governing
12  * rights and limitations under the License.
13  *
14  * Copyright (C) 2006 Tim Azzopardi <tim@tigerfive.com>
15  *
16  * Alternatively, the contents of this file may be used under the terms of
17  * either of the GNU General Public License Version 2 or later (the "GPL"),
18  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
19  * in which case the provisions of the GPL or the LGPL are applicable instead
20  * of those above. If you wish to allow use of your version of this file only
21  * under the terms of either the GPL or the LGPL, and not to allow others to
22  * use your version of this file under the terms of the CPL, indicate your
23  * decision by deleting the provisions above and replace them with the notice
24  * and other provisions required by the GPL or the LGPL. If you do not delete
25  * the provisions above, a recipient may use your version of this file under
26  * the terms of any one of the CPL, the GPL or the LGPL.
27  ***** END LICENSE BLOCK *****/

28
29 package org.jruby.environment;
30
31 import java.lang.reflect.InvocationTargetException JavaDoc;
32 import java.lang.reflect.Method JavaDoc;
33 import java.util.HashMap JavaDoc;
34 import java.util.Iterator JavaDoc;
35 import java.util.Map JavaDoc;
36 import java.util.Vector JavaDoc;
37
38 import org.jruby.Ruby;
39
40 class OSEnvironmentReaderFromApacheAnt implements IOSEnvironmentReader {
41
42
43     protected Map JavaDoc getProcEnvironmentMethodV() {
44
45         Method JavaDoc getProcEnvironment = getProcEnvironmentMethod();
46         Vector JavaDoc v = new Vector JavaDoc();
47
48         HashMap JavaDoc map = new HashMap JavaDoc();
49
50         
51         if (getProcEnvironment != null) {
52             try {
53                 v = (Vector JavaDoc) getProcEnvironment.invoke(null, (Object JavaDoc[]) null);
54             } catch (IllegalArgumentException JavaDoc e) {
55                 return map;
56             } catch (IllegalAccessException JavaDoc e) {
57                 return map;
58             } catch (InvocationTargetException JavaDoc e) {
59                 return map;
60             }
61         }
62
63         String JavaDoc line;
64         int equalsPos;
65
66         for (java.util.Enumeration JavaDoc e = v.elements(); e.hasMoreElements();) {
67             line = (String JavaDoc) e.nextElement();
68             equalsPos = line.indexOf('=');
69             if (equalsPos >= 1) {
70                 map.put(line.substring(0, equalsPos), line.substring(equalsPos + 1));
71             }
72         }
73         
74         
75         return map;
76
77     }
78     
79     
80     protected Method JavaDoc getProcEnvironmentMethod() {
81
82         Method JavaDoc getProcEnvironment;
83         Class JavaDoc c;
84         
85         try {
86             c = Class.forName("org.apache.tools.ant.taskdefs.Execute");
87         } catch (ClassNotFoundException JavaDoc e) {
88             return null;
89         }
90         
91         try {
92             getProcEnvironment = c.getMethod("getProcEnvironment", (Class JavaDoc[]) null);
93         } catch (SecurityException JavaDoc e) {
94             return null;
95         } catch (NoSuchMethodException JavaDoc e) {
96             return null;
97         }
98         
99         return getProcEnvironment;
100         
101     }
102     
103     
104     
105
106     /* (non-Javadoc)
107      * @see org.jruby.IOSEnvironment#isAccessible()
108      */

109     public boolean isAccessible(Ruby runtime) {
110         return getProcEnvironmentMethod() != null;
111     }
112
113     /* (non-Javadoc)
114      * @see org.jruby.IOSEnvironment#getVariables()
115      */

116     public Map JavaDoc getVariables(Ruby runtime) {
117         return getProcEnvironmentMethodV();
118     }
119
120     public static void main(String JavaDoc[] args) {
121         OSEnvironmentReaderFromApacheAnt getenv = new OSEnvironmentReaderFromApacheAnt();
122         Map JavaDoc envs = getenv.getVariables(null);
123         for (Iterator JavaDoc i = envs.entrySet().iterator(); i.hasNext();) {
124             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) i.next();
125             System.out.println(entry.getKey() + ":" + entry.getValue());
126         }
127         System.out.println();
128     }
129 }
130
Popular Tags