import org.apache.tools.ant.BuildException;\r
import org.apache.tools.ant.Project;\r
import org.apache.xmlbeans.XmlCursor;\r
-import org.apache.xmlbeans.XmlObject;\r
import org.tianocore.BuildOptionsDocument;\r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.global.SurfaceAreaQuery;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
import org.w3c.dom.Document;\r
import org.w3c.dom.Element;\r
-import org.w3c.dom.Node;\r
\r
/** \r
<p><code>FfsProcess</code> is a class to find the corresponding FFS layout. </p>\r
**/\r
public class FfsProcess {\r
\r
- ///\r
- /// Xml Document Node for corresponding FFS layout\r
- ///\r
- private Node ffs;\r
- \r
private BuildOptionsDocument.BuildOptions.Ffs ffsXmlObject;\r
\r
///\r
**/\r
public boolean initSections(String buildType, Project project, FpdModuleIdentification fpdModuleId) throws BuildException {\r
//\r
- // Firstly, try to find in ModuleSA\r
- //\r
-// BuildOptionsDocument.BuildOptions.Ffs[] ffsArray = SurfaceAreaQuery.getModuleFfs();\r
-// for (int i = 0; i < ffsArray.length; i++) {\r
-// if (isMatch(ffsArray[i].getFfsKey(), buildType)) {\r
-// ffsXmlObject = ffsArray[i];\r
-// return true;\r
-// }\r
-// }\r
- \r
- //\r
- // secondly, try to sections defined in PLATFORM level\r
+ // Try to find Ffs layout from FPD file\r
//\r
SurfaceAreaQuery.push(GlobalData.getFpdBuildOptions());\r
BuildOptionsDocument.BuildOptions.Ffs[] ffsArray = SurfaceAreaQuery.getFpdFfs();\r
//\r
if (buildType == null) {\r
System.out.println("Warning: this module doesn't specify a FfsFormatKey. ");\r
- }\r
- else {\r
+ } else {\r
throw new BuildException("Can't find the FfsFormatKey [" + buildType + "] attribute in the FPD file!"); \r
}\r
\r
- if (ffs == null) {\r
- return false;\r
- } else {\r
- return true;\r
- }\r
+ return false;\r
}\r
\r
/**\r
**/\r
public String[] getGenSectionElements(Document document, String basename, String guid, String targetFilename) {\r
this.basename = basename;\r
- if (ffs == null && ffsXmlObject == null) {\r
+ if (ffsXmlObject == null) {\r
return new String[0];\r
}\r
Vector<String> sectionList = new Vector<String>();\r
XmlCursor cursor = null;\r
try {\r
- if (ffsXmlObject == null) {\r
- cursor = XmlObject.Factory.parse(ffs).newCursor();\r
- }\r
- else {\r
- cursor = ffsXmlObject.newCursor();\r
- }\r
+ cursor = ffsXmlObject.newCursor();\r
} catch (Exception e) {\r
return null;\r
}\r
int mode = MODE_NONE;\r
- Element root = document.createElement("genffsfile");\r
- root.setAttribute("outputDir", "${BIN_DIR}");\r
- root.setAttribute("moduleType", "${MODULE_TYPE}");\r
- root.setAttribute("BaseName", basename);\r
- root.setAttribute("fileGuid", guid);\r
- if (ffsXmlObject == null) {\r
- cursor.toFirstChild();\r
- }\r
+ Element genffsfileEle = document.createElement("genffsfile");\r
+ genffsfileEle.setAttribute("outputDir", "${BIN_DIR}");\r
+ genffsfileEle.setAttribute("moduleType", "${MODULE_TYPE}");\r
+ genffsfileEle.setAttribute("BaseName", basename);\r
+ genffsfileEle.setAttribute("fileGuid", guid);\r
+\r
if (cursor.toFirstChild()) {\r
do {\r
if (cursor.getName().getLocalPart().equalsIgnoreCase("Attribute")) {\r
String name = cursor.getAttributeText(new QName("Name"));\r
String value = cursor.getAttributeText(new QName("Value"));\r
- root.setAttribute(changeAttributeName(name), value);\r
+ genffsfileEle.setAttribute(changeAttributeName(name), value);\r
} else if (cursor.getName().getLocalPart().equalsIgnoreCase("Section")) {\r
cursor.push();\r
- dealSection(mode, document, root, cursor, sectionList);\r
+ dealSection(mode, document, genffsfileEle, cursor, sectionList);\r
cursor.pop();\r
} else if (cursor.getName().getLocalPart().equalsIgnoreCase("Sections")) {\r
cursor.push();\r
- dealSections(mode, document, root, cursor, sectionList);\r
+ dealSections(mode, document, genffsfileEle, cursor, sectionList);\r
cursor.pop();\r
}\r
} while (cursor.toNextSibling());\r
targetEle.appendChild(fileEle);\r
outofdateEle.appendChild(targetEle);\r
Element sequentialEle = document.createElement("sequential");\r
- sequentialEle.appendChild(root);\r
+ sequentialEle.appendChild(genffsfileEle);\r
outofdateEle.appendChild(sequentialEle);\r
ffsNode = outofdateEle;\r
return result;\r