Exemple #1
0
        internal override IEnumerable <T> GetObjectsInOrganization <T>(string identityString, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData)
        {
            IEnumerable <T> objectsInOrganization = base.GetObjectsInOrganization <T>(identityString, rootId, session, optionalData);

            if (typeof(T) != typeof(TransportRule))
            {
                return(objectsInOrganization);
            }
            ClassificationIdentityMatcher <Tuple <TransportRule, XDocument> > nameMatcher = this.CreateNameMatchFilter(identityString);

            if (nameMatcher == null)
            {
                return(objectsInOrganization);
            }
            List <T>    list        = objectsInOrganization.ToList <T>();
            QueryFilter queryFilter = ClassificationRuleCollectionIdParameter.CreateExcludeFilter <T>(list);

            if (optionalData != null && optionalData.AdditionalFilter != null)
            {
                queryFilter = ((queryFilter == null) ? optionalData.AdditionalFilter : QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    optionalData.AdditionalFilter
                }));
            }
            IEnumerable <Tuple <TransportRule, XDocument> > source = DlpUtils.AggregateOobAndCustomClassificationDefinitions(session.SessionSettings.CurrentOrganizationId, session as IConfigurationSession, null, queryFilter, new ClassificationDefinitionsDataReader(false), null);

            return(list.Concat(from rulePackDataObject in source
                               where nameMatcher.Match(rulePackDataObject)
                               select(T)((object)rulePackDataObject.Item1)));
        }
Exemple #2
0
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            IEnumerable <T> enumerable = Enumerable.Empty <T>();

            if (this.ShouldIncludeOutOfBoxCollections && VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled && base.InternalADObjectId == null)
            {
                bool flag  = false;
                bool flag2 = OrganizationId.ForestWideOrgId.Equals(session.SessionSettings.CurrentOrganizationId);
                if (flag2 && this.IsHierarchical && this.IsHierarchyValid)
                {
                    ClassificationRuleCollectionIdParameter classificationRuleCollectionIdParameter = new ClassificationRuleCollectionIdParameter(this.FriendlyName);
                    enumerable = classificationRuleCollectionIdParameter.GetObjects <T>(rootId, (IConfigDataProvider)session, optionalData, out notFoundReason);
                    flag       = true;
                }
                else if (!flag2 && !this.IsHierarchical)
                {
                    ITopologyConfigurationSession session2 = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 431, "GetObjects", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\transport\\ClassificationDefinitions\\ClassificationRuleCollectionIdParameter.cs");
                    enumerable = base.GetObjects <T>(ClassificationDefinitionUtils.GetClassificationRuleCollectionContainerId(session2), session2, null, out notFoundReason);
                    flag       = true;
                }
                if (flag)
                {
                    if (optionalData == null)
                    {
                        optionalData = new OptionalIdentityData();
                    }
                    List <T>    list        = enumerable.ToList <T>();
                    QueryFilter queryFilter = ClassificationRuleCollectionIdParameter.CreateExcludeFilter <T>(list);
                    if (queryFilter != null)
                    {
                        optionalData.AdditionalFilter = ((optionalData.AdditionalFilter == null) ? queryFilter : QueryFilter.AndTogether(new QueryFilter[]
                        {
                            optionalData.AdditionalFilter,
                            queryFilter
                        }));
                    }
                    enumerable = list;
                }
            }
            return(enumerable.Concat(base.GetObjects <T>(rootId, session, subTreeSession, optionalData, out notFoundReason)));
        }