]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Added to fix the issue of many property override warning when build with -v option...
authorjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 18 Aug 2006 00:54:57 +0000 (00:54 +0000)
committerjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 18 Aug 2006 00:54:57 +0000 (00:54 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1318 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java [new file with mode: 0644]

diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java b/Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java
new file mode 100644 (file)
index 0000000..50a2ead
--- /dev/null
@@ -0,0 +1,100 @@
+package org.tianocore.build.global;\r
+\r
+import java.util.HashMap;\r
+import java.util.Hashtable;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+import java.util.Stack;\r
+\r
+import org.apache.tools.ant.Project;\r
+import org.apache.tools.ant.PropertyHelper;\r
+\r
+public class PropertyManager {\r
+    private static Stack<HashMap<String, String>> propertyTableStack = new Stack<HashMap<String, String>>();\r
+    private static HashMap<String, String> orgPropertyTable = null;\r
+    private static HashMap<String, String> oldPropertyTable = null;\r
+    private static HashMap<String, String> bakPropertyTable = null;\r
+    private static Project prj = null;\r
+\r
+    public static void save() {\r
+        if (orgPropertyTable == null) {\r
+            Hashtable prjProperties = prj.getProperties();\r
+            orgPropertyTable = new HashMap<String, String>();\r
+\r
+            Set keys = prjProperties.keySet();\r
+            Iterator iter = keys.iterator();\r
+            while (iter.hasNext()) {\r
+                String item = (String)iter.next();\r
+                orgPropertyTable.put(item, (String)prjProperties.get(item));\r
+            }\r
+        }\r
+\r
+        if (bakPropertyTable != null) {\r
+            propertyTableStack.push(bakPropertyTable);\r
+            oldPropertyTable = bakPropertyTable;\r
+        } else {\r
+            oldPropertyTable = orgPropertyTable;\r
+        }\r
+        bakPropertyTable = new HashMap<String, String>();\r
+    }\r
+\r
+    public static void restore() {\r
+        if (bakPropertyTable == null) {\r
+            return;\r
+        }\r
+        Set keys = bakPropertyTable.keySet();\r
+\r
+        Iterator iter = keys.iterator();\r
+        while (iter.hasNext()) {\r
+            String name = (String)iter.next();\r
+            String value = (String)bakPropertyTable.get(name);\r
+            setProperty(prj, name, value);\r
+        }\r
+\r
+        if (propertyTableStack.size() > 0) {\r
+            bakPropertyTable = (HashMap<String, String>)propertyTableStack.pop();\r
+        } else {\r
+            bakPropertyTable = null;\r
+        }\r
+\r
+        if (propertyTableStack.size() == 0) {\r
+            oldPropertyTable = orgPropertyTable;\r
+        } else {\r
+            oldPropertyTable = (HashMap<String, String>)propertyTableStack.peek();\r
+        }\r
+    }\r
+\r
+    public static void setProject(Project prj) {\r
+        PropertyManager.prj = prj;\r
+    }\r
+\r
+    public static void setProperty(String name, String value) {\r
+        if (prj == null) {\r
+            return;\r
+        }\r
+\r
+        setProperty(prj, name, value);\r
+\r
+        if (oldPropertyTable == null || bakPropertyTable == null) {\r
+            return;\r
+        }\r
+\r
+        String oldValue = oldPropertyTable.get(name);\r
+        if (oldValue == null) {\r
+            oldValue = value;\r
+        }\r
+        bakPropertyTable.put(name, oldValue);\r
+    }\r
+\r
+    public static void setProperty(Project project, String name, String value) {\r
+        if (project == null) {\r
+            if (prj == null) {\r
+                return;\r
+            }\r
+            project = prj;\r
+        }\r
+\r
+        PropertyHelper.getPropertyHelper(project).setProperty(null, name, value, false);\r
+    }\r
+}\r
+\r