if (moduleSa.getPcdBuildDefinition() == null || moduleSa.getPcdBuildDefinition().getPcdDataList() == null) {\r
continue;\r
}\r
- String ModuleInfo = moduleSa.getModuleGuid() + " " + moduleSa.getModuleVersion() +\r
- " " + moduleSa.getPackageGuid() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList());\r
+ String ModuleInfo = moduleSa.getModuleGuid().toLowerCase() + " " + moduleSa.getModuleVersion() +\r
+ " " + moduleSa.getPackageGuid().toLowerCase() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList());\r
List<PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData> lp = moduleSa.getPcdBuildDefinition().getPcdDataList();\r
ListIterator<PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData> lpi = lp.listIterator();\r
while (lpi.hasNext()) {\r
if (!cursor.isText()) {\r
break;\r
}\r
+ if (cursor.getObject() == null) {\r
+ break;\r
+ }\r
String s = cursor.getTextValue();\r
if (s.matches(regExpNewLineAndSpaces)) {\r
continue;\r
cursor.pop();\r
cursor.removeXml();\r
if (getFrameworkModulesCount() == 0) {\r
- cursor.toParent();\r
- cursor.removeXml();\r
+ cursor.dispose();\r
+ removeElement(getfpdFrameworkModules());\r
+ fpdFrameworkModules = null;\r
+ return;\r
}\r
}\r
cursor.dispose();\r
String[] s = moduleInfo.split(" ");\r
for(int i = 0; i < al.size(); ++i){\r
String consumer = al.get(i);\r
- if (consumer.contains(s[0]) && consumer.contains(s[2])){\r
+ if (consumer.contains(s[0].toLowerCase()) && consumer.contains(s[2].toLowerCase())){\r
String[] consumerPart = consumer.split(" ");\r
if (!consumerPart[4].equals(s[4])) {\r
continue;\r
//\r
// change item type while not updating dynPcdData????\r
//\r
- pcdData.setItemType(PcdItemTypes.Enum.forString(itemType));\r
- if(pcdData.getDatumType().equals("VOID*")) {\r
+ if (itemType != null) {\r
+ pcdData.setItemType(PcdItemTypes.Enum.forString(itemType));\r
+ }\r
+ \r
+ if(pcdData.getDatumType().equals("VOID*") && maxSize != null) {\r
pcdData.setMaxDatumSize(new Integer(maxSize));\r
}\r
- pcdData.setValue(value);\r
- defaultPcdValue.put(cName + " " + tsGuid, value);\r
+ //\r
+ // if value input is null, keep old value untouched.\r
+ //\r
+ if (value != null) {\r
+ pcdData.setValue(value);\r
+ defaultPcdValue.put(cName + " " + tsGuid, value);\r
+ }\r
+ \r
break;\r
}\r
}\r
if (pcdBuildData.getCName().equals(cName) && pcdBuildData.getTokenSpaceGuidCName().equals(tsGuid)) {\r
\r
if (getDynamicPcdBuildDataCount() == 1) {\r
- cursor.toParent();\r
+ cursor.dispose();\r
+ removeElement(o);\r
+ fpdDynPcdBuildDefs = null;\r
+ return;\r
}\r
cursor.removeXml();\r
cursor.dispose();\r
public int getDynamicPcdSkuInfoCount(int i){\r
if (fpdRoot.getDynamicPcdBuildDefinitions() == null || fpdRoot.getDynamicPcdBuildDefinitions().getPcdBuildDataList() == null \r
|| fpdRoot.getDynamicPcdBuildDefinitions().getPcdBuildDataList().size() == 0) {\r
+ removeElement(getfpdDynPcdBuildDefs());\r
+ fpdDynPcdBuildDefs = null;\r
return 0;\r
}\r
\r
\r
public void updateDynamicPcdBuildDataSkuInfo(String id, String varName, String varGuid, String varOffset, \r
String hiiDefault, String vpdOffset, String value, int i){\r
-// if (getfpdDynPcdBuildDefs().getPcdBuildDataList() == null || getfpdDynPcdBuildDefs().getPcdBuildDataList().size() == 0) {\r
-// return;\r
-// }\r
+ if (getfpdDynPcdBuildDefs().getPcdBuildDataList() == null || getfpdDynPcdBuildDefs().getPcdBuildDataList().size() == 0) {\r
+ removeElement(getfpdDynPcdBuildDefs());\r
+ fpdDynPcdBuildDefs = null;\r
+ return;\r
+ }\r
\r
XmlCursor cursor = getfpdDynPcdBuildDefs().newCursor();\r
if (cursor.toFirstChild()) {\r
}\r
\r
public void removeModuleInBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
- if (getUserExtsIncModCount(fvName) > 0) {\r
+ //\r
+ // if there is only one module before remove operation, the whole user extension should be removed.\r
+ //\r
+ int moduleAmount = getUserExtsIncModCount(fvName);\r
+ if (moduleAmount == 1) {\r
+ removeBuildOptionsUserExtensions(fvName);\r
+ return;\r
+ }\r
+ \r
+ if (moduleAmount > 1) {\r
\r
XmlCursor cursor = getfpdBuildOpts().newCursor();\r
QName elementUserExts = new QName (xmlNs, "UserExtensions");\r
}\r
}\r
\r
+ public void addModuleIntoBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
+ if (moduleInBuildOptionsUserExtensions (fvName, moduleGuid, moduleVersion, packageGuid, packageVersion, arch)) {\r
+ return;\r
+ }\r
+ ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator();\r
+ QName elementIncludeModules = new QName(xmlNs, "IncludeModules");\r
+ QName elementModule = new QName(xmlNs, "Module");\r
+ while (li.hasNext()) {\r
+ UserExtensionsDocument.UserExtensions ues = li.next();\r
+ if (!ues.getUserID().equals("IMAGES")) {\r
+ continue;\r
+ }\r
+ XmlCursor cursor = ues.newCursor();\r
+ cursor.toFirstChild();\r
+ String elementName = cursor.getTextValue();\r
+ if (elementName.equals(fvName)) {\r
+ cursor.toNextSibling(elementIncludeModules);\r
+ cursor.toLastChild();\r
+ cursor.toEndToken();\r
+ cursor.toNextToken();\r
+ cursor.beginElement(elementModule);\r
+ cursor.insertAttributeWithValue("ModuleGuid", moduleGuid);\r
+ if (!moduleVersion.equals("null") && moduleVersion.length() != 0) {\r
+ cursor.insertAttributeWithValue("ModuleVersion", moduleVersion);\r
+ }\r
+ cursor.insertAttributeWithValue("PackageGuid", packageGuid);\r
+ if (!packageVersion.equals("null") && packageVersion.length() != 0) {\r
+ cursor.insertAttributeWithValue("PackageVersion", packageVersion);\r
+ }\r
+ \r
+ cursor.insertAttributeWithValue("Arch", arch);\r
+ cursor.dispose();\r
+ return;\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ }\r
+ \r
public void genBuildOptionsUserDefAntTask (String id, String fileName, String execOrder) {\r
UserDefinedAntTasksDocument.UserDefinedAntTasks udats = getfpdBuildOpts().getUserDefinedAntTasks();\r
if (udats == null) {\r
if (sections == null){\r
sections = ffs.addNewSections();\r
}\r
- sections.addNewSections().setEncapsulationType(encapType);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2 sections2 = sections.addNewSections();\r
+ sections2.setEncapsulationType(encapType);\r
+ sections2.addNewSection().setSectionType(EfiSectionType.Enum.forString("EFI_SECTION_PE32"));\r
}\r
\r
public void removeBuildOptionsFfsSectionsSections(int i, int j) {\r
ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section> li = sections2.getSectionList().listIterator();\r
while(li.hasNext()) {\r
BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section section = li.next();\r
- if (section.isSetSectionType()) {\r
- al.add(section.getSectionType().toString());\r
- }\r
+// if (section.isSetSectionType()) {\r
+ al.add(section.getSectionType()+"");\r
+// }\r
\r
}\r
}\r
if (ffs.getSections().getSectionList() != null){\r
ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Sections.Section> li = ffs.getSections().getSectionList().listIterator();\r
while (li.hasNext()) {\r
- firstLevelSection.add(li.next().getSectionType().toString());\r
+ firstLevelSection.add(li.next().getSectionType()+"");\r
}\r
}\r
if (ffs.getSections().getSectionsList() != null) {\r
* @param name\r
* @param value\r
*/\r
- public void setTypedNamedFvImageNameValue (String fvName, String type, String name, String value) {\r
+ public void setTypedNamedFvImageNameValue (String fvName, String type, String name, String value, String newName) {\r
boolean fvImageExists = false;\r
- if (getfpdFlash().getFvImages() == null) {\r
- return;\r
- }\r
- List<FvImagesDocument.FvImages.FvImage> l = getfpdFlash().getFvImages().getFvImageList();\r
- if (l == null) {\r
- return;\r
- }\r
- ListIterator li = l.listIterator();\r
- while(li.hasNext()) {\r
- FvImagesDocument.FvImages.FvImage fi = (FvImagesDocument.FvImages.FvImage)li.next();\r
- if (!fi.getType().toString().equals(type) && !type.equals("ALL")) {\r
- continue;\r
- }\r
- if (!fi.getFvImageNamesList().contains(fvName)) {\r
- continue;\r
+ if (getfpdFlash().getFvImages() != null) {\r
+\r
+ List<FvImagesDocument.FvImages.FvImage> l = getfpdFlash().getFvImages().getFvImageList();\r
+ if (l != null) {\r
+ ListIterator li = l.listIterator();\r
+ while (li.hasNext()) {\r
+ FvImagesDocument.FvImages.FvImage fi = (FvImagesDocument.FvImages.FvImage) li.next();\r
+ if (!fi.getType().toString().equals(type) && !type.equals("ALL")) {\r
+ continue;\r
+ }\r
+ if (!fi.getFvImageNamesList().contains(fvName)) {\r
+ continue;\r
+ }\r
+ fvImageExists = true;\r
+ setFvImagesFvImageNameValue(fi, name, value, newName);\r
+ }\r
}\r
- fvImageExists = true;\r
- setFvImagesFvImageNameValue (fi, name, value, null);\r
}\r
- \r
+\r
if (!fvImageExists) {\r
HashMap<String, String> map = new HashMap<String, String>();\r
map.put(name, value);\r
- genFvImagesFvImage(new String[]{fvName}, type, map);\r
+ genFvImagesFvImage(new String[] { fvName }, type, map);\r
}\r
}\r
\r
FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = fi.addNewFvImageOptions().addNewNameValue();\r
nv.setName(name);\r
nv.setValue(value);\r
- if (newName != null) {\r
+ if (newName != null && !newName.equals(name)) {\r
nv.setName(newName);\r
}\r
return;\r
FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = (FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue)cursor.getObject();\r
if (nv.getName().equals(name)) {\r
nv.setValue(value);\r
- if (newName != null) {\r
+ if (newName != null && !newName.equals(name)) {\r
nv.setName(newName);\r
}\r
cursor.dispose();\r
FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = fi.getFvImageOptions().addNewNameValue();\r
nv.setName(name);\r
nv.setValue(value);\r
- if (newName != null) {\r
+ if (newName != null && !newName.equals(name)) {\r
nv.setName(newName);\r
}\r
cursor.dispose();\r