// tag::validateFilterMap[]
        private void ValidateFilterMap(FilterMap filterMap) {
            // Validate the proposed filter mapping
            string filterName = filterMap.GetFilterName();
            string[] servletNames = filterMap.GetServletNames();
            string[] urlPatterns = filterMap.GetURLPatterns();
            if (FindFilterDef(filterName) == null)
                throw new Exception(
                    sm.GetString("standardContext.filterMap.name", filterName));

            if (!filterMap.GetMatchAllServletNames() &&
                !filterMap.GetMatchAllUrlPatterns() &&
                (servletNames.Length == 0) && (urlPatterns.Length == 0))
                throw new Exception(
                    sm.GetString("standardContext.filterMap.either"));
            // FIXME: Older spec revisions may still check this
            /*
            if ((servletNames.length != 0) && (urlPatterns.length != 0))
                throw new IllegalArgumentException
                    (sm.getString("standardContext.filterMap.either"));
            */
            for (int i = 0; i < urlPatterns.Length; i++) {
                if (!ValidateURLPattern(urlPatterns[i])) {
                    throw new Exception(
                        sm.GetString("standardContext.filterMap.pattern",
                            urlPatterns[i]));
                }
            }
        }
        // tag::validateFilterMap[]
        private void ValidateFilterMap(FilterMap filterMap)
        {
            // Validate the proposed filter mapping
            string filterName = filterMap.GetFilterName();

            string[] servletNames = filterMap.GetServletNames();
            string[] urlPatterns  = filterMap.GetURLPatterns();
            if (FindFilterDef(filterName) == null)
            {
                throw new Exception(
                          sm.GetString("standardContext.filterMap.name", filterName));
            }

            if (!filterMap.GetMatchAllServletNames() &&
                !filterMap.GetMatchAllUrlPatterns() &&
                (servletNames.Length == 0) && (urlPatterns.Length == 0))
            {
                throw new Exception(
                          sm.GetString("standardContext.filterMap.either"));
            }
            // FIXME: Older spec revisions may still check this

            /*
             * if ((servletNames.length != 0) && (urlPatterns.length != 0))
             *  throw new IllegalArgumentException
             *      (sm.getString("standardContext.filterMap.either"));
             */
            for (int i = 0; i < urlPatterns.Length; i++)
            {
                if (!ValidateURLPattern(urlPatterns[i]))
                {
                    throw new Exception(
                              sm.GetString("standardContext.filterMap.pattern",
                                           urlPatterns[i]));
                }
            }
        }