object data BLOB declaration
Inheritance: StreamObject
        public static RevisionStoreObjectGroup CreateInstance(ExGuid objectGroupId, ObjectGroupDataElementData dataObject, bool isEncryption)
        {
            RevisionStoreObjectGroup objectGroup = new RevisionStoreObjectGroup(objectGroupId);
            Dictionary <ExGuid, RevisionStoreObject> objectDict = new Dictionary <ExGuid, RevisionStoreObject>();

            if (isEncryption == false)
            {
                RevisionStoreObject revisionObject = null;
                for (int i = 0; i < dataObject.ObjectGroupDeclarations.ObjectDeclarationList.Count; i++)
                {
                    ObjectGroupObjectDeclare objectDeclaration = dataObject.ObjectGroupDeclarations.ObjectDeclarationList[i];
                    ObjectGroupObjectData    objectData        = dataObject.ObjectGroupData.ObjectGroupObjectDataList[i];

                    if (!objectDict.ContainsKey(objectDeclaration.ObjectExtendedGUID))
                    {
                        revisionObject = new RevisionStoreObject();
                        revisionObject.ObjectGroupID = objectGroupId;
                        revisionObject.ObjectID      = objectDeclaration.ObjectExtendedGUID;
                        objectDict.Add(objectDeclaration.ObjectExtendedGUID, revisionObject);
                    }
                    else
                    {
                        revisionObject = objectDict[objectDeclaration.ObjectExtendedGUID];
                    }
                    if (objectDeclaration.ObjectPartitionID.DecodedValue == 4)
                    {
                        revisionObject.JCID = new JCIDObject(objectDeclaration, objectData);
                    }
                    else if (objectDeclaration.ObjectPartitionID.DecodedValue == 1)
                    {
                        revisionObject.PropertySet = new PropertySetObject(objectDeclaration, objectData);
                        if (Convert.ToBoolean(revisionObject.JCID.JCID.IsFileData) == false)
                        {
                            revisionObject.ReferencedObjectID       = objectData.ObjectExGUIDArray;
                            revisionObject.ReferencedObjectSpacesID = objectData.CellIDArray;
                        }
                    }
                }

                for (int i = 0; i < dataObject.ObjectGroupDeclarations.ObjectGroupObjectBLOBDataDeclarationList.Count; i++)
                {
                    ObjectGroupObjectBLOBDataDeclaration objectGroupObjectBLOBDataDeclaration = dataObject.ObjectGroupDeclarations.ObjectGroupObjectBLOBDataDeclarationList[i];
                    ObjectGroupObjectDataBLOBReference   objectGroupObjectDataBLOBReference   = dataObject.ObjectGroupData.ObjectGroupObjectDataBLOBReferenceList[i];
                    if (!objectDict.ContainsKey(objectGroupObjectBLOBDataDeclaration.ObjectExGUID))
                    {
                        revisionObject = new RevisionStoreObject();
                        objectDict.Add(objectGroupObjectBLOBDataDeclaration.ObjectExGUID, revisionObject);
                    }
                    else
                    {
                        revisionObject = objectDict[objectGroupObjectBLOBDataDeclaration.ObjectExGUID];
                    }
                    if (objectGroupObjectBLOBDataDeclaration.ObjectPartitionID.DecodedValue == 2)
                    {
                        revisionObject.FileDataObject = new FileDataObject();
                        revisionObject.FileDataObject.ObjectDataBLOBDeclaration = objectGroupObjectBLOBDataDeclaration;
                        revisionObject.FileDataObject.ObjectDataBLOBReference   = objectGroupObjectDataBLOBReference;
                    }
                }
                objectGroup.Objects.AddRange(objectDict.Values.ToArray());
            }
            else
            {
                for (int i = 0; i < dataObject.ObjectGroupDeclarations.ObjectDeclarationList.Count; i++)
                {
                    ObjectGroupObjectDeclare objectDeclaration = dataObject.ObjectGroupDeclarations.ObjectDeclarationList[i];
                    ObjectGroupObjectData    objectData        = dataObject.ObjectGroupData.ObjectGroupObjectDataList[i];

                    if (objectDeclaration.ObjectPartitionID.DecodedValue == 1)
                    {
                        EncryptionObject encrypObject = new EncryptionObject();
                        encrypObject.ObjectDeclaration = objectDeclaration;
                        encrypObject.ObjectData        = objectData.Data.Content.ToArray();
                        objectGroup.EncryptionObjects.Add(encrypObject);
                    }
                }
            }

            return(objectGroup);
        }
        /// <summary>
        /// This method is used to test Object Data BLOB Declaration related adapter requirements.
        /// </summary>
        /// <param name="instance">Specify the instance which need to be verified.</param> 
        /// <param name="site">Specify the ITestSite instance.</param>
        public void VerifyObjectGroupObjectBLOBDataDeclaration(ObjectGroupObjectBLOBDataDeclaration instance, ITestSite site)
        {
            // If the instance is not null and there are no parsing errors, then the DataElementFragment related adapter requirements can be directly captured.
            if (null == instance)
            {
                site.Assert.Fail("The instance of type DataElementFragment is null due to parsing error or type casting error.");
            }

            // Verify the stream object header related requirements.
            this.ExpectStreamObjectHeaderStart(instance.StreamObjectHeaderStart, instance.GetType(), site);

            // Directly capture requirement MS-FSSHTTPB_R321, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     321,
                     @"[In Object Data BLOB Declaration] Object Group Object Data BLOB Declaration (variable): A 16-bit (section 2.2.1.5.1) or 32-bit stream object header section 2.2.1.5.2) that specifies an object group object data BLOB declaration.");

            // Directly capture requirement MS-FSSHTTPB_R322, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     322,
                     @"[In Object Data BLOB Declaration] Object Extended GUID (variable): An extended GUID (section 2.2.1.7) that specifies the object.");

            // Directly capture requirement MS-FSSHTTPB_R323, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     323,
                     @"[In Object Data BLOB Declaration] Object Data BLOB EXGUID (variable): An extended GUID that specifies the object data BLOB.");

            // Directly capture requirement MS-FSSHTTPB_R324, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     324,
                     @"[In Object Data BLOB Declaration] Object Partition ID (variable): A compact unsigned 64-bit integer (section 2.2.1.1) that specifies the object partition of the object.");

            // Directly capture requirement MS-FSSHTTPB_R325, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     325,
                     @"[In Object Data BLOB Declaration] Object Data Size (variable): A compact unsigned 64-bit integer that specifies the size in bytes of the opaque binary data for the declared object.");

            // Directly capture requirement MS-FSSHTTPB_R935, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     935,
                     @"[In Object Data BLOB Declaration] Object Data Size (variable): This[Object Data Size] MUST match the size of the binary item (section 2.2.1.3) in the corresponding object data BLOB referenced by the object data BLOB reference (section 2.2.1.12.6.5) for this object.");

            // Directly capture requirement MS-FSSHTTPB_R326, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     326,
                     @"[In Object Data BLOB Declaration] Object References Count (variable): A compact unsigned 64-bit integer that specifies the number of object references.");

            // Directly capture requirement MS-FSSHTTPB_R327, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     327,
                     @"[In Object Data BLOB Declaration] Cell References Count (variable): A compact unsigned 64-bit integer that specifies the number of cell references.");

            // Verify the stream object header related requirements.
            this.ExpectSingleObject(instance.StreamObjectHeaderStart, site);
        }