import java.io.File;\r
\r
import org.apache.xmlbeans.XmlCursor;\r
+import org.apache.xmlbeans.XmlObject;\r
import org.apache.xmlbeans.XmlOptions;\r
import org.tianocore.FrameworkDatabaseDocument;\r
import org.tianocore.ModuleSurfaceAreaDocument;\r
\r
**/\r
public static void saveMsaFile(String path, ModuleSurfaceArea msa) throws Exception {\r
+ //\r
+ // Remove all empty top level elements\r
+ //\r
+ XmlObject o = msa.getLibraryClassDefinitions();\r
+ if (o != null) {\r
+ if (msa.getLibraryClassDefinitions().getLibraryClassList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getSourceFiles();\r
+ if (o != null) {\r
+ if (msa.getSourceFiles().getFilenameList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getPackageDependencies();\r
+ if (o != null) {\r
+ if (msa.getPackageDependencies().getPackageList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getProtocols();\r
+ if (o != null) {\r
+ if (msa.getProtocols().getProtocolList().size() <= 0\r
+ && msa.getProtocols().getProtocolNotifyList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getEvents();\r
+ if (o != null) {\r
+ if (msa.getEvents().getCreateEvents() != null || msa.getEvents().getSignalEvents() != null) {\r
+ if (msa.getEvents().getCreateEvents() != null && msa.getEvents().getCreateEvents().getEventTypesList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ if (msa.getEvents().getSignalEvents() != null && msa.getEvents().getSignalEvents().getEventTypesList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose(); \r
+ }\r
+ } else {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getHobs();\r
+ if (o != null) {\r
+ if (msa.getHobs().getHobTypesList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getPPIs();\r
+ if (o != null) {\r
+ if (msa.getPPIs().getPpiList().size() <= 0 && msa.getPPIs().getPpiNotifyList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getVariables();\r
+ if (o != null) {\r
+ if (msa.getVariables().getVariableList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getBootModes();\r
+ if (o != null) {\r
+ if (msa.getBootModes().getBootModeList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getSystemTables();\r
+ if (o != null) {\r
+ if (msa.getSystemTables().getSystemTableCNamesList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getDataHubs();\r
+ if (o != null) {\r
+ if (msa.getDataHubs().getDataHubRecordList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getHiiPackages();\r
+ if (o != null) {\r
+ if (msa.getHiiPackages().getHiiPackageList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getGuids();\r
+ if (o != null) {\r
+ if (msa.getGuids().getGuidCNamesList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getExterns();\r
+ if (o != null) {\r
+ if (msa.getExterns().getExternList().size() <= 0 && msa.getExterns().getSpecificationList().size() <= 0\r
+ && msa.getExterns().getPcdIsDriver() == null) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
+ o = msa.getPcdCoded();\r
+ if (o != null) {\r
+ if (msa.getPcdCoded().getPcdEntryList().size() <= 0) {\r
+ XmlCursor xmlCursor = o.newCursor();\r
+ xmlCursor.removeXml();\r
+ xmlCursor.dispose();\r
+ }\r
+ }\r
+\r
ModuleSurfaceAreaDocument msaDoc = ModuleSurfaceAreaDocument.Factory.newInstance();\r
File f = new File(path);\r
\r
//\r
dbDoc.addNewFrameworkDatabase();\r
dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r
- \r
+\r
//\r
//Save the file\r
//\r