]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java
Changed spelling to manifest
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdFileContents.java
index 331babb03ee2afaaf0a4b9e8f9eadb8bf82124e9..922d1355e84e76ec2d0cc09d7d23de0e7b977116 100644 (file)
@@ -336,16 +336,36 @@ public class SpdFileContents {
             lc.setIncludeHeader(hdr);\r
             lc.setHelpText(hlp);\r
             if (clsUsage != null) {\r
-                lc.setRecommendedInstanceGuid(clsUsage);\r
-            }\r
-            if (instanceVer != null){\r
+              lc.setRecommendedInstanceGuid(clsUsage);\r
+              if (instanceVer != null){\r
                 lc.setRecommendedInstanceVersion(instanceVer);\r
+              } else {\r
+                if (lc.isSetRecommendedInstanceVersion()) {\r
+                  lc.unsetRecommendedInstanceVersion();\r
+                }\r
+              }\r
+            } else {\r
+              if (lc.isSetRecommendedInstanceGuid()) {\r
+                lc.unsetRecommendedInstanceGuid();\r
+              }\r
+              if (lc.isSetRecommendedInstanceVersion()) {\r
+                  lc.unsetRecommendedInstanceVersion();\r
+              }\r
             }\r
+\r
             if (stringToList(hdrAttribArch) != null){\r
-                lc.setSupArchList(stringToList(hdrAttribArch));\r
+              lc.setSupArchList(stringToList(hdrAttribArch));\r
+            } else {\r
+              if (lc.isSetSupArchList()) {\r
+                lc.unsetSupArchList();\r
+              }\r
             }\r
             if (stringToList(hdrAttribModType) != null){\r
-                lc.setSupModuleList(stringToList(hdrAttribModType));\r
+              lc.setSupModuleList(stringToList(hdrAttribModType));\r
+            } else {\r
+              if (lc.isSetSupModuleList()) {\r
+                lc.unsetSupModuleList();\r
+              }\r
             }\r
         }\r
         \r
@@ -387,22 +407,28 @@ public class SpdFileContents {
             e.setGuidValue(guid);\r
             e.setHelpText(hlp);\r
             if (stringToList(guidTypeList) != null) {\r
-                e.setGuidTypeList(stringToList(guidTypeList));\r
+              e.setGuidTypeList(stringToList(guidTypeList));\r
             }\r
             else{\r
-                e.setGuidTypeList(null);\r
+              if (e.isSetGuidTypeList()) {\r
+                e.unsetGuidTypeList();\r
+              }\r
             }\r
             if (stringToList(archList) != null){\r
                 e.setSupArchList(stringToList(archList));\r
             }\r
             else{\r
-                e.setSupArchList(null);\r
+              if (e.isSetSupArchList()) {\r
+                e.unsetSupArchList();\r
+              }\r
             }\r
             if (stringToList(modTypeList) != null) {\r
                 e.setSupModuleList(stringToList(modTypeList));\r
             }\r
             else{\r
-                e.setSupModuleList(null);\r
+              if (e.isSetSupModuleList()) {\r
+                e.unsetSupModuleList();\r
+              }\r
             }\r
             \r
         }\r
@@ -410,7 +436,7 @@ public class SpdFileContents {
     }\r
     \r
     public void updateSpdPpiDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
-                                 String modTypeList){\r
+                                 String modTypeList, String guidTypeList){\r
         XmlObject o = psaRoot.getPpiDeclarations();\r
         if (o == null){\r
             return;\r
@@ -426,24 +452,36 @@ public class SpdFileContents {
             e.setCName(cName);\r
             e.setGuidValue(guid);\r
             e.setHelpText(hlp);\r
+            if (stringToList(guidTypeList) != null) {\r
+                e.setGuidTypeList(stringToList(guidTypeList));\r
+            }\r
+            else{\r
+                if (e.isSetGuidTypeList()) {\r
+                  e.unsetGuidTypeList();\r
+                }\r
+            }\r
             if (stringToList(archList) != null){\r
                 e.setSupArchList(stringToList(archList));\r
             }\r
             else{\r
-                e.setSupArchList(null);\r
+              if (e.isSetSupArchList()) {\r
+                e.unsetSupArchList();\r
+              }\r
             }\r
             if (stringToList(modTypeList) != null) {\r
                 e.setSupModuleList(stringToList(modTypeList));\r
             }\r
             else{\r
-                e.setSupModuleList(null);\r
+              if (e.isSetSupModuleList()) {\r
+                e.unsetSupModuleList();\r
+              }\r
             }\r
         }\r
         cursor.dispose();\r
     }\r
     \r
     public void updateSpdProtocolDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
-                                      String modTypeList){\r
+                                      String modTypeList, String guidTypeList){\r
         XmlObject o = psaRoot.getProtocolDeclarations();\r
         if (o == null){\r
             return;\r
@@ -459,17 +497,29 @@ public class SpdFileContents {
             e.setCName(cName);\r
             e.setGuidValue(guid);\r
             e.setHelpText(hlp);\r
+            if (stringToList(guidTypeList) != null) {\r
+                e.setGuidTypeList(stringToList(guidTypeList));\r
+              }\r
+            else{\r
+                if (e.isSetGuidTypeList()) {\r
+                  e.unsetGuidTypeList();\r
+                }\r
+            }\r
             if (stringToList(archList) != null){\r
                 e.setSupArchList(stringToList(archList));\r
             }\r
             else{\r
-                e.setSupArchList(null);\r
+              if (e.isSetSupArchList()) {\r
+                e.unsetSupArchList();\r
+              }\r
             }\r
             if (stringToList(modTypeList) != null) {\r
                 e.setSupModuleList(stringToList(modTypeList));\r
             }\r
             else{\r
-                e.setSupModuleList(null);\r
+              if (e.isSetSupModuleList()) {\r
+                e.unsetSupModuleList();\r
+              }\r
             }\r
         }\r
         cursor.dispose();\r
@@ -520,12 +570,23 @@ public class SpdFileContents {
             e.setTokenSpaceGuidCName(spaceGuid);\r
             e.setDefaultValue(defaultString);\r
             e.setHelpText(help);\r
-            if (archList != null && archList.length() > 0){\r
+            if (stringToList(archList) != null){\r
                 e.setSupArchList(stringToList(archList));\r
             }\r
-            if (modTypeList != null && modTypeList.length() > 0){\r
+            else{\r
+              if (e.isSetSupArchList()) {\r
+                e.unsetSupArchList();\r
+              }\r
+            }\r
+            if (stringToList(modTypeList) != null) {\r
                 e.setSupModuleList(stringToList(modTypeList));\r
             }\r
+            else{\r
+              if (e.isSetSupModuleList()) {\r
+                e.unsetSupModuleList();\r
+              }\r
+            }\r
+            \r
         } \r
         cursor.dispose();\r
     }\r
@@ -579,8 +640,15 @@ public class SpdFileContents {
                 libClass[i][0] = lc.getName();\r
                 libClass[i][1] = lc.getIncludeHeader();\r
                 libClass[i][2] = lc.getHelpText();\r
-                libClass[i][3] = lc.getRecommendedInstanceGuid();\r
-                libClass[i][4] = lc.getRecommendedInstanceVersion();\r
+// LAH added logic so you cannot set the version unless the GUID is defined.\r
+\r
+//                if (lc.getRecommendedInstanceGuid() != null) {\r
+                  libClass[i][3] = lc.getRecommendedInstanceGuid();\r
+//                  if (lc.getRecommendedInstanceVersion() != null) {\r
+                    libClass[i][4] = lc.getRecommendedInstanceVersion();\r
+//                  }\r
+//                }\r
+\r
                 if (lc.getSupArchList() != null) {\r
                     libClass[i][5] = listToString(lc.getSupArchList());\r
                 }\r
@@ -662,6 +730,17 @@ public class SpdFileContents {
         }\r
     }\r
 \r
+    public void getSpdGuidDeclWithType (Vector<String> vGuidCName, String type) {\r
+        if (psaRoot.getGuidDeclarations() == null) {\r
+            return;\r
+        }\r
+        List<GuidDeclarationsDocument.GuidDeclarations.Entry> l = psaRoot.getGuidDeclarations().getEntryList();\r
+        for (int i = 0; i < l.size(); ++i) {\r
+            if (l.get(i).getGuidTypeList() == null || l.get(i).getGuidTypeList().contains(type)) {\r
+                vGuidCName.add(l.get(i).getCName());\r
+            }\r
+        }\r
+    }\r
     /**\r
     Get the number of GUID declarations from the size of List\r
     \r
@@ -740,6 +819,7 @@ public class SpdFileContents {
             protocol[i][3] = e.getHelpText();\r
             protocol[i][4] = listToString(e.getSupArchList());\r
             protocol[i][5] = listToString(e.getSupModuleList());\r
+            protocol[i][6] = listToString(e.getGuidTypeList());\r
             i++;\r
         }\r
     }\r
@@ -779,7 +859,7 @@ public class SpdFileContents {
             ppi[i][3] = e.getHelpText();\r
             ppi[i][4] = listToString(e.getSupArchList());\r
             ppi[i][5] = listToString(e.getSupModuleList());\r
-\r
+            ppi[i][6] = listToString(e.getGuidTypeList());\r
             i++;\r
         }\r
     }\r
@@ -924,6 +1004,27 @@ public class SpdFileContents {
                                   incHdrAttribPath, incHdrAttribClass, incHdrAttribVer, incHdrAttribOverrideID,\r
                                   incHdrAttribModuleType, spdLibClassDeclarations);\r
     }\r
+    \r
+    public void getSpdLibClassDeclaration(String[] sa, int i) {\r
+        if (getSpdLibClassDeclarations() == null) {\r
+            return;\r
+        }\r
+        XmlCursor cursor = getSpdLibClassDeclarations().newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = (LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass)cursor.getObject();\r
+            sa[0] = lc.getName();\r
+            sa[1] = lc.getIncludeHeader();\r
+            sa[2] = lc.getHelpText();\r
+            sa[3] = lc.getRecommendedInstanceGuid();\r
+            sa[4] = lc.getRecommendedInstanceVersion();\r
+            sa[5] = listToString(lc.getSupArchList());\r
+            sa[6] = listToString(lc.getSupModuleList());\r
+        }\r
+        cursor.dispose();\r
+    }\r
 \r
     /**\r
      Set library class declaration contents under parent tag\r
@@ -961,13 +1062,37 @@ public class SpdFileContents {
         lc.setName(clsName);\r
         lc.setIncludeHeader(clsIncludeFile);\r
         lc.setHelpText(help);\r
-        lc.setRecommendedInstanceGuid(clsUsage);\r
-        lc.setRecommendedInstanceVersion(instanceVer);\r
+// LAH added logic so you cannot set the version unless the GUID is defined.\r
+\r
+        if (clsUsage != null) {\r
+          lc.setRecommendedInstanceGuid(clsUsage);\r
+          if (instanceVer != null) {\r
+            lc.setRecommendedInstanceVersion(instanceVer);\r
+          }\r
+        }\r
+        else {\r
+          if (lc.isSetRecommendedInstanceGuid()) {\r
+              lc.unsetRecommendedInstanceGuid();\r
+          }\r
+          if (lc.isSetRecommendedInstanceVersion()) {\r
+              lc.unsetRecommendedInstanceVersion();\r
+          }\r
+        }\r
+\r
         if (hdrAttribArch != null) {\r
             lc.setSupArchList(stringToList(hdrAttribArch));\r
+        } else {\r
+          if (lc.isSetSupArchList()) {\r
+            lc.unsetSupArchList();\r
+          }\r
         }\r
+\r
         if (hdrAttribModType != null) {\r
-            lc.setSupModuleList(stringToList(hdrAttribModType));\r
+          lc.setSupModuleList(stringToList(hdrAttribModType));\r
+        } else {\r
+          if (lc.isSetSupModuleList()) {\r
+            lc.unsetSupModuleList();\r
+          }\r
         }\r
         \r
     }\r
@@ -1025,6 +1150,20 @@ public class SpdFileContents {
         setSpdMsaFile(msaFileName, moduleName, ver, guid, spdMsaFiles);\r
         \r
     }\r
+    \r
+    public void getSpdMsaFile (String[] sa, int i) {\r
+        if (getSpdMsaFiles() == null) {\r
+            return;\r
+        }\r
+        XmlCursor cursor = getSpdMsaFiles().newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            sa[0] = cursor.getTextValue();\r
+        }\r
+        cursor.dispose();\r
+    }\r
 \r
     /**\r
      Set MsaFile contents under parent element.\r
@@ -1066,6 +1205,22 @@ public class SpdFileContents {
         setSpdIncludeHeader(ModHdrModType, hdrFile, hdrAttribGuid, hdrAttribArch, hdrAttribPath, hdrAttribClass,\r
                             hdrAttribVer, hdrAttribOverID, spdModHdrs);\r
     }\r
+    \r
+    public void getSpdModuleHeader(String[] sa, int i) {\r
+        if (getSpdModHdrs() == null) {\r
+            return;\r
+        }\r
+        XmlCursor cursor = getSpdModHdrs().newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader)cursor.getObject();\r
+            sa[0] = ih.getModuleType()+"";\r
+            sa[1] = ih.getStringValue();\r
+        }\r
+        cursor.dispose();\r
+    }\r
 \r
     /**\r
      Generate GUID declaration element using parameters passed in.\r
@@ -1095,13 +1250,13 @@ public class SpdFileContents {
    **/\r
     public void genSpdProtocolDeclarations(String protocolDeclEntryName, String protocolDeclCName,\r
                                            String protocolDeclGuid, String protocolDeclFeatureFlag,\r
-                                           Vector<String> archList, Vector<String> modTypeList) {\r
+                                           Vector<String> archList, Vector<String> modTypeList, Vector<String> guidTypeList) {\r
         if (getSpdProtocolDeclarations() == null) {\r
             spdProtocolDeclarations = psaRoot.addNewProtocolDeclarations();\r
         }\r
 \r
         setSpdEntry(protocolDeclEntryName, protocolDeclCName, protocolDeclGuid, protocolDeclFeatureFlag,\r
-                    archList, modTypeList, null, spdProtocolDeclarations);\r
+                    archList, modTypeList, guidTypeList, spdProtocolDeclarations);\r
     }\r
 \r
     /**\r
@@ -1113,14 +1268,77 @@ public class SpdFileContents {
     @param ppiDeclFeatureFlag Reserved\r
    **/\r
     public void genSpdPpiDeclarations(String ppiDeclEntryName, String ppiDeclCName, String ppiDeclGuid,\r
-                                      String ppiDeclFeatureFlag, Vector<String> archList, Vector<String> modTypeList) {\r
+                                      String ppiDeclFeatureFlag, Vector<String> archList, Vector<String> modTypeList, Vector<String> guidTypeList) {\r
         if (getSpdPpiDeclarations() == null) {\r
             spdPpiDeclarations = psaRoot.addNewPpiDeclarations();\r
         }\r
 \r
-        setSpdEntry(ppiDeclEntryName, ppiDeclCName, ppiDeclGuid, ppiDeclFeatureFlag, archList, modTypeList, null, spdPpiDeclarations);\r
+        setSpdEntry(ppiDeclEntryName, ppiDeclCName, ppiDeclGuid, ppiDeclFeatureFlag, archList, modTypeList, guidTypeList, spdPpiDeclarations);\r
+    }\r
+    \r
+    public void getSpdGuidDeclaration(String[] sa, int i) {\r
+        if (getSpdGuidDeclarations() == null) {\r
+            return;\r
+        }\r
+        getSpdEntry(sa, i, getSpdGuidDeclarations());\r
+    }\r
+    \r
+    public void getSpdProtocolDeclaration(String[] sa, int i) {\r
+        if (getSpdProtocolDeclarations() == null) {\r
+            return;\r
+        }\r
+        getSpdEntry(sa, i, getSpdProtocolDeclarations());\r
+    }\r
+    \r
+    public void getSpdPpiDeclaration(String[] sa, int i) {\r
+        if (getSpdPpiDeclarations() == null) {\r
+            return;\r
+        }\r
+        getSpdEntry(sa, i, getSpdPpiDeclarations());\r
     }\r
 \r
+    public void getSpdEntry(String[] sa, int i, XmlObject parent) {\r
+        XmlCursor cursor = parent.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            if (parent instanceof GuidDeclarationsDocument.GuidDeclarations) {\r
+                GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry)cursor.getObject();\r
+                sa[0] = e.getName();\r
+                sa[1] = e.getCName();\r
+                sa[2] = e.getGuidValue();\r
+                sa[3] = e.getHelpText();\r
+                sa[4] = listToString(e.getSupArchList());\r
+                sa[5] = listToString(e.getSupModuleList());\r
+                sa[6] = listToString(e.getGuidTypeList());\r
+            }\r
+            \r
+            if (parent instanceof ProtocolDeclarationsDocument.ProtocolDeclarations) {\r
+                ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry)cursor.getObject();\r
+                sa[0] = e.getName();\r
+                sa[1] = e.getCName();\r
+                sa[2] = e.getGuidValue();\r
+                sa[3] = e.getHelpText();\r
+                sa[4] = listToString(e.getSupArchList());\r
+                sa[5] = listToString(e.getSupModuleList());\r
+                sa[6] = listToString(e.getGuidTypeList());\r
+            }\r
+            \r
+            if (parent instanceof PpiDeclarationsDocument.PpiDeclarations) {\r
+                PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry)cursor.getObject();\r
+                sa[0] = e.getName();\r
+                sa[1] = e.getCName();\r
+                sa[2] = e.getGuidValue();\r
+                sa[3] = e.getHelpText();\r
+                sa[4] = listToString(e.getSupArchList());\r
+                sa[5] = listToString(e.getSupModuleList());\r
+                sa[6] = listToString(e.getGuidTypeList());\r
+            }\r
+            \r
+        }\r
+        cursor.dispose();\r
+    }\r
     /**\r
      Set Entry contents using parameters passed in\r
      \r
@@ -1140,18 +1358,31 @@ public class SpdFileContents {
             e.setCName(cName);\r
             e.setGuidValue(guid);\r
             e.setHelpText(help);\r
-            e.setGuidTypeList(guidTypeList);\r
-            e.setSupArchList(archList);\r
-            e.setSupModuleList(modTypeList);\r
-//            if (guidTypeList != null && guidTypeList.size() > 0) {\r
-//                e.setGuidTypeList(new ArrayList<String>(guidTypeList));\r
-//            }\r
-//            if (archList != null && archList.size() > 0){\r
-//                e.setSupArchList(new ArrayList<String>(archList));\r
-//            }\r
-//            if (modTypeList != null && modTypeList.size() > 0) {\r
-//                e.setSupModuleList(new ArrayList<String>(modTypeList));\r
-//            }\r
+            if (guidTypeList != null) {\r
+                e.setGuidTypeList(guidTypeList);\r
+            }\r
+            else{\r
+                if (e.isSetGuidTypeList()) {\r
+                    e.unsetGuidTypeList();\r
+                }\r
+            }\r
+            if (archList != null) {\r
+                e.setSupArchList(archList);\r
+            }\r
+            else {\r
+                if (e.isSetSupArchList()) {\r
+                    e.unsetSupArchList();\r
+                }\r
+            }\r
+            if (modTypeList != null){\r
+                e.setSupModuleList(modTypeList);\r
+            }\r
+            else {\r
+                if (e.isSetSupModuleList()) {\r
+                    e.unsetSupModuleList();\r
+                }\r
+            }\r
+\r
             return;\r
         }\r
         if (parent instanceof ProtocolDeclarationsDocument.ProtocolDeclarations) {\r
@@ -1161,14 +1392,31 @@ public class SpdFileContents {
             pe.setCName(cName);\r
             pe.setGuidValue(guid);\r
             pe.setHelpText(help);\r
-            pe.setSupArchList(archList);\r
-            pe.setSupModuleList(modTypeList);\r
-//            if (archList != null && archList.size() > 0){\r
-//                pe.setSupArchList(new ArrayList<String>(archList));\r
-//            }\r
-//            if (modTypeList != null && modTypeList.size() > 0) {\r
-//                pe.setSupModuleList(new ArrayList<String>(modTypeList));\r
-//            }\r
+            if (guidTypeList != null) {\r
+                pe.setGuidTypeList(guidTypeList);\r
+            }\r
+            else{\r
+                if (pe.isSetGuidTypeList()) {\r
+                    pe.unsetGuidTypeList();\r
+                }\r
+            }\r
+            if (archList != null) {\r
+                pe.setSupArchList(archList);\r
+            }\r
+            else {\r
+                if (pe.isSetSupArchList()) {\r
+                    pe.unsetSupArchList();\r
+                }\r
+            }\r
+            if (modTypeList != null){\r
+                pe.setSupModuleList(modTypeList);\r
+            }\r
+            else {\r
+                if (pe.isSetSupModuleList()) {\r
+                    pe.unsetSupModuleList();\r
+                }\r
+            }\r
+\r
             return;\r
         }\r
         if (parent instanceof PpiDeclarationsDocument.PpiDeclarations) {\r
@@ -1178,14 +1426,31 @@ public class SpdFileContents {
             ppe.setCName(cName);\r
             ppe.setGuidValue(guid);\r
             ppe.setHelpText(help);\r
-            ppe.setSupArchList(archList);\r
-            ppe.setSupModuleList(modTypeList);\r
-//            if (archList != null && archList.size() > 0){\r
-//                ppe.setSupArchList(new ArrayList<String>(archList));\r
-//            }\r
-//            if (archList != null && modTypeList.size() > 0) {\r
-//                ppe.setSupModuleList(new ArrayList<String>(modTypeList));\r
-//            }\r
+            if (guidTypeList != null) {\r
+                ppe.setGuidTypeList(guidTypeList);\r
+            }\r
+            else{\r
+                if (ppe.isSetGuidTypeList()) {\r
+                    ppe.unsetGuidTypeList();\r
+                }\r
+            }\r
+            if (archList != null) {\r
+                ppe.setSupArchList(archList);\r
+            }\r
+            else {\r
+                if (ppe.isSetSupArchList()) {\r
+                    ppe.unsetSupArchList();\r
+                }\r
+            }\r
+            if (modTypeList != null){\r
+                ppe.setSupModuleList(modTypeList);\r
+            }\r
+            else {\r
+                if (ppe.isSetSupModuleList()) {\r
+                    ppe.unsetSupModuleList();\r
+                }\r
+            }\r
+\r
             return;\r
         }\r
 \r
@@ -1218,6 +1483,30 @@ public class SpdFileContents {
         setSpdPcdEntry(pcdItemTypes, cName, token, dataType, spaceGuid, help,\r
                        defaultString, archList, modTypeList, spdPcdDefinitions);\r
     }\r
+    \r
+    public void getSpdPcdDeclaration(String[] sa, int i) {\r
+        if (getSpdPcdDefinitions() == null) {\r
+            return;\r
+        }\r
+        \r
+        XmlCursor cursor = getSpdPcdDefinitions().newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            PcdDeclarationsDocument.PcdDeclarations.PcdEntry pe = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)cursor.getObject();\r
+            sa[0] = pe.getCName();\r
+            sa[1] = pe.getToken()+"";\r
+            sa[2] = pe.getTokenSpaceGuidCName();\r
+            sa[3] = pe.getDatumType()+"";\r
+            sa[4] = pe.getDefaultValue();\r
+            sa[5] = pe.getHelpText();\r
+            sa[6] = listToString(pe.getValidUsage());\r
+            sa[7] = listToString(pe.getSupArchList());\r
+            sa[8] = listToString(pe.getSupModuleList());\r
+        }\r
+        cursor.dispose();\r
+    }\r
 \r
     /**\r
      Set Pcd entry contents under parent tag\r
@@ -1250,10 +1539,18 @@ public class SpdFileContents {
         pe.setTokenSpaceGuidCName(spaceGuid);\r
         pe.setHelpText(help);\r
         if (archList != null){\r
-            pe.setSupArchList(stringToList(archList));\r
+          pe.setSupArchList(stringToList(archList));\r
+        } else {\r
+          if (pe.isSetSupArchList()) {\r
+            pe.unsetSupArchList();\r
+          }\r
         }\r
         if (modTypeList != null){\r
-            pe.setSupModuleList(stringToList(modTypeList));\r
+          pe.setSupModuleList(stringToList(modTypeList));\r
+        } else {\r
+          if (pe.isSetSupModuleList()) {\r
+            pe.unsetSupModuleList();\r
+          }\r
         }\r
     }\r
 \r