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
- CryptoStream.cs
- Mappings.cs
- EventLogPermissionEntryCollection.cs
- SchemaDeclBase.cs
- Sql8ConformanceChecker.cs
- KeyValuePairs.cs
- Publisher.cs
- DesignerAttribute.cs
- KeyedCollection.cs
- StrokeNodeOperations.cs
- WebService.cs
- Roles.cs
- AffineTransform3D.cs
- HtmlWindow.cs
- XmlDocumentType.cs
- OracleMonthSpan.cs
- PersistenceProviderBehavior.cs
- ColorConvertedBitmap.cs
- Array.cs
- SeekableReadStream.cs
- NotCondition.cs
- WebPartMenuStyle.cs
- RoutedEventArgs.cs
- WindowsComboBox.cs
- RuleSettingsCollection.cs
- Opcode.cs
- NodeLabelEditEvent.cs
- StaticTextPointer.cs
- Socket.cs
- ObjectDataProvider.cs
- UICuesEvent.cs
- DetailsViewPagerRow.cs
- String.cs
- ScrollProviderWrapper.cs
- _SslStream.cs
- X509Extension.cs
- StorageComplexTypeMapping.cs
- TextElementEnumerator.cs
- CompilerWrapper.cs
- RangeValidator.cs
- WinInetCache.cs
- ForeignKeyConstraint.cs
- CodeAttachEventStatement.cs
- SqlTrackingQuery.cs
- webeventbuffer.cs
- ConfigurationException.cs
- RenderOptions.cs
- TimeEnumHelper.cs
- RuleSetDialog.cs
- ReadOnlyDataSourceView.cs
- webeventbuffer.cs
- UserControlParser.cs
- DbFunctionCommandTree.cs
- XmlDictionaryWriter.cs
- FlowDocumentPage.cs
- SmtpSection.cs
- SingleTagSectionHandler.cs
- IFlowDocumentViewer.cs
- Focus.cs
- PeerPresenceInfo.cs
- MobileCategoryAttribute.cs
- grammarelement.cs
- GatewayDefinition.cs
- StylusPointProperties.cs
- InlineUIContainer.cs
- PartialList.cs
- DataPager.cs
- QilList.cs
- SegmentInfo.cs
- EncodingTable.cs
- PipeSecurity.cs
- HttpCacheParams.cs
- CapabilitiesAssignment.cs
- TokenBasedSet.cs
- Persist.cs
- PhoneCall.cs
- PathHelper.cs
- GridSplitter.cs
- XmlBufferedByteStreamReader.cs
- StorageMappingItemCollection.cs
- AttachedAnnotationChangedEventArgs.cs
- SecurityKeyType.cs
- QueryOperatorEnumerator.cs
- QilXmlReader.cs
- LogReserveAndAppendState.cs
- DynamicValidatorEventArgs.cs
- ButtonFieldBase.cs
- SynthesizerStateChangedEventArgs.cs
- SystemWebSectionGroup.cs
- ButtonChrome.cs
- ValuePattern.cs
- Oid.cs
- CodeArrayIndexerExpression.cs
- PointValueSerializer.cs
- EDesignUtil.cs
- AffineTransform3D.cs
- RoleGroupCollection.cs
- ProxyManager.cs
- EncodingTable.cs
- FixedSOMTableCell.cs