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());
94 msaMap
.put("SystemTables", doc
.getModuleSurfaceArea().getSystemTables());
95 msaMap
.put("DataHubs", doc
.getModuleSurfaceArea().getDataHubs());
96 msaMap
.put("Formsets", doc
.getModuleSurfaceArea().getFormsets());
97 msaMap
.put("Guids", doc
.getModuleSurfaceArea().getGuids());
98 msaMap
.put("Externs", doc
.getModuleSurfaceArea().getExterns());
100 msaMap
.put("PcdCoded", doc
.getModuleSurfaceArea().getPcdCoded());
101 msaMap
.put("BuildOptions", doc
.getModuleSurfaceArea().getBuildOptions());
107 @param doc top level surface area XML document
108 @param msaMap the map to store the result
110 private void parseFile(ModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
111 mbdMap
.put("MbdHeader", doc
.getModuleBuildDescription().getMbdHeader());
112 mbdMap
.put("Libraries", doc
.getModuleBuildDescription().getLibraries());
113 mbdMap
.put("SourceFiles", doc
.getModuleBuildDescription()
115 mbdMap
.put("Includes", doc
.getModuleBuildDescription().getIncludes());
116 mbdMap
.put("Protocols", doc
.getModuleBuildDescription().getProtocols());
118 mbdMap
.put("Events", doc
.getModuleBuildDescription().getEvents());
119 mbdMap
.put("Hobs", doc
.getModuleBuildDescription().getHobs());
120 mbdMap
.put("PPIs", doc
.getModuleBuildDescription().getPPIs());
121 mbdMap
.put("Variables", doc
.getModuleBuildDescription().getVariables());
122 mbdMap
.put("BootModes", doc
.getModuleBuildDescription().getBootModes());
124 mbdMap
.put("SystemTables", doc
.getModuleBuildDescription()
126 mbdMap
.put("DataHubs", doc
.getModuleBuildDescription().getDataHubs());
127 mbdMap
.put("Formsets", doc
.getModuleBuildDescription().getFormsets());
128 mbdMap
.put("Guids", doc
.getModuleBuildDescription().getGuids());
129 mbdMap
.put("Externs", doc
.getModuleBuildDescription().getExterns());
131 mbdMap
.put("BuildOptions", doc
.getModuleBuildDescription()
137 @param doc top level surface area XML document
138 @param msaMap the map to store the result
140 private void parseFile(LibraryModuleSurfaceAreaDocument doc
, Map
<String
, XmlObject
> msaMap
) {
141 msaMap
.put("MsaLibHeader", doc
.getLibraryModuleSurfaceArea()
143 msaMap
.put("LibraryClassDefinitions", doc
.getLibraryModuleSurfaceArea()
144 .getLibraryClassDefinitions());
145 msaMap
.put("SourceFiles", doc
.getLibraryModuleSurfaceArea()
147 msaMap
.put("Includes", doc
.getLibraryModuleSurfaceArea().getIncludes());
148 msaMap
.put("Protocols", doc
.getLibraryModuleSurfaceArea()
151 msaMap
.put("Events", doc
.getLibraryModuleSurfaceArea().getEvents());
152 msaMap
.put("Hobs", doc
.getLibraryModuleSurfaceArea().getHobs());
153 msaMap
.put("PPIs", doc
.getLibraryModuleSurfaceArea().getPPIs());
154 msaMap
.put("Variables", doc
.getLibraryModuleSurfaceArea()
156 msaMap
.put("BootModes", doc
.getLibraryModuleSurfaceArea()
159 msaMap
.put("SystemTables", doc
.getLibraryModuleSurfaceArea()
161 msaMap
.put("DataHubs", doc
.getLibraryModuleSurfaceArea().getDataHubs());
162 msaMap
.put("Formsets", doc
.getLibraryModuleSurfaceArea().getFormsets());
163 msaMap
.put("Guids", doc
.getLibraryModuleSurfaceArea().getGuids());
164 msaMap
.put("Externs", doc
.getLibraryModuleSurfaceArea().getExterns());
166 msaMap
.put("PcdCoded", doc
.getLibraryModuleSurfaceArea().getPcdCoded());
167 msaMap
.put("BuildOptions", doc
.getLibraryModuleSurfaceArea()
174 @param doc top level surface area XML document
175 @param msaMap the map to store the result
177 private void parseFile(LibraryModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
178 mbdMap
.put("MbdLibHeader", doc
.getLibraryModuleBuildDescription()
180 mbdMap
.put("Libraries", doc
.getLibraryModuleBuildDescription()
182 mbdMap
.put("SourceFiles", doc
.getLibraryModuleBuildDescription()
184 mbdMap
.put("Includes", doc
.getLibraryModuleBuildDescription()
186 mbdMap
.put("Protocols", doc
.getLibraryModuleBuildDescription()
190 .put("Events", doc
.getLibraryModuleBuildDescription()
192 mbdMap
.put("Hobs", doc
.getLibraryModuleBuildDescription().getHobs());
193 mbdMap
.put("PPIs", doc
.getLibraryModuleBuildDescription().getPPIs());
194 mbdMap
.put("Variables", doc
.getLibraryModuleBuildDescription()
196 mbdMap
.put("BootModes", doc
.getLibraryModuleBuildDescription()
199 mbdMap
.put("SystemTables", doc
.getLibraryModuleBuildDescription()
201 mbdMap
.put("DataHubs", doc
.getLibraryModuleBuildDescription()
203 mbdMap
.put("Formsets", doc
.getLibraryModuleBuildDescription()
205 mbdMap
.put("Guids", doc
.getLibraryModuleBuildDescription().getGuids());
206 mbdMap
.put("Externs", doc
.getLibraryModuleBuildDescription()
209 mbdMap
.put("BuildOptions", doc
.getLibraryModuleBuildDescription()