Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Role / DirectoryGroupQuery.cs / 1305376 / DirectoryGroupQuery.cs
#region Using directives
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.DirectoryServices;
#endregion
namespace System.Workflow.Activities
{
[Serializable]
sealed internal class DirectoryGroupQuery : IDirectoryOperation
{
public DirectoryGroupQuery()
{
}
public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, List response)
{
if (response == null)
throw new ArgumentNullException("response");
Stack entries = new Stack();
entries.Push(currentEntry);
while (entries.Count != 0)
{
DirectoryEntry entry = entries.Pop();
bool isGroup = false;
if (Contains(entry.Properties.PropertyNames,"objectClass"))
{
foreach (String value in entry.Properties["objectClass"])
{
if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0)
{
isGroup = true;
break;
}
}
if (isGroup)
{
if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member))
{
foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member])
{
entries.Push(new DirectoryEntry(BuildUri(propValue)));
}
}
}
else
{
response.Add(entry);
}
}
}
}
private static bool Contains(ICollection propertyNames, String testPropertyName)
{
foreach (String propertyName in propertyNames)
{
if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0)
return true;
}
return false;
}
private static String BuildUri(String propValue)
{
StringBuilder sb = new StringBuilder();
sb.Append("LDAP://");
for (int i = 0; i < propValue.Length; ++i)
{
if (propValue[i] == '/')
sb.Append("\\/");
else
sb.Append(propValue[i]);
}
return sb.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
#region Using directives
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.DirectoryServices;
#endregion
namespace System.Workflow.Activities
{
[Serializable]
sealed internal class DirectoryGroupQuery : IDirectoryOperation
{
public DirectoryGroupQuery()
{
}
public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, List response)
{
if (response == null)
throw new ArgumentNullException("response");
Stack entries = new Stack();
entries.Push(currentEntry);
while (entries.Count != 0)
{
DirectoryEntry entry = entries.Pop();
bool isGroup = false;
if (Contains(entry.Properties.PropertyNames,"objectClass"))
{
foreach (String value in entry.Properties["objectClass"])
{
if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0)
{
isGroup = true;
break;
}
}
if (isGroup)
{
if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member))
{
foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member])
{
entries.Push(new DirectoryEntry(BuildUri(propValue)));
}
}
}
else
{
response.Add(entry);
}
}
}
}
private static bool Contains(ICollection propertyNames, String testPropertyName)
{
foreach (String propertyName in propertyNames)
{
if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0)
return true;
}
return false;
}
private static String BuildUri(String propValue)
{
StringBuilder sb = new StringBuilder();
sb.Append("LDAP://");
for (int i = 0; i < propValue.Length; ++i)
{
if (propValue[i] == '/')
sb.Append("\\/");
else
sb.Append(propValue[i]);
}
return sb.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TagNameToTypeMapper.cs
- RuntimeVariableList.cs
- CodeSnippetTypeMember.cs
- ConfigXmlCDataSection.cs
- TryLoadRunnableWorkflowCommand.cs
- Typeface.cs
- FlowPosition.cs
- IApplicationTrustManager.cs
- WebPartsSection.cs
- AuthenticationModuleElementCollection.cs
- RevocationPoint.cs
- XPathParser.cs
- InstanceHandleReference.cs
- DetailsViewCommandEventArgs.cs
- RowToParametersTransformer.cs
- MatchingStyle.cs
- FlowNode.cs
- SamlAdvice.cs
- HuffmanTree.cs
- UshortList2.cs
- _NegotiateClient.cs
- ContextMenuStripActionList.cs
- ItemDragEvent.cs
- SiteMapProvider.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SqlDeflator.cs
- DataStreams.cs
- SoapConverter.cs
- TextOptions.cs
- PropertyRef.cs
- X500Name.cs
- GridItemPattern.cs
- WsatServiceCertificate.cs
- MobilePage.cs
- SafeSystemMetrics.cs
- StringHelper.cs
- IdSpace.cs
- ContentTypeSettingClientMessageFormatter.cs
- EventLogLink.cs
- InvariantComparer.cs
- FtpWebRequest.cs
- PathStreamGeometryContext.cs
- StorageInfo.cs
- XmlNodeList.cs
- DataKey.cs
- RemotingAttributes.cs
- SQLChars.cs
- PagerSettings.cs
- PasswordDeriveBytes.cs
- EmbossBitmapEffect.cs
- System.Data.OracleClient_BID.cs
- ContractBase.cs
- DataViewSetting.cs
- Memoizer.cs
- SqlTransaction.cs
- WasAdminWrapper.cs
- TableItemPatternIdentifiers.cs
- ImageInfo.cs
- ClonableStack.cs
- ScrollChangedEventArgs.cs
- Panel.cs
- TableColumn.cs
- CryptoConfig.cs
- SystemUdpStatistics.cs
- RadioButtonBaseAdapter.cs
- CapacityStreamGeometryContext.cs
- Config.cs
- SchemeSettingElement.cs
- UpdateProgress.cs
- EventDescriptor.cs
- AssemblyCollection.cs
- AdornerLayer.cs
- TextRangeBase.cs
- ManifestSignedXml.cs
- IndexOutOfRangeException.cs
- DllNotFoundException.cs
- DictionaryCustomTypeDescriptor.cs
- CodeTypeReferenceCollection.cs
- UnitySerializationHolder.cs
- SqlTriggerAttribute.cs
- SystemKeyConverter.cs
- ObsoleteAttribute.cs
- ManagementDateTime.cs
- ActionMessageFilter.cs
- UniqueIdentifierService.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Rotation3DKeyFrameCollection.cs
- DataListComponentEditor.cs
- MatrixConverter.cs
- NativeRecognizer.cs
- ImageIndexEditor.cs
- IfAction.cs
- XmlElementElement.cs
- WebPartManager.cs
- _UriTypeConverter.cs
- RadioButton.cs
- EdmItemCollection.cs
- NonClientArea.cs
- QilName.cs
- Size3D.cs