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
- ExtendedPropertyCollection.cs
- ScrollBarRenderer.cs
- KnownTypes.cs
- EventQueueState.cs
- XhtmlBasicCommandAdapter.cs
- FormViewCommandEventArgs.cs
- CallbackValidator.cs
- WebPartConnectionsEventArgs.cs
- DataKeyPropertyAttribute.cs
- OperandQuery.cs
- TdsParserSessionPool.cs
- XmlNode.cs
- HttpApplication.cs
- BatchStream.cs
- HttpHandlerActionCollection.cs
- ImageButton.cs
- XmlLanguageConverter.cs
- EditorZone.cs
- CompositeDataBoundControl.cs
- CharConverter.cs
- LocalizationParserHooks.cs
- CodeGeneratorOptions.cs
- SQLByte.cs
- FilterElement.cs
- ArithmeticException.cs
- CreateUserErrorEventArgs.cs
- SamlAuthorityBinding.cs
- CompositeTypefaceMetrics.cs
- SmtpSection.cs
- FormatSettings.cs
- FormattedText.cs
- Simplifier.cs
- ManipulationStartedEventArgs.cs
- StrokeRenderer.cs
- PasswordPropertyTextAttribute.cs
- CodeMemberProperty.cs
- StringValueConverter.cs
- MetadataImporter.cs
- PolyQuadraticBezierSegment.cs
- CopyNodeSetAction.cs
- TextBoxDesigner.cs
- DecoratedNameAttribute.cs
- TitleStyle.cs
- DataGridState.cs
- CryptoApi.cs
- ManagedFilter.cs
- CodeTypeReferenceCollection.cs
- ColorPalette.cs
- ColorContext.cs
- FormatSettings.cs
- CubicEase.cs
- GatewayDefinition.cs
- DataGridViewRowHeaderCell.cs
- GridViewDeletedEventArgs.cs
- Msec.cs
- PagerSettings.cs
- ImplicitInputBrush.cs
- URIFormatException.cs
- ToolBarPanel.cs
- XmlCustomFormatter.cs
- RegexCompiler.cs
- WmpBitmapEncoder.cs
- HttpWebRequestElement.cs
- Rectangle.cs
- ImageMetadata.cs
- DbTransaction.cs
- CodeSnippetStatement.cs
- RepeaterItemCollection.cs
- EncoderNLS.cs
- TransactedReceiveScope.cs
- ReceiveErrorHandling.cs
- ObjectItemCollection.cs
- JpegBitmapDecoder.cs
- PatternMatcher.cs
- UnsafeNativeMethods.cs
- UIElement3D.cs
- SqlProfileProvider.cs
- MachineKeySection.cs
- DataServiceQuery.cs
- WebHostedComPlusServiceHost.cs
- SHA256CryptoServiceProvider.cs
- ListViewInsertionMark.cs
- DbQueryCommandTree.cs
- UInt16.cs
- SoapFaultCodes.cs
- CounterCreationDataCollection.cs
- TransformPattern.cs
- BamlRecordReader.cs
- XappLauncher.cs
- GPRECT.cs
- Util.cs
- DataGridCellsPanel.cs
- Positioning.cs
- NavigationCommands.cs
- OperationParameterInfo.cs
- KnownIds.cs
- X509Certificate.cs
- ForeignKeyConstraint.cs
- DesignerGeometryHelper.cs
- InlineObject.cs