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
- ProfileBuildProvider.cs
- CachedFontFamily.cs
- ThicknessConverter.cs
- ReaderWriterLockWrapper.cs
- SqlParameter.cs
- cache.cs
- InlineCollection.cs
- TdsParserSafeHandles.cs
- ColumnPropertiesGroup.cs
- ImageAutomationPeer.cs
- XmlLanguage.cs
- FlowNode.cs
- __Error.cs
- XmlQueryType.cs
- ControlBuilderAttribute.cs
- HashStream.cs
- EnterpriseServicesHelper.cs
- DataGridToolTip.cs
- UIntPtr.cs
- NameValuePermission.cs
- BaseCollection.cs
- DockingAttribute.cs
- _DisconnectOverlappedAsyncResult.cs
- Rect.cs
- ScrollItemPattern.cs
- TextContainerHelper.cs
- TreeNodeBinding.cs
- RichTextBoxConstants.cs
- HierarchicalDataSourceControl.cs
- UrlPath.cs
- PartialClassGenerationTask.cs
- CompiledAction.cs
- TypeInitializationException.cs
- PackageFilter.cs
- Button.cs
- NGCSerializationManager.cs
- VectorKeyFrameCollection.cs
- SafeLibraryHandle.cs
- ActiveDocumentEvent.cs
- DataObjectAttribute.cs
- NotEqual.cs
- ExceptionHandlers.cs
- DisposableCollectionWrapper.cs
- CheckBoxBaseAdapter.cs
- InputMethod.cs
- PhysicalFontFamily.cs
- BitmapMetadata.cs
- GridItemCollection.cs
- CellTreeNodeVisitors.cs
- BuildDependencySet.cs
- TraceData.cs
- ObjectParameterCollection.cs
- EncryptedType.cs
- InkSerializer.cs
- CodeIterationStatement.cs
- OracleSqlParser.cs
- GeneralTransformGroup.cs
- CheckableControlBaseAdapter.cs
- ContainerVisual.cs
- AtomicFile.cs
- StrongNameUtility.cs
- TaskResultSetter.cs
- SystemParameters.cs
- IListConverters.cs
- IdleTimeoutMonitor.cs
- ScriptHandlerFactory.cs
- XmlReflectionImporter.cs
- RewritingValidator.cs
- CounterCreationData.cs
- AdRotator.cs
- GroupQuery.cs
- ErrorLog.cs
- HeaderCollection.cs
- ControlCachePolicy.cs
- safesecurityhelperavalon.cs
- Int32Collection.cs
- SweepDirectionValidation.cs
- SafeLibraryHandle.cs
- GCHandleCookieTable.cs
- XmlWriterSettings.cs
- StorageComplexPropertyMapping.cs
- CatalogZone.cs
- Polygon.cs
- BitmapEffect.cs
- DataSourceHelper.cs
- ComponentResourceManager.cs
- TextElementEnumerator.cs
- DocumentPaginator.cs
- IPAddress.cs
- OuterGlowBitmapEffect.cs
- WebServiceMethodData.cs
- TreeNodeMouseHoverEvent.cs
- AttributeConverter.cs
- SecurityListenerSettingsLifetimeManager.cs
- While.cs
- ResourceCategoryAttribute.cs
- RunClient.cs
- XmlSchemaValidationException.cs
- LocalBuilder.cs
- QilTernary.cs