KickJava   Java API By Example, From Geeks To Geeks.

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


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.Method JavaDoc;
32 import java.util.Iterator JavaDoc;
33 import java.util.Map JavaDoc;
34
35 import org.jruby.Ruby;
36
37 class OSEnvironmentReaderFromJava5SystemGetenv implements IOSEnvironmentReader {
38
39
40     /**
41      * Gets the new Java 5 Sytem.getenv method via reflection.
42      * @return
43      */

44     protected Method JavaDoc getSystemGetenvMethod() {
45         Method JavaDoc getenvMethod = null;
46         try {
47             getenvMethod = java.lang.System JavaDoc.class.getMethod("getenv", (Class JavaDoc[]) null);
48             if (!getenvMethod.getReturnType().equals(java.util.Map JavaDoc.class)) {
49                 // wrong return type
50
getenvMethod = null;
51             }
52         } catch (NoSuchMethodException JavaDoc e) {
53             // This is the error you get if using Java 1.4.2
54
getenvMethod = null;
55         } catch (Exception JavaDoc e) {
56             // Some other e.g. security problem
57
getenvMethod = null;
58         }
59         return getenvMethod;
60     }
61
62     /* (non-Javadoc)
63      * @see org.jruby.IOSEnvironment#isAccessible()
64      */

65     public boolean isAccessible(Ruby runtime) {
66         return getSystemGetenvMethod() != null;
67     }
68
69     /* (non-Javadoc)
70      * @see org.jruby.IOSEnvironment#getVariables()
71      */

72     public Map JavaDoc getVariables(Ruby runtime) {
73         Map JavaDoc returnMap = null;
74         Method JavaDoc getenvMethod = getSystemGetenvMethod();
75         try {
76             if (getenvMethod != null) {
77                 returnMap = (Map JavaDoc) getenvMethod.invoke(null, (Object JavaDoc[]) null);
78             }
79         } catch (Exception JavaDoc e) {
80             new OSEnvironment().handleException(e);
81         }
82         return returnMap;
83     }
84
85     public static void main(String JavaDoc[] args) {
86         OSEnvironmentReaderFromJava5SystemGetenv getenv = new OSEnvironmentReaderFromJava5SystemGetenv();
87         Map JavaDoc envs = getenv.getVariables(null);
88         for (Iterator JavaDoc i = envs.entrySet().iterator(); i.hasNext();) {
89             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) i.next();
90             System.out.println(entry.getKey() + ":" + entry.getValue());
91         }
92         System.out.println();
93     }
94 }
95
Popular Tags