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
- ToolStripItemEventArgs.cs
- NavigationProgressEventArgs.cs
- XhtmlBasicFormAdapter.cs
- SettingsPropertyValue.cs
- ToolStripContentPanel.cs
- regiisutil.cs
- InternalsVisibleToAttribute.cs
- EventItfInfo.cs
- XPathNodeIterator.cs
- SafeSecurityHandles.cs
- OdbcConnectionOpen.cs
- FrameworkContentElement.cs
- PersianCalendar.cs
- TypeUtils.cs
- ViewManagerAttribute.cs
- RangeContentEnumerator.cs
- SimpleWorkerRequest.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- DelegatingTypeDescriptionProvider.cs
- DesignerSerializationManager.cs
- BaseCollection.cs
- ProxyWebPart.cs
- AssignDesigner.xaml.cs
- RegexWorker.cs
- _TransmitFileOverlappedAsyncResult.cs
- StylusPointPropertyUnit.cs
- CompatibleIComparer.cs
- SHA1.cs
- DoubleLinkListEnumerator.cs
- BinaryOperationBinder.cs
- SmtpException.cs
- WorkflowMarkupSerializerMapping.cs
- ReadOnlyMetadataCollection.cs
- StrokeIntersection.cs
- WindowsAuthenticationModule.cs
- RuntimeIdentifierPropertyAttribute.cs
- DurationConverter.cs
- PagedControl.cs
- Configuration.cs
- ClrPerspective.cs
- DecimalKeyFrameCollection.cs
- SerializationObjectManager.cs
- VirtualDirectoryMappingCollection.cs
- ToolStripSeparator.cs
- FontUnitConverter.cs
- SmiRequestExecutor.cs
- ColorPalette.cs
- XslException.cs
- XmlEventCache.cs
- XPathSingletonIterator.cs
- InsufficientMemoryException.cs
- DataGridHeaderBorder.cs
- Crc32Helper.cs
- NavigationWindow.cs
- AxHostDesigner.cs
- AssemblyName.cs
- DockProviderWrapper.cs
- ReadOnlyCollection.cs
- WebPartUtil.cs
- CodeMethodReturnStatement.cs
- APCustomTypeDescriptor.cs
- TreeNodeStyle.cs
- RemotingServices.cs
- ImageDrawing.cs
- XmlAttributeOverrides.cs
- ManipulationInertiaStartingEventArgs.cs
- LoginViewDesigner.cs
- HttpRequest.cs
- DbDataRecord.cs
- MetaChildrenColumn.cs
- MsmqIntegrationChannelListener.cs
- CheckBoxRenderer.cs
- ImmutableCollection.cs
- ModifierKeysConverter.cs
- Keywords.cs
- SoapFault.cs
- ManifestBasedResourceGroveler.cs
- XmlDataImplementation.cs
- WebPartConnectionsDisconnectVerb.cs
- WindowsBrush.cs
- EmptyEnumerator.cs
- ExitEventArgs.cs
- ECDiffieHellmanPublicKey.cs
- ItemContainerGenerator.cs
- _LocalDataStoreMgr.cs
- AccessDataSource.cs
- CodeExpressionStatement.cs
- Method.cs
- BaseTemplatedMobileComponentEditor.cs
- WorkflowQueue.cs
- DataGridViewCheckBoxColumn.cs
- DiscriminatorMap.cs
- EntityDataSource.cs
- StylusTouchDevice.cs
- InstanceDataCollectionCollection.cs
- FontEmbeddingManager.cs
- SoapClientMessage.cs
- ConnectionPoint.cs
- WebPartDisplayModeEventArgs.cs
- RawStylusInputCustomData.cs