2 SurfaceAreaParser class.
4 SurfaceAreaParser class is used to parse module surface area include both
7 Copyright (c) 2006, Intel Corporation
8 All rights reserved. This program and the accompanying materials
9 are licensed and made available under the terms and conditions of the BSD License
10 which accompanies this distribution. The full text of the license may be found at
11 http://opensource.org/licenses/bsd-license.php
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 package org
.tianocore
.build
.global
;
19 import java
.util
.HashMap
;
22 import org
.apache
.tools
.ant
.BuildException
;
23 import org
.apache
.xmlbeans
.XmlObject
;
24 import org
.tianocore
.LibraryModuleBuildDescriptionDocument
;
25 import org
.tianocore
.LibraryModuleSurfaceAreaDocument
;
26 import org
.tianocore
.ModuleBuildDescriptionDocument
;
27 import org
.tianocore
.ModuleSurfaceAreaDocument
;
30 This class is used to parse module surface area (MSA & MBD) include both
35 public class SurfaceAreaParser
{
38 Using XmlBeans to parse and valid surface area file.
40 @param surfaceAreaFile the surface area file to parse
41 @return top level elements and its value mapping information
42 @throws BuildException
43 If surface area is not well-formed or invalid
45 public Map
<String
, XmlObject
> parseFile(File surfaceAreaFile
) throws BuildException
{
46 Map
<String
, XmlObject
> map
= new HashMap
<String
, XmlObject
>();
48 XmlObject sadoc
= XmlObject
.Factory
.parse(surfaceAreaFile
);
49 // Validate File if they obey XML Schema
51 if ( ! sadoc
.validate()){
52 throw new BuildException("Surface Area file [" + surfaceAreaFile
.getPath() + "] is invalid.");
54 if (sadoc
instanceof ModuleSurfaceAreaDocument
){
55 parseFile((ModuleSurfaceAreaDocument
) sadoc
, map
);
57 else if(sadoc
instanceof ModuleBuildDescriptionDocument
){
58 parseFile((ModuleBuildDescriptionDocument
) sadoc
, map
);
60 else if(sadoc
instanceof LibraryModuleSurfaceAreaDocument
){
61 parseFile((LibraryModuleSurfaceAreaDocument
) sadoc
, map
);
63 else if(sadoc
instanceof LibraryModuleBuildDescriptionDocument
){
64 parseFile((LibraryModuleBuildDescriptionDocument
) sadoc
, map
);
68 throw new BuildException(ex
.getMessage());
77 @param doc top level surface area XML document
78 @param msaMap the map to store the result
80 private void parseFile(ModuleSurfaceAreaDocument doc
, Map
<String
, XmlObject
> msaMap
) {
81 msaMap
.put("MsaHeader", doc
.getModuleSurfaceArea().getMsaHeader());
82 msaMap
.put("LibraryClassDefinitions", doc
.getModuleSurfaceArea()
83 .getLibraryClassDefinitions());
84 msaMap
.put("SourceFiles", doc
.getModuleSurfaceArea().getSourceFiles());
85 msaMap
.put("Includes", doc
.getModuleSurfaceArea().getIncludes());
86 msaMap
.put("Protocols", doc
.getModuleSurfaceArea().getProtocols());
88 msaMap
.put("Events", doc
.getModuleSurfaceArea().getEvents());
89 msaMap
.put("Hobs", doc
.getModuleSurfaceArea().getHobs());
90 msaMap
.put("PPIs", doc
.getModuleSurfaceArea().getPPIs());
91 msaMap
.put("Variables", doc
.getModuleSurfaceArea().getVariables());
92 msaMap
.put("BootModes", doc
.getModuleSurfaceArea().getBootModes());
95 .put("SystemTables", doc
.getModuleSurfaceArea()
97 msaMap
.put("DataHubs", doc
.getModuleSurfaceArea().getDataHubs());
98 msaMap
.put("Formsets", doc
.getModuleSurfaceArea().getFormsets());
99 msaMap
.put("Guids", doc
.getModuleSurfaceArea().getGuids());
100 msaMap
.put("Externs", doc
.getModuleSurfaceArea().getExterns());
102 msaMap
.put("PCDs", doc
.getModuleSurfaceArea().getPCDs());
104 .put("BuildOptions", doc
.getModuleSurfaceArea()
111 @param doc top level surface area XML document
112 @param msaMap the map to store the result
114 private void parseFile(ModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
115 mbdMap
.put("MbdHeader", doc
.getModuleBuildDescription().getMbdHeader());
116 mbdMap
.put("Libraries", doc
.getModuleBuildDescription().getLibraries());
117 mbdMap
.put("SourceFiles", doc
.getModuleBuildDescription()
119 mbdMap
.put("Includes", doc
.getModuleBuildDescription().getIncludes());
120 mbdMap
.put("Protocols", doc
.getModuleBuildDescription().getProtocols());
122 mbdMap
.put("Events", doc
.getModuleBuildDescription().getEvents());
123 mbdMap
.put("Hobs", doc
.getModuleBuildDescription().getHobs());
124 mbdMap
.put("PPIs", doc
.getModuleBuildDescription().getPPIs());
125 mbdMap
.put("Variables", doc
.getModuleBuildDescription().getVariables());
126 mbdMap
.put("BootModes", doc
.getModuleBuildDescription().getBootModes());
128 mbdMap
.put("SystemTables", doc
.getModuleBuildDescription()
130 mbdMap
.put("DataHubs", doc
.getModuleBuildDescription().getDataHubs());
131 mbdMap
.put("Formsets", doc
.getModuleBuildDescription().getFormsets());
132 mbdMap
.put("Guids", doc
.getModuleBuildDescription().getGuids());
133 mbdMap
.put("Externs", doc
.getModuleBuildDescription().getExterns());
135 mbdMap
.put("PCDs", doc
.getModuleBuildDescription().getPCDs());
136 mbdMap
.put("BuildOptions", doc
.getModuleBuildDescription()
142 @param doc top level surface area XML document
143 @param msaMap the map to store the result
145 private void parseFile(LibraryModuleSurfaceAreaDocument doc
, Map
<String
, XmlObject
> msaMap
) {
146 msaMap
.put("MsaLibHeader", doc
.getLibraryModuleSurfaceArea()
148 msaMap
.put("LibraryClassDefinitions", doc
.getLibraryModuleSurfaceArea()
149 .getLibraryClassDefinitions());
150 msaMap
.put("SourceFiles", doc
.getLibraryModuleSurfaceArea()
152 msaMap
.put("Includes", doc
.getLibraryModuleSurfaceArea().getIncludes());
153 msaMap
.put("Protocols", doc
.getLibraryModuleSurfaceArea()
156 msaMap
.put("Events", doc
.getLibraryModuleSurfaceArea().getEvents());
157 msaMap
.put("Hobs", doc
.getLibraryModuleSurfaceArea().getHobs());
158 msaMap
.put("PPIs", doc
.getLibraryModuleSurfaceArea().getPPIs());
159 msaMap
.put("Variables", doc
.getLibraryModuleSurfaceArea()
161 msaMap
.put("BootModes", doc
.getLibraryModuleSurfaceArea()
164 msaMap
.put("SystemTables", doc
.getLibraryModuleSurfaceArea()
166 msaMap
.put("DataHubs", doc
.getLibraryModuleSurfaceArea().getDataHubs());
167 msaMap
.put("Formsets", doc
.getLibraryModuleSurfaceArea().getFormsets());
168 msaMap
.put("Guids", doc
.getLibraryModuleSurfaceArea().getGuids());
169 msaMap
.put("Externs", doc
.getLibraryModuleSurfaceArea().getExterns());
171 msaMap
.put("PCDs", doc
.getLibraryModuleSurfaceArea().getPCDs());
172 msaMap
.put("BuildOptions", doc
.getLibraryModuleSurfaceArea()
179 @param doc top level surface area XML document
180 @param msaMap the map to store the result
182 private void parseFile(LibraryModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
183 mbdMap
.put("MbdLibHeader", doc
.getLibraryModuleBuildDescription()
185 mbdMap
.put("Libraries", doc
.getLibraryModuleBuildDescription()
187 mbdMap
.put("SourceFiles", doc
.getLibraryModuleBuildDescription()
189 mbdMap
.put("Includes", doc
.getLibraryModuleBuildDescription()
191 mbdMap
.put("Protocols", doc
.getLibraryModuleBuildDescription()
195 .put("Events", doc
.getLibraryModuleBuildDescription()
197 mbdMap
.put("Hobs", doc
.getLibraryModuleBuildDescription().getHobs());
198 mbdMap
.put("PPIs", doc
.getLibraryModuleBuildDescription().getPPIs());
199 mbdMap
.put("Variables", doc
.getLibraryModuleBuildDescription()
201 mbdMap
.put("BootModes", doc
.getLibraryModuleBuildDescription()
204 mbdMap
.put("SystemTables", doc
.getLibraryModuleBuildDescription()
206 mbdMap
.put("DataHubs", doc
.getLibraryModuleBuildDescription()
208 mbdMap
.put("Formsets", doc
.getLibraryModuleBuildDescription()
210 mbdMap
.put("Guids", doc
.getLibraryModuleBuildDescription().getGuids());
211 mbdMap
.put("Externs", doc
.getLibraryModuleBuildDescription()
214 mbdMap
.put("PCDs", doc
.getLibraryModuleBuildDescription().getPCDs());
215 mbdMap
.put("BuildOptions", doc
.getLibraryModuleBuildDescription()