- /**\r
- * Retrieve ModuleEntryPoint names\r
- * \r
- * @returns ModuleEntryPoint name list if elements are found at the known\r
- * xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getModuleEntryPointArray() {\r
- String[] xPath = new String[] { "/Extern/ModuleEntryPoint" };\r
-\r
- XmlObject[] returns = get("Externs", xPath);\r
-\r
- if (returns != null && returns.length > 0) {\r
- String[] entryPoints = new String[returns.length];\r
-\r
- for (int i = 0; i < returns.length; ++i) {\r
- entryPoints[i] = ((XmlNormalizedString) returns[i])\r
- .getStringValue();\r
- }\r
-\r
- return entryPoints;\r
- }\r
-\r
- return null;\r
- }\r
-\r
- \r
- \r
-\r
- /**\r
- * Retrieve ModuleUnloadImage names\r
- * \r
- * @returns ModuleUnloadImage name list if elements are found at the known\r
- * xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getModuleUnloadImageArray() {\r
- String[] xPath = new String[] { "/Extern/ModuleUnloadImage" };\r
-\r
- XmlObject[] returns = get("Externs", xPath);\r
- if (returns != null && returns.length > 0) {\r
- String[] stringArray = new String[returns.length];\r
- XmlNormalizedString[] doc = (XmlNormalizedString[]) returns;\r
-\r
- for (int i = 0; i < returns.length; ++i) {\r
- stringArray[i] = doc[i].getStringValue();\r
- }\r
-\r
- return stringArray;\r
- }\r
-\r
- return null;\r
- }\r
-\r
- /**\r
- * Retrieve Extern\r
- * \r
- * @returns Extern objects list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static ExternsDocument.Externs.Extern[] getExternArray() {\r
- String[] xPath = new String[] { "/Extern" };\r
-\r
- XmlObject[] returns = get("Externs", xPath);\r
- if (returns != null && returns.length > 0) {\r
- return (ExternsDocument.Externs.Extern[]) returns;\r
- }\r
-\r
- return null;\r
- }\r
- \r
- /**\r
- * Retrieve Library instance information\r
- * \r
- * @param arch\r
- * Architecture name\r
- * @param usage\r
- * Library instance usage\r
- * \r
- * @returns library instance name list if elements are found at the known\r
- * xpath\r
- * @returns null if nothing is there\r
- */\r
- public static ModuleIdentification[] getLibraryInstance(String arch) {\r
- String[] xPath;\r
- String saGuid = null;\r
- String saVersion = null;\r
- String pkgGuid = null;\r
- String pkgVersion = null;\r
-\r
- if (arch == null || arch.equalsIgnoreCase("")) {\r
- xPath = new String[] { "/Instance" };\r
- } else {\r
- xPath = new String[] { "/Instance[not(@SupArchList) or @SupArchList='"\r
- + arch + "']" };\r
- }\r
-\r
- XmlObject[] returns = get("Libraries", xPath);\r
- if (returns == null || returns.length == 0) {\r
- return new ModuleIdentification[0];\r
- }\r
-\r
- ModuleIdentification[] saIdList = new ModuleIdentification[returns.length];\r
- for (int i = 0; i < returns.length; i++) {\r
- LibrariesDocument.Libraries.Instance library = (LibrariesDocument.Libraries.Instance) returns[i];\r
- saGuid = library.getModuleGuid();\r
- saVersion = library.getModuleVersion();\r
-\r
- pkgGuid = library.getPackageGuid();\r
- pkgVersion = library.getPackageVersion();\r
-\r
- ModuleIdentification saId = new ModuleIdentification(null, saGuid,\r
- saVersion);\r
- PackageIdentification pkgId = new PackageIdentification(null,\r
- pkgGuid, pkgVersion);\r
- saId.setPackage(pkgId);\r
-\r
- saIdList[i] = saId;\r
-\r
- }\r
- return saIdList;\r
- }\r
-\r
- // /\r
- // / This method is used for retrieving the elements information which has\r
- // / CName sub-element\r
- // /\r
- private static String[] getCNames(String from, String xPath[]) {\r
- XmlObject[] returns = get(from, xPath);\r
- if (returns == null || returns.length == 0) {\r
- return null;\r
- }\r
-\r
- String[] strings = new String[returns.length];\r
- for (int i = 0; i < returns.length; ++i) {\r
- // TBD\r
- // strings[i] = ((CName) returns[i]).getStringValue();\r
- }\r
-\r
- return strings;\r
- }\r
-\r
- /**\r
- * Retrive library's constructor name\r
- * \r
- * @returns constructor name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String getLibConstructorName() {\r
- String[] xPath = new String[] { "/Extern/Constructor" };\r
-\r
- XmlObject[] returns = get("Externs", xPath);\r
- if (returns != null && returns.length > 0) {\r
- // CName constructor = (CName) returns[0];\r
- // return constructor.getStringValue();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- /**\r
- * Retrive library's destructor name\r
- * \r
- * @returns destructor name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String getLibDestructorName() {\r
- String[] xPath = new String[] { "/Extern/Destructor" };\r
-\r
- XmlObject[] returns = get("Externs", xPath);\r
- if (returns != null && returns.length > 0) {\r
- // CName destructor = (CName) returns[0];\r
- // return destructor.getStringValue();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- /**\r
- * Retrive DriverBinding names\r
- * \r
- * @returns DriverBinding name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getDriverBindingArray() {\r
- String[] xPath = new String[] { "/Extern/DriverBinding" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrive ComponentName names\r
- * \r
- * @returns ComponentName name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getComponentNameArray() {\r
- String[] xPath = new String[] { "/Extern/ComponentName" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrive DriverConfig names\r
- * \r
- * @returns DriverConfig name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getDriverConfigArray() {\r
- String[] xPath = new String[] { "/Extern/DriverConfig" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrive DriverDiag names\r
- * \r
- * @returns DriverDiag name list if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getDriverDiagArray() {\r
- String[] xPath = new String[] { "/Extern/DriverDiag" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrive SetVirtualAddressMapCallBack names\r
- * \r
- * @returns SetVirtualAddressMapCallBack name list if elements are found at\r
- * the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getSetVirtualAddressMapCallBackArray() {\r
- String[] xPath = new String[] { "/Extern/SetVirtualAddressMapCallBack" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrive ExitBootServicesCallBack names\r
- * \r
- * @returns ExitBootServicesCallBack name list if elements are found at the\r
- * known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[] getExitBootServicesCallBackArray() {\r
- String[] xPath = new String[] { "/Extern/ExitBootServicesCallBack" };\r
- return getCNames("Externs", xPath);\r
- }\r
-\r
- /**\r
- * Retrieve module surface area file information\r
- * \r
- * @returns ModuleSA objects list if elements are found at the known xpath\r
- * @returns Empty ModuleSA list if nothing is there\r
- */\r
- public static Map<FpdModuleIdentification, Map<String, XmlObject>> getFpdModules() {\r
- String[] xPath = new String[] { "/FrameworkModules/ModuleSA" };\r
- XmlObject[] result = get("FrameworkPlatformDescription", xPath);\r
- String arch = null;\r
- String fvBinding = null;\r
- String saGuid = null;\r
- String saVersion = null;\r
- String pkgGuid = null;\r
- String pkgVersion = null;\r
-\r
- Map<FpdModuleIdentification, Map<String, XmlObject>> fpdModuleMap = new LinkedHashMap<FpdModuleIdentification, Map<String, XmlObject>>();\r
-\r
- if (result == null) {\r
- return fpdModuleMap;\r
- }\r
-\r
- for (int i = 0; i < result.length; i++) {\r
- //\r
- // Get Fpd SA Module element node and add to xmlObjectMap.\r
- //\r
- Map<String, XmlObject> xmlObjectMap = new HashMap<String, XmlObject>();\r
- ModuleSADocument.ModuleSA moduleSA = (ModuleSADocument.ModuleSA) result[i];\r
- if (((ModuleSADocument.ModuleSA) result[i]).getLibraries() != null) {\r
- xmlObjectMap.put("Libraries", moduleSA.getLibraries());\r
- }\r
- if (((ModuleSADocument.ModuleSA) result[i]).getPcdBuildDefinition() != null) {\r
- xmlObjectMap.put("PcdBuildDefinition", moduleSA\r
- .getPcdBuildDefinition());\r
- }\r
- if (((ModuleSADocument.ModuleSA) result[i])\r
- .getModuleSaBuildOptions() != null) {\r
- xmlObjectMap.put("ModuleSaBuildOptions", moduleSA\r
- .getModuleSaBuildOptions());\r
- }\r
-\r
- //\r
- // Get Fpd SA Module attribute and create FpdMoudleIdentification.\r
- //\r
- arch = moduleSA.getSupArchList().toString();\r
-\r
- // TBD\r
- fvBinding = null;\r
- saVersion = ((ModuleSADocument.ModuleSA) result[i])\r
- .getModuleVersion();\r
-\r
- saGuid = moduleSA.getModuleGuid();\r
- pkgGuid = moduleSA.getPackageGuid();\r
- pkgVersion = moduleSA.getPackageVersion();\r
-\r
- //\r
- // Create Module Identification which have class member of package\r
- // identification.\r
- //\r
- PackageIdentification pkgId = new PackageIdentification(null,\r
- pkgGuid, pkgVersion);\r
- ModuleIdentification saId = new ModuleIdentification(null, saGuid,\r
- saVersion);\r
-\r
- saId.setPackage(pkgId);\r
-\r
- //\r
- // Create FpdModule Identification which have class member of module\r
- // identification\r
- //\r
- FpdModuleIdentification fpdSaId = new FpdModuleIdentification(saId,\r
- arch);\r
- if (arch != null) {\r
- fpdSaId.setArch(arch);\r
- }\r
- if (fvBinding != null) {\r
- fpdSaId.setFvBinding(fvBinding);\r
- }\r
-\r
- //\r
- // Put element to Map<FpdModuleIdentification, Map<String,\r
- // XmlObject>>.\r
- //\r
- fpdModuleMap.put(fpdSaId, xmlObjectMap);\r
- }\r
- return fpdModuleMap;\r
- }\r
-\r
- /**\r
- * Retrieve valid image names\r
- * \r
- * @returns valid iamges name list if elements are found at the known xpath\r
- * @returns empty list if nothing is there\r
- */\r
- public static String[] getFpdValidImageNames() {\r
- String[] xPath = new String[] { "/PlatformDefinitions/FlashDeviceDefinitions/FvImages/FvImage[@Type='ValidImageNames']/FvImageNames" };\r
-\r
- XmlObject[] queryResult = get("FrameworkPlatformDescription", xPath);\r
- if (queryResult == null) {\r
- return new String[0];\r
- }\r
-\r
- String[] result = new String[queryResult.length];\r
- for (int i = 0; i < queryResult.length; i++) {\r
- result[i] = ((XmlString) queryResult[i]).getStringValue();\r
- }\r
-\r
- return result;\r
- }\r
-\r
- \r
-\r
- public static XmlObject getFpdBuildOptions() {\r
- String[] xPath = new String[] { "/BuildOptions" };\r
-\r
- XmlObject[] queryResult = get("FrameworkPlatformDescription", xPath);\r
-\r
- if (queryResult == null || queryResult.length == 0) {\r
- return null;\r
- }\r
- return queryResult[0];\r
- }\r
-\r
- public static PlatformIdentification getFpdHeader() {\r
- String[] xPath = new String[] { "/PlatformHeader" };\r
-\r
- XmlObject[] returns = get("FrameworkPlatformDescription", xPath);\r
-\r
- if (returns == null || returns.length == 0) {\r
- return null;\r
- }\r
- PlatformHeaderDocument.PlatformHeader header = (PlatformHeaderDocument.PlatformHeader) returns[0];\r
-\r
- String name = header.getPlatformName();\r
-\r
- String guid = header.getGuidValue();\r
-\r
- String version = header.getVersion();\r
-\r
- return new PlatformIdentification(name, guid, version);\r
- }\r
-\r
- /**\r
- * Retrieve flash definition file name\r
- * \r
- * @returns file name if elements are found at the known xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String getFlashDefinitionFile() {\r
- String[] xPath = new String[] { "/PlatformDefinitions/FlashDeviceDefinitions/FlashDefinitionFile" };\r
-\r
- XmlObject[] queryResult = get("FrameworkPlatformDescription", xPath);\r
- if (queryResult == null || queryResult.length == 0) {\r
- return null;\r
- }\r
-\r
- FileNameConvention filename = (FileNameConvention) queryResult[queryResult.length - 1];\r
- return filename.getStringValue();\r
- }\r
-\r
- /**\r
- * Retrieve FV image component options\r
- * \r
- * @param fvName\r
- * FV image name\r
- * \r
- * @returns name/value pairs list if elements are found at the known xpath\r
- * @returns empty list if nothing is there\r
- */\r
- public static String[][] getFpdComponents(String fvName) {\r
- String[] xPath = new String[] { "/PlatformDefinitions/FlashDeviceDefinitions/DataRegions/FvDataRegion[@Name='"\r
- + fvName.toUpperCase() + "']/DataId" };\r
-\r
- XmlObject[] queryResult = get("FrameworkPlatformDescription", xPath);\r
- if (queryResult == null) {\r
- return new String[0][];\r
- }\r
-\r
- ArrayList<String[]> list = new ArrayList<String[]>();\r
- for (int i = 0; i < queryResult.length; i++) {\r
- DataIdDocument.DataId item = (DataIdDocument.DataId) queryResult[i];\r
- list\r
- .add(new String[] { item.getStringValue(),\r
- item.getDataSize() });\r
- }\r
-\r
- String[][] result = new String[list.size()][2];\r
- for (int i = 0; i < list.size(); i++) {\r
- result[i][0] = list.get(i)[0];\r
- result[i][1] = list.get(i)[1];\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * Retrieve PCD tokens\r
- * \r
- * @returns CName/ItemType pairs list if elements are found at the known\r
- * xpath\r
- * @returns null if nothing is there\r
- */\r
- public static String[][] getPcdTokenArray() {\r
- String[] xPath = new String[] { "/PcdData" };\r
-\r
- XmlObject[] returns = get("PCDs", xPath);\r
- if (returns == null || returns.length == 0) {\r
- return null;\r
- }\r
-\r
- // PcdCoded.PcdData[] pcds = (PcdCoded.PcdData[]) returns;\r
- // String[][] result = new String[pcds.length][2];\r
- // for (int i = 0; i < returns.length; ++i) {\r
- // if (pcds[i].getItemType() != null) {\r
- // result[i][1] = pcds[i].getItemType().toString();\r
- // } else {\r
- // result[i][1] = null;\r
- // }\r
- // result[i][0] = pcds[i].getCName();\r
- // }\r
-\r
- return null;\r
- }\r
-\r
- \r
-\r
- /**\r
- * Retrieve MSA header\r
- * \r
- * @return\r
- * @return\r
- */\r
- public static ModuleIdentification getMsaHeader() {\r
- String[] xPath = new String[] { "/" };\r
- XmlObject[] returns = get("MsaHeader", xPath);\r
-\r
- if (returns == null || returns.length == 0) {\r
- return null;\r
- }\r
-\r
- MsaHeader msaHeader = (MsaHeader) returns[0];\r
- //\r
- // Get BaseName, ModuleType, GuidValue, Version\r
- // which in MsaHeader.\r
- //\r
- String name = msaHeader.getModuleName();\r
- String moduleType = "";\r
- if (msaHeader.getModuleType() != null) {\r
- moduleType = msaHeader.getModuleType().toString();\r