Exemplo n.º 1
0
        /// <summary>
        /// Validates the pattern.
        /// </summary>
        /// <param name="pattern">The pattern to validate.</param>
        private static void ValidatePattern(string pattern)
        {
            ExceptionUtils.CheckArgumentStringNotNullOrEmpty(pattern, "pattern");

            string patternWithoutMinusSign = pattern;

            RemoveExcludeOperator(ref patternWithoutMinusSign);

            if (patternWithoutMinusSign == WildCard)
            {
                return;
            }

            string[] segments     = patternWithoutMinusSign.Split(NamespaceSeparator);
            int      segmentCount = segments.Length;

            if (segmentCount == 1)
            {
                throw new ArgumentException(Strings.AnnotationFilterPattern_InvalidPatternMissingDot(pattern));
            }

            for (int idx = 0; idx < segmentCount; idx++)
            {
                string currentSegment = segments[idx];
                if (string.IsNullOrEmpty(currentSegment))
                {
                    throw new ArgumentException(Strings.AnnotationFilterPattern_InvalidPatternEmptySegment(pattern));
                }

                if (currentSegment != WildCard && currentSegment.Contains(WildCard))
                {
                    throw new ArgumentException(Strings.AnnotationFilterPattern_InvalidPatternWildCardInSegment(pattern));
                }

                bool isLastSegment = idx + 1 == segmentCount;
                if (currentSegment == WildCard && !isLastSegment)
                {
                    throw new ArgumentException(Strings.AnnotationFilterPattern_InvalidPatternWildCardMustBeInLastSegment(pattern));
                }
            }
        }