]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/pcd/action/CollectPCDAction.java
Fix two bugs for current PCD workflow:
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / action / CollectPCDAction.java
index 055563df1b29a2f2c51181cca20e3014b3017078..99290058722899f23596533d21210dbcb2e4de2a 100644 (file)
@@ -501,7 +501,8 @@ public class CollectPCDAction {
             token.skuDataArrayEnabled  = pcdBuildData.getSkuDataArrayEnable();\r
             token.assignedtokenNumber  = Integer.decode(pcdBuildData.getToken().getStringValue());\r
             skuDataArray               = pcdBuildData.getSkuDataArray1();\r
-           \r
+            token.datumType    = Token.getdatumTypeFromString(pcdBuildData.getDatumType().toString());\r
+\r
             if(skuDataArray != null) {\r
                 for(skuIndex = 0; skuIndex < skuDataArray.size(); skuIndex ++) {\r
                     //\r
@@ -550,11 +551,12 @@ public class CollectPCDAction {
     private void updateTokenBySPD(UsageInstance  usageInstance,\r
                                   String         packageFullPath) \r
         throws EntityException {\r
-        PackageSurfaceAreaDocument  pkgDoc          = null;\r
-        List<PcdDefinitions.PcdEntry> pcdEntryArray = new ArrayList<PcdDefinitions.PcdEntry>();\r
-        int                         index;\r
-        boolean                     isFoundInSpd  = false;\r
-        Token.DATUM_TYPE            datumType     = Token.DATUM_TYPE.UNKNOWN;\r
+        PackageSurfaceAreaDocument      pkgDoc          = null;\r
+        PcdDefinitions                  pcdDefinitions  = null;\r
+        List<PcdDefinitions.PcdEntry>   pcdEntryArray   = new ArrayList<PcdDefinitions.PcdEntry>();\r
+        int                             index           = 0;\r
+        boolean                         isFoundInSpd    = false;\r
+        Token.DATUM_TYPE                datumType       = Token.DATUM_TYPE.UNKNOWN;\r
 \r
         try {\r
             pkgDoc =(PackageSurfaceAreaDocument)XmlObject.Factory.parse(new File(packageFullPath));\r
@@ -563,8 +565,18 @@ public class CollectPCDAction {
         } catch(XmlException xmlE) {\r
             throw new EntityException("Can't parse the FPD xml fle:" + packageFullPath);\r
         }\r
+        pcdDefinitions = pkgDoc.getPackageSurfaceArea().getPcdDefinitions();\r
+        //\r
+        // It is illege for SPD file does not contains any PCD information.\r
+        //\r
+        if (pcdDefinitions == null) {\r
+            return;\r
+        }\r
 \r
-        pcdEntryArray = pkgDoc.getPackageSurfaceArea().getPcdDefinitions().getPcdEntryList();\r
+        pcdEntryArray = pcdDefinitions.getPcdEntryList();\r
+        if (pcdEntryArray == null) {\r
+            return;\r
+        }\r
         for(index = 0; index < pcdEntryArray.size(); index ++) {\r
             if(pcdEntryArray.get(index).getCName().equalsIgnoreCase(\r
                 usageInstance.parentToken.cName)) {\r
@@ -616,12 +628,6 @@ public class CollectPCDAction {
                 }\r
             }\r
         }\r
-\r
-        if(!isFoundInSpd ) {\r
-            ActionMessage.warning(this, \r
-                                  "Can *not* find the PCD token " + usageInstance.parentToken.cName + \r
-                                  " in SPD file!");\r
-        }\r
     }\r
 \r
     /**\r