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, Listresponse) { 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
- AuditLogLocation.cs
- BamlLocalizer.cs
- RowParagraph.cs
- DocumentViewerConstants.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- SqlDataReaderSmi.cs
- DataServices.cs
- CapabilitiesUse.cs
- HMACMD5.cs
- EntityDataSourceColumn.cs
- util.cs
- AutomationProperty.cs
- Registry.cs
- EntityConnectionStringBuilder.cs
- xmlglyphRunInfo.cs
- SystemColors.cs
- RightsManagementInformation.cs
- ObjectViewEntityCollectionData.cs
- CalendarButtonAutomationPeer.cs
- ListMarkerSourceInfo.cs
- MetadataWorkspace.cs
- odbcmetadatafactory.cs
- SizeAnimationBase.cs
- XmlDeclaration.cs
- AssemblyBuilder.cs
- LookupNode.cs
- PageRequestManager.cs
- GestureRecognitionResult.cs
- DrawingGroup.cs
- ConversionContext.cs
- ColumnCollection.cs
- QueryExpr.cs
- GridViewDeleteEventArgs.cs
- WindowsListView.cs
- AttributeUsageAttribute.cs
- PopOutPanel.cs
- MetadataCache.cs
- TypeSystem.cs
- ReferencedAssembly.cs
- MetadataCollection.cs
- DummyDataSource.cs
- ObjectDataSourceSelectingEventArgs.cs
- VirtualizingStackPanel.cs
- DesignTimeVisibleAttribute.cs
- NativeMethods.cs
- ImmutableCollection.cs
- MeasureItemEvent.cs
- AutoResetEvent.cs
- Compilation.cs
- SortableBindingList.cs
- Operator.cs
- CodeSubDirectoriesCollection.cs
- Polygon.cs
- XamlFilter.cs
- ParentQuery.cs
- PartitionerStatic.cs
- UriSectionData.cs
- DataProtection.cs
- XmlSchemaSimpleContentRestriction.cs
- Span.cs
- XmlArrayItemAttribute.cs
- AmbientLight.cs
- Closure.cs
- MD5CryptoServiceProvider.cs
- StreamInfo.cs
- HierarchicalDataBoundControlAdapter.cs
- InvalidCardException.cs
- TreeViewAutomationPeer.cs
- Part.cs
- HttpConfigurationSystem.cs
- PtsContext.cs
- ApplicationSecurityInfo.cs
- TemplatePropertyEntry.cs
- FrameworkContentElement.cs
- VirtualPathProvider.cs
- CrossAppDomainChannel.cs
- StateDesigner.Layouts.cs
- BooleanStorage.cs
- TagPrefixCollection.cs
- UpdateManifestForBrowserApplication.cs
- XmlIgnoreAttribute.cs
- CollectionsUtil.cs
- TextCharacters.cs
- SingleConverter.cs
- dbdatarecord.cs
- XmlEnumAttribute.cs
- SortDescription.cs
- SqlClientWrapperSmiStream.cs
- PrintingPermission.cs
- GPPOINTF.cs
- MsmqAppDomainProtocolHandler.cs
- ActivityXamlServices.cs
- AmbientProperties.cs
- XmlSchemaGroupRef.cs
- Encoder.cs
- DataSourceControlBuilder.cs
- StructuralCache.cs
- GraphicsContext.cs
- IdnMapping.cs
- NameValueFileSectionHandler.cs