KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > values > types > SystemType


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.values.types;
5
6
7 import java.util.Collection JavaDoc;
8 import java.util.HashMap JavaDoc;
9 import java.util.Map JavaDoc;
10 import java.util.Set JavaDoc;
11
12 /**
13  * @oddjob.description A type which creates a {@link MapType}
14  * like type from the system properties.
15  *
16  * @oddjob.example
17  *
18  * Making the system properties available as variables.
19  *
20  * <pre>
21  * &lt;varables id="vars"&gt;
22  * &lt;system/&gt;
23  * &lt;/variables&gt;
24  * </pre>
25  *
26  * @author Rob Gordon.
27  */

28 public class SystemType implements Map JavaDoc {
29
30     public static final String JavaDoc JAVA_VERSION = "java.version"; // Java Runtime Environment version
31
public static final String JavaDoc JAVA_VENDOR = "java.vendor"; // Java Runtime Environment vendor
32
public static final String JavaDoc JAVA_VENDOR_URL = "java.vendor.url"; // Java vendor URL
33
public static final String JavaDoc JAVA_HOME = "java.home"; // Java installation directory
34
public static final String JavaDoc JAVA_VM_SPECIFICATION_VERSION = "java.vm.specification.version"; // Java Virtual Machine specification version
35
public static final String JavaDoc JAVA_VM_SPECIFICATION_VENDOR = "java.vm.specification.vendor"; // Java Virtual Machine specification vendor
36
public static final String JavaDoc JAVA_VM_SPECIFICATION_NAME = "java.vm.specification.name"; // Java Virtual Machine specification name
37
public static final String JavaDoc JAVA_VM_VERSION = "java.vm.version"; // Java Virtual Machine implementation version
38
public static final String JavaDoc JAVA_VM_VENDOR = "java.vm.vendor"; // Java Virtual Machine implementation vendor
39
public static final String JavaDoc JAVA_VM_NAME = "java.vm.name"; // Java Virtual Machine implementation name
40
public static final String JavaDoc JAVA_SPECIFICATION_VERSION = "java.specification.version"; // Java Runtime Environment specification version
41
public static final String JavaDoc JAVA_SPECIFICATION_VENDOR = "java.specification.vendor"; // Java Runtime Environment specification vendor
42
public static final String JavaDoc JAVA_SPECIFICATION_NAME = "java.specification.name"; // Java Runtime Environment specification name
43
public static final String JavaDoc JAVA_CLASS_VERSION = "java.class.version"; // Java class format version number
44
public static final String JavaDoc JAVA_CLASS_PATH = "java.class.path"; // Java class path
45
public static final String JavaDoc JAVA_LIBRARY_PATH = "java.library.path"; // List of paths to search when loading libraries
46
public static final String JavaDoc JAVA_IO_TMPDIR = "java.io.tmpdir"; // Default temp file path
47
public static final String JavaDoc JAVA_COMPILER = "java.compiler"; // Name of JIT compiler to use
48
public static final String JavaDoc JAVA_EXT_DIRS = "java.ext.dirs"; // Path of extension directory or directories
49
public static final String JavaDoc OS_NAME = "os.name"; // Operating system name
50
public static final String JavaDoc OS_ARCH = "os.arch"; // Operating system architecture
51
public static final String JavaDoc OS_VERSION = "os.version"; // Operating system version
52
public static final String JavaDoc FILE_SEPARATOR = "file.separator"; // File separator ("/" on UNIX)
53
public static final String JavaDoc PATH_SEPARATOR = "path.separator"; // Path separator (":" on UNIX)
54
public static final String JavaDoc LINE_SEPARATOR = "line.separator"; // Line separator ("\n" on UNIX)
55
public static final String JavaDoc USER_NAME = "user.name"; // User's account name
56
public static final String JavaDoc USER_HOME = "user.home"; // User's home directory
57
public static final String JavaDoc USER_DIR = "user.dir"; // User's current working directory"
58

59     /** Map used to store systm properties */
60     private Map JavaDoc map;
61
62     /**
63      * @oddjob.property
64      * @oddjob.description The name of the system variable.
65      * @oddjob.required No, if not supplied then all are returned.
66      */

67     private String JavaDoc name;
68     
69     /**
70      * @oddjob.property
71      * @oddjob.description The value of the property.
72      * @oddjob.required No, if not supplied the existing System value will be used.
73      */

74     private String JavaDoc value;
75     
76     
77     /**
78      * Constructor.
79      */

80     public SystemType() {
81         map = new HashMap JavaDoc(System.getProperties());
82     }
83     
84     /**
85      * Set the name.
86      *
87      * @param name The name.
88      */

89     public void setName(String JavaDoc name) {
90         this.name = name;
91         if (name != null) {
92             map.clear();
93             if (value != null) {
94                 System.setProperty(name, value);
95             }
96             map.put(name, System.getProperty(name));
97         }
98     }
99     
100     /**
101      * Set the value;
102      *
103      * @param value The value.
104      */

105     public void setValue(String JavaDoc value) {
106         this.value = value;
107         if (name != null) {
108             System.setProperty(name, value);
109             map.put(name, value);
110         }
111     }
112     
113     /**
114      * Resolve this type.
115      *
116      * @param required The required class.
117      * @return The resolved value.
118      */

119     public Object JavaDoc valueFor(Class JavaDoc required) {
120         if (name != null) {
121             return map.get(name);
122         }
123         return map;
124     }
125         
126     /* (non-Javadoc)
127      * @see java.util.Map#clear()
128      */

129     public void clear() {
130         throw new UnsupportedOperationException JavaDoc("This map is read only!");
131     }
132
133     /* (non-Javadoc)
134      * @see java.util.Map#containsKey(java.lang.Object)
135      */

136     public boolean containsKey(Object JavaDoc key) {
137         return map.containsKey(key);
138     }
139     
140     /* (non-Javadoc)
141      * @see java.util.Map#containsValue(java.lang.Object)
142      */

143     public boolean containsValue(Object JavaDoc value) {
144         return map.containsValue(value);
145     }
146     
147     /* (non-Javadoc)
148      * @see java.util.Map#entrySet()
149      */

150     public Set JavaDoc entrySet() {
151         return map.entrySet();
152     }
153         
154     /* (non-Javadoc)
155      * @see java.util.Map#get(java.lang.Object)
156      */

157     public Object JavaDoc get(Object JavaDoc key) {
158         return map.get(key);
159     }
160         
161     /* (non-Javadoc)
162      * @see java.util.Map#isEmpty()
163      */

164     public boolean isEmpty() {
165         return map.isEmpty();
166     }
167     
168     /* (non-Javadoc)
169      * @see java.util.Map#keySet()
170      */

171     public Set JavaDoc keySet() {
172         return map.keySet();
173     }
174     
175     /* (non-Javadoc)
176      * @see java.util.Map#put(java.lang.Object, java.lang.Object)
177      */

178     public Object JavaDoc put(Object JavaDoc key, Object JavaDoc value) {
179         throw new UnsupportedOperationException JavaDoc("This map is read only!");
180     }
181     
182     /* (non-Javadoc)
183      * @see java.util.Map#putAll(java.util.Map)
184      */

185     public void putAll(Map JavaDoc t) {
186         throw new UnsupportedOperationException JavaDoc("This map is read only!");
187     }
188     
189     /* (non-Javadoc)
190      * @see java.util.Map#remove(java.lang.Object)
191      */

192     public Object JavaDoc remove(Object JavaDoc key) {
193         return map.remove(key);
194     }
195     
196     /* (non-Javadoc)
197      * @see java.util.Map#size()
198      */

199     public int size() {
200         return map.size();
201     }
202     
203     /* (non-Javadoc)
204      * @see java.util.Map#values()
205      */

206     public Collection JavaDoc values() {
207         return map.values();
208     }
209     
210 }
211
Popular Tags