]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/PcdTools/org/tianocore/pcd/action/PlatformPcdPreprocessAction.java
1, Make exception string friendly, readable.
[mirror_edk2.git] / Tools / Source / PcdTools / org / tianocore / pcd / action / PlatformPcdPreprocessAction.java
index 90c9ca0f31d774acf3259697f86f37cb190c8530..04ebf89684d3d146396e638c8697831d22fca715 100644 (file)
@@ -25,10 +25,10 @@ import java.util.regex.Pattern;
 \r
 import org.tianocore.DynamicPcdBuildDefinitionsDocument.DynamicPcdBuildDefinitions;\r
 import org.tianocore.PcdBuildDefinitionDocument.PcdBuildDefinition;\r
 \r
 import org.tianocore.DynamicPcdBuildDefinitionsDocument.DynamicPcdBuildDefinitions;\r
 import org.tianocore.PcdBuildDefinitionDocument.PcdBuildDefinition;\r
-import org.tianocore.pcd.entity.MemoryDatabaseManager;\r
-import org.tianocore.pcd.exception.EntityException;\r
 import org.tianocore.pcd.entity.*;\r
 import org.tianocore.pcd.entity.Token;\r
 import org.tianocore.pcd.entity.*;\r
 import org.tianocore.pcd.entity.Token;\r
+import org.tianocore.pcd.entity.MemoryDatabaseManager;\r
+import org.tianocore.pcd.exception.PlatformPcdPreprocessException;\r
 \r
 /**\r
    The abstract parent class PlatformPcdPreprocessAction, This class is to collect platform's\r
 \r
 /**\r
    The abstract parent class PlatformPcdPreprocessAction, This class is to collect platform's\r
@@ -53,7 +53,7 @@ public abstract class PlatformPcdPreprocessAction {
 \r
     /**\r
        Get parameter pcdDbManager\r
 \r
     /**\r
        Get parameter pcdDbManager\r
-         \r
+\r
        @return MemoryDatabaseManager\r
     **/\r
     public MemoryDatabaseManager getPcdDbManager() {\r
        @return MemoryDatabaseManager\r
     **/\r
     public MemoryDatabaseManager getPcdDbManager() {\r
@@ -64,10 +64,12 @@ public abstract class PlatformPcdPreprocessAction {
 \r
        In building environement, this function will be implementated by FpdParserTask.\r
 \r
 \r
        In building environement, this function will be implementated by FpdParserTask.\r
 \r
-       @return List<ModuleInfoFromFpd>\r
+       @return List<ModuleInfo>                  the component array.\r
+       @throws PlatformPcdPreprocessException    get all modules in <ModuleSA> in FPD file.\r
+\r
     **/\r
     public abstract List<ModulePcdInfoFromFpd> getComponentsFromFpd()\r
     **/\r
     public abstract List<ModulePcdInfoFromFpd> getComponentsFromFpd()\r
-                                               throws EntityException;\r
+                                               throws PlatformPcdPreprocessException;\r
 \r
     /**\r
        Abstract function to get GUID string from SPD file.\r
 \r
     /**\r
        Abstract function to get GUID string from SPD file.\r
@@ -76,10 +78,12 @@ public abstract class PlatformPcdPreprocessAction {
 \r
        @param guidCName the CName of GUID\r
 \r
 \r
        @param guidCName the CName of GUID\r
 \r
-       @return String[] Guid Info array contains CName and Guid String\r
+       @return String[]      Guid information from SPD file.\r
+       @throws PlatformPcdPreprocessException\r
+                            Fail to get Guid information from SPD file.\r
     **/\r
     public abstract String[]                getGuidInfoFromSpd(String guidCName)\r
     **/\r
     public abstract String[]                getGuidInfoFromSpd(String guidCName)\r
-                                            throws EntityException;\r
+                                            throws PlatformPcdPreprocessException;\r
 \r
     /**\r
        Abstract function: Verification the PCD data.\r
 \r
     /**\r
        Abstract function: Verification the PCD data.\r
@@ -87,13 +91,14 @@ public abstract class PlatformPcdPreprocessAction {
        In different environment, such as building environment and wizard environment,\r
        it has different implementation according to optimization.\r
 \r
        In different environment, such as building environment and wizard environment,\r
        it has different implementation according to optimization.\r
 \r
-       @param cName\r
-       @param moduleName\r
-       @param datum\r
-       @param datumType\r
-       @param maxDatumSize\r
+       @param cName         The token name\r
+       @param moduleName    The module who use this PCD token\r
+       @param datum         The PCD's datum\r
+       @param datumType     The PCD's datum type\r
+       @param maxDatumSize  The max size for PCD's Datum.\r
+\r
+       @return String       exception strings.\r
 \r
 \r
-       @return String\r
     **/\r
     public abstract String                  verifyDatum(String            cName,\r
                                                         String            moduleName,\r
     **/\r
     public abstract String                  verifyDatum(String            cName,\r
                                                         String            moduleName,\r
@@ -112,23 +117,25 @@ public abstract class PlatformPcdPreprocessAction {
     public abstract DynamicPcdBuildDefinitions.PcdBuildData\r
                                             getDynamicInfoFromFpd(Token     token,\r
                                                                   String    moduleName)\r
     public abstract DynamicPcdBuildDefinitions.PcdBuildData\r
                                             getDynamicInfoFromFpd(Token     token,\r
                                                                   String    moduleName)\r
-                                            throws EntityException;\r
+                                            throws PlatformPcdPreprocessException;\r
 \r
     /**\r
        Abstract function: Get all dynamic PCD information from FPD file.\r
 \r
 \r
     /**\r
        Abstract function: Get all dynamic PCD information from FPD file.\r
 \r
-       @return List<DynamicPcdBuildDefinitions.PcdBuildData>\r
+       @return List<DynamicPcdBuildDefinitions.PcdBuildData>    All DYNAMIC PCD list in <DynamicPcdBuildDefinitions> in FPD file.\r
+       @throws PlatformPcdPreprocessBuildException              Failure to get dynamic information list.\r
+\r
     **/\r
     public abstract List<DynamicPcdBuildDefinitions.PcdBuildData>\r
                                             getAllDynamicPcdInfoFromFpd()\r
     **/\r
     public abstract List<DynamicPcdBuildDefinitions.PcdBuildData>\r
                                             getAllDynamicPcdInfoFromFpd()\r
-                                            throws EntityException;\r
+                                            throws PlatformPcdPreprocessException;\r
 \r
     /**\r
       Collect all PCD information from FPD file into PCD memory database.\r
 \r
     **/\r
     public void initPcdMemoryDbWithPlatformInfo()\r
 \r
     /**\r
       Collect all PCD information from FPD file into PCD memory database.\r
 \r
     **/\r
     public void initPcdMemoryDbWithPlatformInfo()\r
-        throws EntityException {\r
+        throws PlatformPcdPreprocessException {\r
         int                                 index             = 0;\r
         int                                 pcdIndex          = 0;\r
         List<PcdBuildDefinition.PcdData>    pcdBuildDataArray = new ArrayList<PcdBuildDefinition.PcdData>();\r
         int                                 index             = 0;\r
         int                                 pcdIndex          = 0;\r
         List<PcdBuildDefinition.PcdData>    pcdBuildDataArray = new ArrayList<PcdBuildDefinition.PcdData>();\r
@@ -154,7 +161,8 @@ public abstract class PlatformPcdPreprocessAction {
         modules = getComponentsFromFpd();\r
 \r
         if (modules == null) {\r
         modules = getComponentsFromFpd();\r
 \r
         if (modules == null) {\r
-            throw new EntityException("[FPD file error] No modules in FPD file, Please check whether there are elements in <FrameworkModules> in FPD file!");\r
+            throw new PlatformPcdPreprocessException(\r
+                "No modules in FPD file, Please check whether there are elements in <FrameworkModules> in FPD file!");\r
         }\r
 \r
         //\r
         }\r
 \r
         //\r
@@ -185,7 +193,9 @@ public abstract class PlatformPcdPreprocessAction {
                 tokenSpaceStrRet = getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
                 if (tokenSpaceStrRet == null) {\r
                 tokenSpaceStrRet = getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
                 if (tokenSpaceStrRet == null) {\r
-                    throw new EntityException ("Fail to get Token space guid for token" + pcdBuildData.getCName());\r
+                    throw new PlatformPcdPreprocessException(\r
+                        "Fail to get Token space guid for token" + pcdBuildData.getCName() +\r
+                        " from all SPD files. You must have an <GuidDeclaration> for this token space Guid");\r
                 }\r
 \r
                 primaryKey   = Token.getPrimaryKeyString(pcdBuildData.getCName(), tokenSpaceStrRet[1]);\r
                 }\r
 \r
                 primaryKey   = Token.getPrimaryKeyString(pcdBuildData.getCName(), tokenSpaceStrRet[1]);\r
@@ -201,11 +211,11 @@ public abstract class PlatformPcdPreprocessAction {
 \r
                 if ((pcdType    == Token.PCD_TYPE.FEATURE_FLAG) &&\r
                     (datumType  != Token.DATUM_TYPE.BOOLEAN)){\r
 \r
                 if ((pcdType    == Token.PCD_TYPE.FEATURE_FLAG) &&\r
                     (datumType  != Token.DATUM_TYPE.BOOLEAN)){\r
-                    exceptionString = String.format("[FPD file error] For PCD %s in module %s, the PCD type is FEATRUE_FLAG but "+\r
+                    exceptionString = String.format("In FPD file, for PCD %s in module %s, the PCD type is FEATRUE_FLAG but "+\r
                                                     "datum type of this PCD entry is not BOOLEAN!",\r
                                                     pcdBuildData.getCName(),\r
                                                     moduleName);\r
                                                     "datum type of this PCD entry is not BOOLEAN!",\r
                                                     pcdBuildData.getCName(),\r
                                                     moduleName);\r
-                    throw new EntityException(exceptionString);\r
+                    throw new PlatformPcdPreprocessException(exceptionString);\r
                 }\r
 \r
                 //\r
                 }\r
 \r
                 //\r
@@ -218,10 +228,10 @@ public abstract class PlatformPcdPreprocessAction {
                      // Value is required.\r
                      //\r
                      if (datum == null) {\r
                      // Value is required.\r
                      //\r
                      if (datum == null) {\r
-                         exceptionString = String.format("[FPD file error] There is no value for PCD entry %s in module %s!",\r
+                         exceptionString = String.format("In FPD file, there is no value for PCD entry %s in module %s!",\r
                                                          pcdBuildData.getCName(),\r
                                                          moduleName);\r
                                                          pcdBuildData.getCName(),\r
                                                          moduleName);\r
-                         throw new EntityException(exceptionString);\r
+                         throw new PlatformPcdPreprocessException(exceptionString);\r
                      }\r
 \r
                      //\r
                      }\r
 \r
                      //\r
@@ -232,7 +242,7 @@ public abstract class PlatformPcdPreprocessAction {
                                                         datum,\r
                                                         datumType,\r
                                                         maxDatumSize)) != null) {\r
                                                         datum,\r
                                                         datumType,\r
                                                         maxDatumSize)) != null) {\r
-                         throw new EntityException(exceptionString);\r
+                         throw new PlatformPcdPreprocessException(exceptionString);\r
                      }\r
                 }\r
 \r
                      }\r
                 }\r
 \r
@@ -253,32 +263,32 @@ public abstract class PlatformPcdPreprocessAction {
                     // modules.\r
                     //\r
                     if (token.datumType != datumType) {\r
                     // modules.\r
                     //\r
                     if (token.datumType != datumType) {\r
-                        exceptionString = String.format("[FPD file error] The datum type of PCD entry %s is %s, which is different with  %s defined in before!",\r
+                        exceptionString = String.format("In FPD file, the datum type of PCD entry %s is %s, which is different with  %s defined in before!",\r
                                                         pcdBuildData.getCName(),\r
                                                         pcdBuildData.getDatumType().toString(),\r
                                                         Token.getStringOfdatumType(token.datumType));\r
                                                         pcdBuildData.getCName(),\r
                                                         pcdBuildData.getDatumType().toString(),\r
                                                         Token.getStringOfdatumType(token.datumType));\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
 \r
                     //\r
                     // Check token number is valid\r
                     //\r
                     if (tokenNumber != token.tokenNumber) {\r
                     }\r
 \r
                     //\r
                     // Check token number is valid\r
                     //\r
                     if (tokenNumber != token.tokenNumber) {\r
-                        exceptionString = String.format("[FPD file error] The token number of PCD entry %s in module %s is different with same PCD entry in other modules!",\r
+                        exceptionString = String.format("In FPD file, the token number of PCD entry %s in module %s is different with same PCD entry in other modules!",\r
                                                         pcdBuildData.getCName(),\r
                                                         moduleName);\r
                                                         pcdBuildData.getCName(),\r
                                                         moduleName);\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
 \r
                     //\r
                     // For same PCD used in different modules, the PCD type should all be dynamic or non-dynamic.\r
                     //\r
                     if (token.isDynamicPCD != Token.isDynamic(pcdType)) {\r
                     }\r
 \r
                     //\r
                     // For same PCD used in different modules, the PCD type should all be dynamic or non-dynamic.\r
                     //\r
                     if (token.isDynamicPCD != Token.isDynamic(pcdType)) {\r
-                        exceptionString = String.format("[FPD file error] For PCD entry %s in module %s, you define dynamic or non-dynamic PCD type which"+\r
-                                                        "is different with others module's",\r
+                        exceptionString = String.format("In FPD file, for PCD entry %s in module %s, you define dynamic or non-dynamic PCD type which"+\r
+                                                        " is different with others module's",\r
                                                         token.cName,\r
                                                         moduleName);\r
                                                         token.cName,\r
                                                         moduleName);\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
 \r
                     if (token.isDynamicPCD) {\r
                     }\r
 \r
                     if (token.isDynamicPCD) {\r
@@ -291,24 +301,24 @@ public abstract class PlatformPcdPreprocessAction {
                             (token.getDefaultSku().type == DynamicTokenValue.VALUE_TYPE.DEFAULT_TYPE) &&\r
                             (datum != null)) {\r
                             if (!datum.equalsIgnoreCase(token.getDefaultSku().value)) {\r
                             (token.getDefaultSku().type == DynamicTokenValue.VALUE_TYPE.DEFAULT_TYPE) &&\r
                             (datum != null)) {\r
                             if (!datum.equalsIgnoreCase(token.getDefaultSku().value)) {\r
-                                exceptionString = String.format("[FPD file error] For dynamic PCD %s in module %s, the datum in <ModuleSA> is "+\r
+                                exceptionString = String.format("In FPD file, for dynamic PCD %s in module %s, the datum in <ModuleSA> is "+\r
                                                                 "not equal to the datum in <DynamicPcdBuildDefinitions>, it is "+\r
                                                                 "illega! You could no set <Value> in <ModuleSA> for a dynamic PCD!",\r
                                                                 token.cName,\r
                                                                 moduleName);\r
                                                                 "not equal to the datum in <DynamicPcdBuildDefinitions>, it is "+\r
                                                                 "illega! You could no set <Value> in <ModuleSA> for a dynamic PCD!",\r
                                                                 token.cName,\r
                                                                 moduleName);\r
-                                throw new EntityException(exceptionString);\r
+                                throw new PlatformPcdPreprocessException(exceptionString);\r
                             }\r
                         }\r
 \r
                         if ((maxDatumSize != 0) &&\r
                             (maxDatumSize != token.datumSize)){\r
                             }\r
                         }\r
 \r
                         if ((maxDatumSize != 0) &&\r
                             (maxDatumSize != token.datumSize)){\r
-                            exceptionString = String.format("[FPD file error] For dynamic PCD %s in module %s, the max datum size is %d which "+\r
+                            exceptionString = String.format("In FPD file, for dynamic PCD %s in module %s, the max datum size is %d which "+\r
                                                             "is different with <MaxDatumSize> %d defined in <DynamicPcdBuildDefinitions>!",\r
                                                             token.cName,\r
                                                             moduleName,\r
                                                             maxDatumSize,\r
                                                             token.datumSize);\r
                                                             "is different with <MaxDatumSize> %d defined in <DynamicPcdBuildDefinitions>!",\r
                                                             token.cName,\r
                                                             moduleName,\r
                                                             maxDatumSize,\r
                                                             token.datumSize);\r
-                            throw new EntityException(exceptionString);\r
+                            throw new PlatformPcdPreprocessException(exceptionString);\r
                         }\r
                     }\r
 \r
                         }\r
                     }\r
 \r
@@ -320,7 +330,10 @@ public abstract class PlatformPcdPreprocessAction {
                     tokenSpaceStrRet = this.getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
                     if (tokenSpaceStrRet == null) {\r
                     tokenSpaceStrRet = this.getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
                     if (tokenSpaceStrRet == null) {\r
-                        throw new EntityException("Fail to get token space guid for token " + token.cName);\r
+                        throw new PlatformPcdPreprocessException(\r
+                            "Fail to get Token space guid for token" + token.cName +\r
+                            " from all SPD files. You must have an <GuidDeclaration> for this token space Guid");\r
+\r
                     }\r
 \r
                     token = new Token(pcdBuildData.getCName(), tokenSpaceStrRet[1]);\r
                     }\r
 \r
                     token = new Token(pcdBuildData.getCName(), tokenSpaceStrRet[1]);\r
@@ -361,7 +374,14 @@ public abstract class PlatformPcdPreprocessAction {
                                                   pcdType,\r
                                                   datum,\r
                                                   maxDatumSize);\r
                                                   pcdType,\r
                                                   datum,\r
                                                   maxDatumSize);\r
-                token.addUsageInstance(usageInstance);\r
+                if (!token.addUsageInstance(usageInstance)) {\r
+                    throw new PlatformPcdPreprocessException(\r
+                        String.format("PCD %s for module %s has already exist in database, Please check all PCD build entries "+\r
+                                      "in modules %s in <ModuleSA> to make sure no duplicated definitions in FPD file!",\r
+                                      token.cName,\r
+                                      moduleName,\r
+                                      moduleName));\r
+                }\r
             }\r
         }\r
 \r
             }\r
         }\r
 \r
@@ -396,7 +416,7 @@ public abstract class PlatformPcdPreprocessAction {
                                            Token    token,\r
                                            String   datum,\r
                                            int      maxDatumSize)\r
                                            Token    token,\r
                                            String   datum,\r
                                            int      maxDatumSize)\r
-        throws EntityException {\r
+        throws PlatformPcdPreprocessException {\r
         int                 index           = 0;\r
         int                 offset;\r
         String              exceptionString = null;\r
         int                 index           = 0;\r
         int                 offset;\r
         String              exceptionString = null;\r
@@ -412,12 +432,12 @@ public abstract class PlatformPcdPreprocessAction {
 \r
         dynamicInfo = getDynamicInfoFromFpd(token, moduleName);\r
         if (dynamicInfo == null) {\r
 \r
         dynamicInfo = getDynamicInfoFromFpd(token, moduleName);\r
         if (dynamicInfo == null) {\r
-            exceptionString = String.format("[FPD file error] For Dynamic PCD %s used by module %s, "+\r
+            exceptionString = String.format("In FPD file, for Dynamic PCD %s used by module %s, "+\r
                                             "there is no dynamic information in <DynamicPcdBuildDefinitions> "+\r
                                             "in FPD file, but it is required!",\r
                                             token.cName,\r
                                             moduleName);\r
                                             "there is no dynamic information in <DynamicPcdBuildDefinitions> "+\r
                                             "in FPD file, but it is required!",\r
                                             token.cName,\r
                                             moduleName);\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
 \r
         token.datumSize = dynamicInfo.getMaxDatumSize();\r
         }\r
 \r
         token.datumSize = dynamicInfo.getMaxDatumSize();\r
@@ -428,28 +448,28 @@ public abstract class PlatformPcdPreprocessAction {
                                       token.datumType,\r
                                       token.datumSize);\r
         if (exceptionString != null) {\r
                                       token.datumType,\r
                                       token.datumSize);\r
         if (exceptionString != null) {\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
 \r
         if ((maxDatumSize != 0) &&\r
             (maxDatumSize != token.datumSize)) {\r
         }\r
 \r
         if ((maxDatumSize != 0) &&\r
             (maxDatumSize != token.datumSize)) {\r
-            exceptionString = String.format("FPD file error] For dynamic PCD %s, the datum size in module %s is %d, but "+\r
+            exceptionString = String.format("In FPD file, for dynamic PCD %s, the datum size in module %s is %d, but "+\r
                                             "the datum size in <DynamicPcdBuildDefinitions> is %d, they are not match!",\r
                                             token.cName,\r
                                             moduleName,\r
                                             maxDatumSize,\r
                                             dynamicInfo.getMaxDatumSize());\r
                                             "the datum size in <DynamicPcdBuildDefinitions> is %d, they are not match!",\r
                                             token.cName,\r
                                             moduleName,\r
                                             maxDatumSize,\r
                                             dynamicInfo.getMaxDatumSize());\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
         tokenNumber = Long.decode(dynamicInfo.getToken().toString());\r
         if (tokenNumber != token.tokenNumber) {\r
         }\r
         tokenNumber = Long.decode(dynamicInfo.getToken().toString());\r
         if (tokenNumber != token.tokenNumber) {\r
-            exceptionString = String.format("[FPD file error] For dynamic PCD %s, the token number in module %s is 0x%x, but"+\r
+            exceptionString = String.format("In FPD file, for dynamic PCD %s, the token number in module %s is 0x%x, but"+\r
                                             "in <DynamicPcdBuildDefinictions>, the token number is 0x%x, they are not match!",\r
                                             token.cName,\r
                                             moduleName,\r
                                             token.tokenNumber,\r
                                             tokenNumber);\r
                                             "in <DynamicPcdBuildDefinictions>, the token number is 0x%x, they are not match!",\r
                                             token.cName,\r
                                             moduleName,\r
                                             token.tokenNumber,\r
                                             tokenNumber);\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
 \r
         token.dynamicExTokenNumber = tokenNumber;\r
         }\r
 \r
         token.dynamicExTokenNumber = tokenNumber;\r
@@ -479,7 +499,7 @@ public abstract class PlatformPcdPreprocessAction {
                                                    skuInfoList.get(index).getValue().toString(),\r
                                                    token.datumType,\r
                                                    token.datumSize)) != null) {\r
                                                    skuInfoList.get(index).getValue().toString(),\r
                                                    token.datumType,\r
                                                    token.datumSize)) != null) {\r
-                    throw new EntityException(exceptionString);\r
+                    throw new PlatformPcdPreprocessException(exceptionString);\r
                 }\r
 \r
                 token.skuData.add(skuInstance);\r
                 }\r
 \r
                 token.skuData.add(skuInstance);\r
@@ -491,10 +511,10 @@ public abstract class PlatformPcdPreprocessAction {
                 if (datum != null) {\r
                     if ((skuInstance.id == 0)                                   &&\r
                         !datum.toString().equalsIgnoreCase(skuInfoList.get(index).getValue().toString())) {\r
                 if (datum != null) {\r
                     if ((skuInstance.id == 0)                                   &&\r
                         !datum.toString().equalsIgnoreCase(skuInfoList.get(index).getValue().toString())) {\r
-                        exceptionString = "[FPD file error] For dynamic PCD " + token.cName + ", the value in module " + moduleName + " is " + datum.toString() + " but the "+\r
+                        exceptionString = "In FPD file, for dynamic PCD " + token.cName + ", the value in module " + moduleName + " is " + datum.toString() + " but the "+\r
                                           "value of sku 0 data in <DynamicPcdBuildDefinition> is " + skuInstance.value.value + ". They are must be same!"+\r
                                           " or you could not define value for a dynamic PCD in every <ModuleSA>!";\r
                                           "value of sku 0 data in <DynamicPcdBuildDefinition> is " + skuInstance.value.value + ". They are must be same!"+\r
                                           " or you could not define value for a dynamic PCD in every <ModuleSA>!";\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
                 }\r
                 continue;\r
                     }\r
                 }\r
                 continue;\r
@@ -506,32 +526,32 @@ public abstract class PlatformPcdPreprocessAction {
             if (skuInfoList.get(index).getVariableName() != null) {\r
                 exceptionString = null;\r
                 if (skuInfoList.get(index).getVariableGuid() == null) {\r
             if (skuInfoList.get(index).getVariableName() != null) {\r
                 exceptionString = null;\r
                 if (skuInfoList.get(index).getVariableGuid() == null) {\r
-                    exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                    exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                     "file, who use HII, but there is no <VariableGuid> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
                                                     "file, who use HII, but there is no <VariableGuid> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
                 }\r
 \r
                 if (skuInfoList.get(index).getVariableOffset() == null) {\r
                     }\r
                 }\r
 \r
                 if (skuInfoList.get(index).getVariableOffset() == null) {\r
-                    exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                    exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                     "file, who use HII, but there is no <VariableOffset> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
                                                     "file, who use HII, but there is no <VariableOffset> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
                 }\r
 \r
                 if (skuInfoList.get(index).getHiiDefaultValue() == null) {\r
                     }\r
                 }\r
 \r
                 if (skuInfoList.get(index).getHiiDefaultValue() == null) {\r
-                    exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                    exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                     "file, who use HII, but there is no <HiiDefaultValue> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
                                                     "file, who use HII, but there is no <HiiDefaultValue> defined for Sku %d data!",\r
                                                     token.cName,\r
                                                     index);\r
                     if (exceptionString != null) {\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
                 }\r
 \r
                     }\r
                 }\r
 \r
@@ -546,15 +566,16 @@ public abstract class PlatformPcdPreprocessAction {
                                                    hiiDefaultValue,\r
                                                    token.datumType,\r
                                                    token.datumSize)) != null) {\r
                                                    hiiDefaultValue,\r
                                                    token.datumType,\r
                                                    token.datumSize)) != null) {\r
-                    throw new EntityException(exceptionString);\r
+                    throw new PlatformPcdPreprocessException(exceptionString);\r
                 }\r
 \r
                 offset = Integer.decode(skuInfoList.get(index).getVariableOffset());\r
                 if (offset > 0xFFFF) {\r
                 }\r
 \r
                 offset = Integer.decode(skuInfoList.get(index).getVariableOffset());\r
                 if (offset > 0xFFFF) {\r
-                    throw new EntityException(String.format("[FPD file error] For dynamic PCD %s ,  the variable offset defined in sku %d data "+\r
-                                                            "exceed 64K, it is not allowed!",\r
-                                                            token.cName,\r
-                                                            index));\r
+                    throw new PlatformPcdPreprocessException(\r
+                        String.format("In FPD file, for dynamic PCD %s ,  the variable offset defined in sku %d data "+\r
+                                      "exceed 64K, it is not allowed!",\r
+                                      token.cName,\r
+                                      index));\r
                 }\r
 \r
                 //\r
                 }\r
 \r
                 //\r
@@ -562,17 +583,18 @@ public abstract class PlatformPcdPreprocessAction {
                 //\r
                 variableGuidString = getGuidInfoFromSpd(skuInfoList.get(index).getVariableGuid().toString());\r
                 if (variableGuidString == null) {\r
                 //\r
                 variableGuidString = getGuidInfoFromSpd(skuInfoList.get(index).getVariableGuid().toString());\r
                 if (variableGuidString == null) {\r
-                    throw new EntityException(String.format("[GUID Error] For dynamic PCD %s,  the variable guid %s can be found in all SPD file!",\r
-                                                            token.cName,\r
-                                                            skuInfoList.get(index).getVariableGuid().toString()));\r
+                    throw new PlatformPcdPreprocessException(\r
+                        String.format("In FPD file, for dynamic PCD %s,  the variable guid %s can be found in all SPD file!",\r
+                                      token.cName,\r
+                                      skuInfoList.get(index).getVariableGuid().toString()));\r
                 }\r
                 String variableStr = skuInfoList.get(index).getVariableName();\r
                 Pattern pattern = Pattern.compile("0x([a-fA-F0-9]){4}");\r
                 Matcher matcher = pattern.matcher(variableStr);\r
                 List<String> varNameList = new ArrayList<String>();\r
                 while (matcher.find()){\r
                 }\r
                 String variableStr = skuInfoList.get(index).getVariableName();\r
                 Pattern pattern = Pattern.compile("0x([a-fA-F0-9]){4}");\r
                 Matcher matcher = pattern.matcher(variableStr);\r
                 List<String> varNameList = new ArrayList<String>();\r
                 while (matcher.find()){\r
-                        String str = variableStr.substring(matcher.start(),matcher.end());\r
-                        varNameList.add(str);\r
+                    String str = variableStr.substring(matcher.start(),matcher.end());\r
+                    varNameList.add(str);\r
                 }\r
 \r
                 skuInstance.value.setHiiData(varNameList,\r
                 }\r
 \r
                 skuInstance.value.setHiiData(varNameList,\r
@@ -589,29 +611,29 @@ public abstract class PlatformPcdPreprocessAction {
                 continue;\r
             }\r
 \r
                 continue;\r
             }\r
 \r
-            exceptionString = String.format("[FPD file error] For dynamic PCD %s, the dynamic info must "+\r
+            exceptionString = String.format("In FPD file, for dynamic PCD %s, the dynamic info must "+\r
                                             "be one of 'DefaultGroup', 'HIIGroup', 'VpdGroup'.",\r
                                             token.cName);\r
                                             "be one of 'DefaultGroup', 'HIIGroup', 'VpdGroup'.",\r
                                             token.cName);\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
 \r
         if (!hasSkuId0) {\r
         }\r
 \r
         if (!hasSkuId0) {\r
-            exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions>, there are "+\r
+            exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions>, there are "+\r
                                             "no sku id = 0 data, which is required for every dynamic PCD",\r
                                             token.cName);\r
                                             "no sku id = 0 data, which is required for every dynamic PCD",\r
                                             token.cName);\r
-            throw new EntityException(exceptionString);\r
+            throw new PlatformPcdPreprocessException(exceptionString);\r
         }\r
 \r
         return token;\r
     }\r
 \r
     /**\r
         }\r
 \r
         return token;\r
     }\r
 \r
     /**\r
-       Get all dynamic PCD defined in <DynamicPcdBuildDefinitions> which unreferenced by \r
+       Get all dynamic PCD defined in <DynamicPcdBuildDefinitions> which unreferenced by\r
        any <ModuleSA> in FPD file.\r
        any <ModuleSA> in FPD file.\r
-         \r
-       @return List<Token>  Return PCD token \r
+\r
+       @return List<Token>  Return PCD token\r
     **/\r
     **/\r
-    private List<Token> getUnreferencedDynamicPcd () throws EntityException {\r
+    private List<Token> getUnreferencedDynamicPcd () throws PlatformPcdPreprocessException {\r
         List<Token>                                   tokenArray                 = new ArrayList<Token>();\r
         Token                                         token                      = null;\r
         List<DynamicPcdBuildDefinitions.PcdBuildData> dynamicPcdBuildDataArray   = null;\r
         List<Token>                                   tokenArray                 = new ArrayList<Token>();\r
         Token                                         token                      = null;\r
         List<DynamicPcdBuildDefinitions.PcdBuildData> dynamicPcdBuildDataArray   = null;\r
@@ -638,7 +660,7 @@ public abstract class PlatformPcdPreprocessAction {
             tokenSpaceStrRet = this.getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
             if (tokenSpaceStrRet == null) {\r
             tokenSpaceStrRet = this.getGuidInfoFromSpd(pcdBuildData.getTokenSpaceGuidCName());\r
 \r
             if (tokenSpaceStrRet == null) {\r
-                throw new EntityException ("Fail to get Token space guid for token" + pcdBuildData.getCName());\r
+                throw new PlatformPcdPreprocessException("Fail to get Token space guid for token" + pcdBuildData.getCName());\r
             }\r
 \r
             primaryKey = Token.getPrimaryKeyString(pcdBuildData.getCName(),\r
             }\r
 \r
             primaryKey = Token.getPrimaryKeyString(pcdBuildData.getCName(),\r
@@ -650,8 +672,9 @@ public abstract class PlatformPcdPreprocessAction {
 \r
             pcdType = Token.getPcdTypeFromString(pcdBuildData.getItemType().toString());\r
             if (pcdType != Token.PCD_TYPE.DYNAMIC_EX) {\r
 \r
             pcdType = Token.getPcdTypeFromString(pcdBuildData.getItemType().toString());\r
             if (pcdType != Token.PCD_TYPE.DYNAMIC_EX) {\r
-                throw new EntityException (String.format("[FPD file error] It not allowed for DYNAMIC PCD %s who is no used by any module",\r
-                                                         pcdBuildData.getCName()));\r
+                throw new PlatformPcdPreprocessException(\r
+                    String.format("In FPD file, it not allowed for DYNAMIC PCD %s who is no used by any module",\r
+                                   pcdBuildData.getCName()));\r
             }\r
 \r
             //\r
             }\r
 \r
             //\r
@@ -673,7 +696,7 @@ public abstract class PlatformPcdPreprocessAction {
                                           token.datumType,\r
                                           token.datumSize);\r
             if (exceptionString != null) {\r
                                           token.datumType,\r
                                           token.datumSize);\r
             if (exceptionString != null) {\r
-                throw new EntityException(exceptionString);\r
+                throw new PlatformPcdPreprocessException(exceptionString);\r
             }\r
 \r
             skuInfoList = pcdBuildData.getSkuInfoList();\r
             }\r
 \r
             skuInfoList = pcdBuildData.getSkuInfoList();\r
@@ -701,7 +724,7 @@ public abstract class PlatformPcdPreprocessAction {
                                                        skuInfoList.get(index).getValue().toString(),\r
                                                        token.datumType,\r
                                                        token.datumSize)) != null) {\r
                                                        skuInfoList.get(index).getValue().toString(),\r
                                                        token.datumType,\r
                                                        token.datumSize)) != null) {\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
 \r
                     token.skuData.add(skuInstance);\r
                     }\r
 \r
                     token.skuData.add(skuInstance);\r
@@ -715,32 +738,32 @@ public abstract class PlatformPcdPreprocessAction {
                 if (skuInfoList.get(index).getVariableName() != null) {\r
                     exceptionString = null;\r
                     if (skuInfoList.get(index).getVariableGuid() == null) {\r
                 if (skuInfoList.get(index).getVariableName() != null) {\r
                     exceptionString = null;\r
                     if (skuInfoList.get(index).getVariableGuid() == null) {\r
-                        exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                        exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                         "file, who use HII, but there is no <VariableGuid> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
                                                         "file, who use HII, but there is no <VariableGuid> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
-                            throw new EntityException(exceptionString);\r
+                            throw new PlatformPcdPreprocessException(exceptionString);\r
                         }\r
                     }\r
 \r
                     if (skuInfoList.get(index).getVariableOffset() == null) {\r
                         }\r
                     }\r
 \r
                     if (skuInfoList.get(index).getVariableOffset() == null) {\r
-                        exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                        exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                         "file, who use HII, but there is no <VariableOffset> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
                                                         "file, who use HII, but there is no <VariableOffset> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
-                            throw new EntityException(exceptionString);\r
+                            throw new PlatformPcdPreprocessException(exceptionString);\r
                         }\r
                     }\r
 \r
                     if (skuInfoList.get(index).getHiiDefaultValue() == null) {\r
                         }\r
                     }\r
 \r
                     if (skuInfoList.get(index).getHiiDefaultValue() == null) {\r
-                        exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
+                        exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions> section in FPD "+\r
                                                         "file, who use HII, but there is no <HiiDefaultValue> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
                                                         "file, who use HII, but there is no <HiiDefaultValue> defined for Sku %d data!",\r
                                                         token.cName,\r
                                                         index);\r
                         if (exceptionString != null) {\r
-                            throw new EntityException(exceptionString);\r
+                            throw new PlatformPcdPreprocessException(exceptionString);\r
                         }\r
                     }\r
 \r
                         }\r
                     }\r
 \r
@@ -755,15 +778,16 @@ public abstract class PlatformPcdPreprocessAction {
                                                        hiiDefaultValue,\r
                                                        token.datumType,\r
                                                        token.datumSize)) != null) {\r
                                                        hiiDefaultValue,\r
                                                        token.datumType,\r
                                                        token.datumSize)) != null) {\r
-                        throw new EntityException(exceptionString);\r
+                        throw new PlatformPcdPreprocessException(exceptionString);\r
                     }\r
 \r
                     offset = Integer.decode(skuInfoList.get(index).getVariableOffset());\r
                     if (offset > 0xFFFF) {\r
                     }\r
 \r
                     offset = Integer.decode(skuInfoList.get(index).getVariableOffset());\r
                     if (offset > 0xFFFF) {\r
-                        throw new EntityException(String.format("[FPD file error] For dynamic PCD %s ,  the variable offset defined in sku %d data "+\r
-                                                                "exceed 64K, it is not allowed!",\r
-                                                                token.cName,\r
-                                                                index));\r
+                        throw new PlatformPcdPreprocessException(\r
+                            String.format("In FPD file, for dynamic PCD %s ,  the variable offset defined in sku %d data "+\r
+                                          "exceed 64K, it is not allowed!",\r
+                                          token.cName,\r
+                                          index));\r
                     }\r
 \r
                     //\r
                     }\r
 \r
                     //\r
@@ -771,17 +795,18 @@ public abstract class PlatformPcdPreprocessAction {
                     //\r
                     variableGuidString = this.getGuidInfoFromSpd(skuInfoList.get(index).getVariableGuid().toString());\r
                     if (variableGuidString == null) {\r
                     //\r
                     variableGuidString = this.getGuidInfoFromSpd(skuInfoList.get(index).getVariableGuid().toString());\r
                     if (variableGuidString == null) {\r
-                        throw new EntityException(String.format("[GUID Error] For dynamic PCD %s,  the variable guid %s can be found in all SPD file!",\r
-                                                                token.cName,\r
-                                                                skuInfoList.get(index).getVariableGuid().toString()));\r
+                        throw new PlatformPcdPreprocessException(\r
+                            String.format("In FPD file, for dynamic PCD %s,  the variable guid %s can be found in all SPD file!",\r
+                                           token.cName,\r
+                                           skuInfoList.get(index).getVariableGuid().toString()));\r
                     }\r
                     String variableStr = skuInfoList.get(index).getVariableName();\r
                     Pattern pattern = Pattern.compile("0x([a-fA-F0-9]){4}");\r
                     Matcher matcher = pattern.matcher(variableStr);\r
                     List<String> varNameList = new ArrayList<String>();\r
                     while (matcher.find()){\r
                     }\r
                     String variableStr = skuInfoList.get(index).getVariableName();\r
                     Pattern pattern = Pattern.compile("0x([a-fA-F0-9]){4}");\r
                     Matcher matcher = pattern.matcher(variableStr);\r
                     List<String> varNameList = new ArrayList<String>();\r
                     while (matcher.find()){\r
-                            String str = variableStr.substring(matcher.start(),matcher.end());\r
-                            varNameList.add(str);\r
+                        String str = variableStr.substring(matcher.start(),matcher.end());\r
+                        varNameList.add(str);\r
                     }\r
 \r
                     skuInstance.value.setHiiData(varNameList,\r
                     }\r
 \r
                     skuInstance.value.setHiiData(varNameList,\r
@@ -798,17 +823,17 @@ public abstract class PlatformPcdPreprocessAction {
                     continue;\r
                 }\r
 \r
                     continue;\r
                 }\r
 \r
-                exceptionString = String.format("[FPD file error] For dynamic PCD %s, the dynamic info must "+\r
+                exceptionString = String.format("In FPD file, for dynamic PCD %s, the dynamic info must "+\r
                                                 "be one of 'DefaultGroup', 'HIIGroup', 'VpdGroup'.",\r
                                                 token.cName);\r
                                                 "be one of 'DefaultGroup', 'HIIGroup', 'VpdGroup'.",\r
                                                 token.cName);\r
-                throw new EntityException(exceptionString);\r
+                throw new PlatformPcdPreprocessException(exceptionString);\r
             }\r
 \r
             if (!hasSkuId0) {\r
             }\r
 \r
             if (!hasSkuId0) {\r
-                exceptionString = String.format("[FPD file error] For dynamic PCD %s in <DynamicPcdBuildDefinitions>, there are "+\r
+                exceptionString = String.format("In FPD file, for dynamic PCD %s in <DynamicPcdBuildDefinitions>, there are "+\r
                                                 "no sku id = 0 data, which is required for every dynamic PCD",\r
                                                 token.cName);\r
                                                 "no sku id = 0 data, which is required for every dynamic PCD",\r
                                                 token.cName);\r
-                throw new EntityException(exceptionString);\r
+                throw new PlatformPcdPreprocessException(exceptionString);\r
             }\r
 \r
             tokenArray.add(token);\r
             }\r
 \r
             tokenArray.add(token);\r
@@ -834,7 +859,7 @@ public abstract class PlatformPcdPreprocessAction {
        @return UUID         UUID instance\r
     **/\r
     private UUID translateSchemaStringToUUID(String uuidString)\r
        @return UUID         UUID instance\r
     **/\r
     private UUID translateSchemaStringToUUID(String uuidString)\r
-        throws EntityException {\r
+        throws PlatformPcdPreprocessException {\r
         String      temp;\r
         String[]    splitStringArray;\r
         int         index;\r
         String      temp;\r
         String[]    splitStringArray;\r
         int         index;\r
@@ -864,7 +889,7 @@ public abstract class PlatformPcdPreprocessAction {
         if ((uuidString.charAt(0) == '0') && ((uuidString.charAt(1) == 'x') || (uuidString.charAt(1) == 'X'))) {\r
             splitStringArray = uuidString.split("," );\r
             if (splitStringArray.length != 11) {\r
         if ((uuidString.charAt(0) == '0') && ((uuidString.charAt(1) == 'x') || (uuidString.charAt(1) == 'X'))) {\r
             splitStringArray = uuidString.split("," );\r
             if (splitStringArray.length != 11) {\r
-                throw new EntityException ("[FPD file error] Wrong format for UUID string: " + uuidString);\r
+                throw new PlatformPcdPreprocessException ("Wrong format for UUID string: " + uuidString);\r
             }\r
 \r
             //\r
             }\r
 \r
             //\r