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("PackageDependencies", doc
.getModuleSurfaceArea().getPackageDependencies());
87 msaMap
.put("Protocols", doc
.getModuleSurfaceArea().getProtocols());
89 msaMap
.put("Events", doc
.getModuleSurfaceArea().getEvents());
90 msaMap
.put("Hobs", doc
.getModuleSurfaceArea().getHobs());
91 msaMap
.put("PPIs", doc
.getModuleSurfaceArea().getPPIs());
92 msaMap
.put("Variables", doc
.getModuleSurfaceArea().getVariables());
93 msaMap
.put("BootModes", doc
.getModuleSurfaceArea().getBootModes());
95 msaMap
.put("SystemTables", doc
.getModuleSurfaceArea().getSystemTables());
96 msaMap
.put("DataHubs", doc
.getModuleSurfaceArea().getDataHubs());
97 msaMap
.put("Formsets", doc
.getModuleSurfaceArea().getFormsets());
98 msaMap
.put("Guids", doc
.getModuleSurfaceArea().getGuids());
99 msaMap
.put("Externs", doc
.getModuleSurfaceArea().getExterns());
101 msaMap
.put("PcdCoded", doc
.getModuleSurfaceArea().getPcdCoded());
102 msaMap
.put("BuildOptions", doc
.getModuleSurfaceArea().getBuildOptions());
108 @param doc top level surface area XML document
109 @param msaMap the map to store the result
111 private void parseFile(ModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
112 mbdMap
.put("MbdHeader", doc
.getModuleBuildDescription().getMbdHeader());
113 mbdMap
.put("Libraries", doc
.getModuleBuildDescription().getLibraries());
114 mbdMap
.put("SourceFiles", doc
.getModuleBuildDescription()
116 mbdMap
.put("Includes", doc
.getModuleBuildDescription().getIncludes());
117 mbdMap
.put("Protocols", doc
.getModuleBuildDescription().getProtocols());
119 mbdMap
.put("Events", doc
.getModuleBuildDescription().getEvents());
120 mbdMap
.put("Hobs", doc
.getModuleBuildDescription().getHobs());
121 mbdMap
.put("PPIs", doc
.getModuleBuildDescription().getPPIs());
122 mbdMap
.put("Variables", doc
.getModuleBuildDescription().getVariables());
123 mbdMap
.put("BootModes", doc
.getModuleBuildDescription().getBootModes());
125 mbdMap
.put("SystemTables", doc
.getModuleBuildDescription()
127 mbdMap
.put("DataHubs", doc
.getModuleBuildDescription().getDataHubs());
128 mbdMap
.put("Formsets", doc
.getModuleBuildDescription().getFormsets());
129 mbdMap
.put("Guids", doc
.getModuleBuildDescription().getGuids());
130 mbdMap
.put("Externs", doc
.getModuleBuildDescription().getExterns());
132 mbdMap
.put("BuildOptions", doc
.getModuleBuildDescription()
138 @param doc top level surface area XML document
139 @param msaMap the map to store the result
141 private void parseFile(LibraryModuleSurfaceAreaDocument doc
, Map
<String
, XmlObject
> msaMap
) {
142 msaMap
.put("MsaLibHeader", doc
.getLibraryModuleSurfaceArea()
144 msaMap
.put("LibraryClassDefinitions", doc
.getLibraryModuleSurfaceArea()
145 .getLibraryClassDefinitions());
146 msaMap
.put("SourceFiles", doc
.getLibraryModuleSurfaceArea()
148 msaMap
.put("Includes", doc
.getLibraryModuleSurfaceArea().getIncludes());
149 msaMap
.put("Protocols", doc
.getLibraryModuleSurfaceArea()
152 msaMap
.put("Events", doc
.getLibraryModuleSurfaceArea().getEvents());
153 msaMap
.put("Hobs", doc
.getLibraryModuleSurfaceArea().getHobs());
154 msaMap
.put("PPIs", doc
.getLibraryModuleSurfaceArea().getPPIs());
155 msaMap
.put("Variables", doc
.getLibraryModuleSurfaceArea()
157 msaMap
.put("BootModes", doc
.getLibraryModuleSurfaceArea()
160 msaMap
.put("SystemTables", doc
.getLibraryModuleSurfaceArea()
162 msaMap
.put("DataHubs", doc
.getLibraryModuleSurfaceArea().getDataHubs());
163 msaMap
.put("Formsets", doc
.getLibraryModuleSurfaceArea().getFormsets());
164 msaMap
.put("Guids", doc
.getLibraryModuleSurfaceArea().getGuids());
165 msaMap
.put("Externs", doc
.getLibraryModuleSurfaceArea().getExterns());
167 msaMap
.put("PcdCoded", doc
.getLibraryModuleSurfaceArea().getPcdCoded());
168 msaMap
.put("BuildOptions", doc
.getLibraryModuleSurfaceArea()
175 @param doc top level surface area XML document
176 @param msaMap the map to store the result
178 private void parseFile(LibraryModuleBuildDescriptionDocument doc
, Map
<String
, XmlObject
> mbdMap
) {
179 mbdMap
.put("MbdLibHeader", doc
.getLibraryModuleBuildDescription()
181 mbdMap
.put("Libraries", doc
.getLibraryModuleBuildDescription()
183 mbdMap
.put("SourceFiles", doc
.getLibraryModuleBuildDescription()
185 mbdMap
.put("Includes", doc
.getLibraryModuleBuildDescription()
187 mbdMap
.put("Protocols", doc
.getLibraryModuleBuildDescription()
191 .put("Events", doc
.getLibraryModuleBuildDescription()
193 mbdMap
.put("Hobs", doc
.getLibraryModuleBuildDescription().getHobs());
194 mbdMap
.put("PPIs", doc
.getLibraryModuleBuildDescription().getPPIs());
195 mbdMap
.put("Variables", doc
.getLibraryModuleBuildDescription()
197 mbdMap
.put("BootModes", doc
.getLibraryModuleBuildDescription()
200 mbdMap
.put("SystemTables", doc
.getLibraryModuleBuildDescription()
202 mbdMap
.put("DataHubs", doc
.getLibraryModuleBuildDescription()
204 mbdMap
.put("Formsets", doc
.getLibraryModuleBuildDescription()
206 mbdMap
.put("Guids", doc
.getLibraryModuleBuildDescription().getGuids());
207 mbdMap
.put("Externs", doc
.getLibraryModuleBuildDescription()
210 mbdMap
.put("BuildOptions", doc
.getLibraryModuleBuildDescription()