+\r
+ if (!XMLString::equals(e->getLocalName(), PathRegex)) {\r
+ // Handle nested PathRegexs.\r
+ path = XMLHelper::getFirstChildElement(e,PathRegex);\r
+ for (int i=1; path; ++i, path=XMLHelper::getNextSiblingElement(path,PathRegex)) {\r
+ const XMLCh* n=path->getAttributeNS(NULL,regex);\r
+ if (!n || !*n) {\r
+ log.warn("Skipping PathRegex element (%d) with empty regex attribute",i);\r
+ continue;\r
+ }\r
+\r
+ auto_ptr<Override> o(new Override(path,log,this));\r
+\r
+ const XMLCh* flag=path->getAttributeNS(NULL,ignoreCase);\r
+ try {\r
+ auto_ptr<RegularExpression> re(\r
+ new RegularExpression(n, (flag && (*flag==chLatin_f || *flag==chDigit_0)) ? &chNull : ignoreOption)\r
+ );\r
+ m_regexps.push_back(make_pair(re.release(), o.release()));\r
+ }\r
+ catch (XMLException& ex) {\r
+ auto_ptr_char tmp(ex.getMessage());\r
+ log.error("caught exception while parsing PathRegex regular expression (%d): %s", i, tmp.get());\r
+ throw ConfigurationException("Invalid regular expression in PathRegex element.");\r
+ }\r
+\r
+ log.debug("Added <PathRegex> mapping (%s)", m_regexps.back().second->getString("regex").second);\r
+ }\r
+ }\r