- public synchronized static Map<String, XmlObject> getNativeMsa(String moduleName) throws BuildException {\r
- if (nativeMsa.containsKey(moduleName)) {\r
- return nativeMsa.get(moduleName);\r
- }\r
- String msaFilename = getMsaFilename(moduleName);\r
- File msaFile = new File(msaFilename);\r
- if (!msaFile.exists()) {\r
- throw new BuildException("Info: Surface Area file [" + msaFile.getPath() + "] can't found.");\r
- }\r
- SurfaceAreaParser surfaceAreaParser = new SurfaceAreaParser();\r
- Map<String, XmlObject> map = surfaceAreaParser.parseFile(msaFile);\r
- nativeMsa.put(moduleName, map);\r
+ public synchronized static Map<String, XmlObject> getNativeMsa(ModuleIdentification moduleId) throws BuildException {\r
+ if (nativeMsa.containsKey(moduleId)) {\r
+ return nativeMsa.get(moduleId);\r
+ }\r
+ File msaFile = getMsaFile(moduleId);\r
+ Map<String, XmlObject> msaMap = getNativeMsa(msaFile);\r
+ nativeMsa.put(moduleId, msaMap);\r
+ return msaMap;\r
+ }\r
+ \r
+ public synchronized static Map<String, XmlObject> getNativeMsa(File msaFile) throws BuildException {\r
+ if (! msaFile.exists()) {\r
+ throw new BuildException("Surface Area file [" + msaFile.getPath() + "] can't found.");\r
+ }\r
+ try {\r
+ ModuleSurfaceAreaDocument doc = (ModuleSurfaceAreaDocument)XmlObject.Factory.parse(msaFile);\r
+ //\r
+ // Validate File if they accord with XML Schema\r
+ //\r
+ if ( ! doc.validate()){\r
+ throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] is invalid.");\r
+ }\r
+ //\r
+ // parse MSA file\r
+ //\r
+ ModuleSurfaceArea msa= doc.getModuleSurfaceArea();\r
+ Map<String, XmlObject> msaMap = new HashMap<String, XmlObject>();\r
+ msaMap.put("MsaHeader", cloneXmlObject(msa.getMsaHeader(), true));\r
+ msaMap.put("ModuleDefinitions", cloneXmlObject(msa.getModuleDefinitions(), true));\r
+ msaMap.put("LibraryClassDefinitions", cloneXmlObject(msa.getLibraryClassDefinitions(), true));\r
+ msaMap.put("SourceFiles", cloneXmlObject(msa.getSourceFiles(), true));\r
+ msaMap.put("PackageDependencies", cloneXmlObject(msa.getPackageDependencies(), true));\r
+ msaMap.put("Protocols", cloneXmlObject(msa.getProtocols(), true));\r
+ msaMap.put("PPIs", cloneXmlObject(msa.getPPIs(), true));\r
+ msaMap.put("Guids", cloneXmlObject(msa.getGuids(), true));\r
+ msaMap.put("Externs", cloneXmlObject(msa.getExterns(), true));\r
+ msaMap.put("PcdCoded", cloneXmlObject(msa.getPcdCoded(), true));\r
+ return msaMap;\r
+ }\r
+ catch (Exception ex){\r
+ throw new BuildException(ex.getMessage());\r
+ }\r
+ }\r
+ \r
+ public static Map<String, XmlObject> getFpdBuildOptions() {\r
+ Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
+ map.put("BuildOptions", fpdBuildOptions);\r