Esempio n. 1
0
 public DirectoryAccessChange()
 {
     this.attributeType = String.Empty;
     this.attributeValue = new PartialAttributeType();
 }
 public DirectoryAccessChange()
 {
     this.attributeType  = String.Empty;
     this.attributeValue = new PartialAttributeType();
 }
Esempio n. 3
0
        public GetResponse Get(GetRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            Message getRequest = null;
            bool    isBaseObjectSearchRequest = false;

            lock (request)
            {
                if (request.BaseObjectSearchRequest == null || request.BaseObjectSearchRequest.AttributeTypes.Count == 0)
                {
                    getRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsTransfer.GetAction);
                }
                else
                {
                    isBaseObjectSearchRequest = true;
                    getRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsTransfer.GetAction, request.BaseObjectSearchRequest, new ClientSerializer(typeof(BaseObjectSearchRequest)));
                    ClientHelper.AddImdaHeaders(request as ImdaRequest, getRequest);
                }

                ClientHelper.AddRmHeaders(request as WsTransfer.TransferRequest, getRequest);
            }
            Message getResponse = Get(getRequest);

            if (getResponse.IsFault)
            {
                // handle fault will throw a .NET exception
                ClientHelper.HandleFault(getResponse);
            }

            GetResponse getResponseTyped = new GetResponse();

            if (isBaseObjectSearchRequest)
            {
                BaseObjectSearchResponse baseObjectSearchResponse = getResponse.GetBody <BaseObjectSearchResponse>(new ClientSerializer(typeof(BaseObjectSearchResponse)));
                getResponseTyped.BaseObjectSearchResponse = baseObjectSearchResponse;
            }
            else
            {
                // we manually construct the partial attributes as if the client had selected all attributes
                // the purpose is to unify the API of the get request
                XmlNode retObject = getResponse.GetBody <XmlNode>(new ClientSerializer(typeof(XmlNode)));
                Dictionary <String, List <XmlNode> > seenAttributes = new Dictionary <string, List <XmlNode> >();
                foreach (XmlNode child in retObject.ChildNodes)
                {
                    if (child.NodeType == XmlNodeType.Element)
                    {
                        if (seenAttributes.ContainsKey(child.Name) == false)
                        {
                            seenAttributes[child.Name] = new List <XmlNode>();
                        }
                        seenAttributes[child.Name].Add(child);
                    }
                }

                getResponseTyped.BaseObjectSearchResponse = new BaseObjectSearchResponse();
                foreach (KeyValuePair <String, List <XmlNode> > item in seenAttributes)
                {
                    PartialAttributeType partialAttribute = new PartialAttributeType();
                    partialAttribute.Values.AddRange(item.Value);
                }
            }
            return(getResponseTyped);
        }