]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/global/GlobalShare.java
Change to new XML Schema.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / GlobalShare.java
CommitLineData
878ddf1f 1/*++\r
2\r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8\r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12 Module Name:\r
13 ShareObject.java\r
14\r
15 Abstract:\r
16\r
17 --*/\r
18package org.tianocore.build.global;\r
19\r
20import java.util.*;\r
21\r
22import org.apache.tools.ant.*;\r
23import org.apache.tools.ant.types.DataType;\r
24\r
25public class GlobalShare extends DataType implements DynamicConfigurator {\r
26 private static final HashMap<String, Object> objStorage = new HashMap<String, Object>();\r
27\r
28 private DataObjectOp op;\r
29\r
30 private String objName;\r
31\r
32 private Object objInst;\r
33\r
34 private String objClassPackage = "org.tianocore";\r
35\r
36 public GlobalShare () {\r
37\r
38 }\r
39\r
40 public GlobalShare (String objName) {\r
41 this.objName = objName;\r
42 this.objInst = objStorage.get(this.objName);\r
43 }\r
44\r
45 public GlobalShare (String objName, Object obj) {\r
46 this.objName = objName;\r
47 this.objInst = obj;\r
48 objStorage.put(this.objName, this.objInst);\r
49 }\r
50\r
51 public Object createDynamicElement(String name) throws BuildException {\r
52 String className = objClassPackage + "." + name;\r
53 log("GlobalShare.createDynamicElement(" + name + ")",\r
54 Project.MSG_VERBOSE);\r
55 try {\r
56 objInst = Class.forName(className).newInstance();\r
57 } catch (ClassNotFoundException e) {\r
58 throw new BuildException("class name is not found");\r
59 } catch (InstantiationException e) {\r
60 throw new BuildException("the class cannnot be instantiated");\r
61 } catch (IllegalAccessException e) {\r
62 throw new BuildException("cannot access the class");\r
63 }\r
64\r
65 return objInst;\r
66 }\r
67\r
68 public void setDynamicAttribute(String name, String value)\r
69 throws BuildException {\r
70 log("name = " + name + " value = " + value, Project.MSG_VERBOSE);\r
71 throw new BuildException();\r
72 }\r
73\r
74 public void setName(String name) {\r
75 this.objName = name;\r
76 if (this.op != null) {\r
77 issueOperation();\r
78 }\r
79 }\r
80\r
81 public String getName() {\r
82 return this.objName;\r
83 }\r
84\r
85 public void setPackage(String name) {\r
86 log("ShareObject.setPackage(" + name + ")", Project.MSG_VERBOSE);\r
87 this.objClassPackage = name;\r
88 }\r
89\r
90 public String getPackage() {\r
91 return this.objClassPackage;\r
92 }\r
93\r
94 public void setOperation(String opName) {\r
95 log("ShareObject.setOperation(" + opName + ")", Project.MSG_VERBOSE);\r
96 this.op = DataObjectOp.formString(opName);\r
97\r
98 if (this.objName != null) {\r
99 issueOperation();\r
100 }\r
101 }\r
102\r
103 public String getOperation() {\r
104 return this.op.toString();\r
105 }\r
106\r
107 public void issueOperation() {\r
108 if (this.op == DataObjectOp.ADD) {\r
109\r
110 log("ShareObject: adding ... " + this.objName, Project.MSG_VERBOSE);\r
111 objStorage.put(this.objName, this.objInst);\r
112\r
113 } else if (this.op == DataObjectOp.GET) {\r
114\r
115 log("ShareObject: fetching ... " + this.objName,\r
116 Project.MSG_VERBOSE);\r
117 objInst = objStorage.get(objName);\r
118\r
119 } else if (this.op == DataObjectOp.DEL) {\r
120\r
121 log("ShareObject: removing ... " + this.objName,\r
122 Project.MSG_VERBOSE);\r
123 objInst = objStorage.remove(objName);\r
124\r
125 } else {\r
126 throw new BuildException("not supported operation");\r
127 }\r
128 }\r
129\r
130 public Object get() {\r
131 return this.objInst;\r
132 }\r
133\r
134 public static int getObjectNum() {\r
135 return objStorage.size();\r
136 }\r
137\r
138 public static Object add(String objName, Object obj) {\r
139 return objStorage.put(objName, obj);\r
140 }\r
141\r
142 public static Object retrieve(String objName) {\r
143 return objStorage.get(objName);\r
144 }\r
145\r
146 public static Object remove(String objName) {\r
147 return objStorage.remove(objName);\r
148 }\r
149\r
150 public static void empty() {\r
151 objStorage.clear();\r
152 }\r
153}\r
154\r
155class DataObjectOp {\r
156 private static final HashMap<String, DataObjectOp> opMap = new HashMap<String, DataObjectOp>();\r
157\r
158 private final String opName;\r
159\r
160 private DataObjectOp (String name) {\r
161 this.opName = name;\r
162 opMap.put(this.opName, this);\r
163 }\r
164\r
165 public String toString() {\r
166 return opName;\r
167 }\r
168\r
169 public static DataObjectOp formString(String opName) {\r
170 return opMap.get(opName);\r
171 }\r
172\r
173 public static final DataObjectOp ADD = new DataObjectOp("ADD");\r
174\r
175 public static final DataObjectOp GET = new DataObjectOp("GET");\r
176\r
177 public static final DataObjectOp DEL = new DataObjectOp("DEL");\r
178}\r