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
- AbsoluteQuery.cs
- DataGridViewRowsAddedEventArgs.cs
- QueryContinueDragEvent.cs
- BasicViewGenerator.cs
- OleDbReferenceCollection.cs
- HijriCalendar.cs
- UnsafeNativeMethods.cs
- PatternMatcher.cs
- BuildManagerHost.cs
- DesignerTransactionCloseEvent.cs
- Schema.cs
- TimeoutException.cs
- Int32Collection.cs
- TextElementEnumerator.cs
- DataGridBoundColumn.cs
- RC2CryptoServiceProvider.cs
- SctClaimDictionary.cs
- FtpRequestCacheValidator.cs
- BitConverter.cs
- CombinedGeometry.cs
- EntityDataSourceViewSchema.cs
- TextEditorParagraphs.cs
- MissingFieldException.cs
- PKCS1MaskGenerationMethod.cs
- SecurityContextTokenValidationException.cs
- WebControlsSection.cs
- WebPartHeaderCloseVerb.cs
- SmtpTransport.cs
- MSAAWinEventWrap.cs
- CacheMode.cs
- StylusTouchDevice.cs
- KeyBinding.cs
- ActivityTypeResolver.xaml.cs
- FillErrorEventArgs.cs
- ClaimSet.cs
- MachineSettingsSection.cs
- PowerEase.cs
- FilteredAttributeCollection.cs
- ListControl.cs
- MultiAsyncResult.cs
- EncodingTable.cs
- ZoneIdentityPermission.cs
- BufferBuilder.cs
- EventMappingSettings.cs
- CategoryNameCollection.cs
- CharConverter.cs
- activationcontext.cs
- TextFormattingConverter.cs
- CodeCommentStatement.cs
- BaseDataListPage.cs
- MeshGeometry3D.cs
- EntityDataSourceEntityTypeFilterItem.cs
- EqualityComparer.cs
- sortedlist.cs
- DbProviderFactoriesConfigurationHandler.cs
- COM2IDispatchConverter.cs
- HelpInfo.cs
- DbMetaDataColumnNames.cs
- PrivilegeNotHeldException.cs
- CookieHandler.cs
- OperatingSystem.cs
- GeneralTransform3DTo2DTo3D.cs
- Sql8ExpressionRewriter.cs
- SafeNativeMethodsCLR.cs
- DataMemberFieldEditor.cs
- WSSecurityPolicy.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- UnsafeNativeMethods.cs
- DataRowExtensions.cs
- AddInToken.cs
- SystemFonts.cs
- ToolboxControl.cs
- InputElement.cs
- EntityDataSourceValidationException.cs
- FirstMatchCodeGroup.cs
- Run.cs
- TypeNameConverter.cs
- BreakSafeBase.cs
- VectorAnimation.cs
- SectionUpdates.cs
- Assert.cs
- SmtpClient.cs
- GridViewUpdatedEventArgs.cs
- SqlDataSourceCustomCommandPanel.cs
- RelationshipEnd.cs
- CryptoApi.cs
- SpotLight.cs
- TdsRecordBufferSetter.cs
- Debug.cs
- CalculatedColumn.cs
- login.cs
- Queue.cs
- TargetControlTypeAttribute.cs
- StorageAssociationTypeMapping.cs
- XmlSchemaAnnotated.cs
- StylusPointPropertyInfo.cs
- MessagingDescriptionAttribute.cs
- OleStrCAMarshaler.cs
- NaturalLanguageHyphenator.cs
- ListItemParagraph.cs