X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Frouter_flexml.cpp;h=54232de4682896b5563e3bed92b54f47094914cc;hb=586d78659d671683f33ec55f4a7d32b28e345ccd;hp=ba1afa0692807009b24290f424bdd6dee1940114;hpb=b02df3fd0849c5222081013420c18f949c55f9c5;p=metaproxy-moved-to-github.git diff --git a/src/router_flexml.cpp b/src/router_flexml.cpp index ba1afa0..54232de 100644 --- a/src/router_flexml.cpp +++ b/src/router_flexml.cpp @@ -119,6 +119,8 @@ void mp::RouterFleXML::Rep::parse_xml_filters(xmlDocPtr doc, id_value = value; else if (name == "type") type_value = value; + else if (name == "base") + ;// Ignore XInclude base attribute. else throw mp::XMLError("Only attribute id or type allowed" " in filter element. Got " + name); @@ -130,15 +132,14 @@ void mp::RouterFleXML::Rep::parse_xml_filters(xmlDocPtr doc, type_value.c_str(), m_dl_path.c_str()); m_factory->add_creator_dl(type_value, m_dl_path); } - mp::filter::Base* filter_base = m_factory->create(type_value); + boost::shared_ptr fb(m_factory->create(type_value)); - filter_base->configure(node, test_only, file_include_path); + fb->configure(node, test_only, file_include_path); if (m_id_filter_map.find(id_value) != m_id_filter_map.end()) throw mp::XMLError("Filter " + id_value + " already defined"); - m_id_filter_map[id_value] = - boost::shared_ptr(filter_base); + m_id_filter_map[id_value] = fb; node = mp::xml::jump_to_next(node, XML_ELEMENT_NODE); } @@ -176,6 +177,8 @@ void mp::RouterFleXML::Rep::parse_xml_filters1(xmlDocPtr doc, refid_value = value; else if (name == "type") type_value = value; + else if (name == "base") + ;// Ignore XInclude base attribute. else throw mp::XMLError("Only attribute 'refid' or 'type'" " allowed for element 'filter'." @@ -238,6 +241,8 @@ void mp::RouterFleXML::Rep::parse_xml_routes(xmlDocPtr doc, if (name == "id") id_value = value; + else if (name == "base") + ;// Ignore XInclude base attribute. else throw mp::XMLError("Only attribute 'id' allowed for" " element 'route'." @@ -248,6 +253,9 @@ void mp::RouterFleXML::Rep::parse_xml_routes(xmlDocPtr doc, // process / nodes in third level const xmlNode* node3 = mp::xml::jump_to_children(node, XML_ELEMENT_NODE); + + + parse_xml_filters1(doc, node3, test_only, file_include_path, route); std::map::iterator it; @@ -344,6 +352,8 @@ void mp::RouterFleXML::Rep::parse_xml_config_dom(xmlDocPtr doc, if (name == "route") m_start_route = value; + else if (name == "base") + ;// Ignore XInclude base attribute. else throw mp::XMLError("Only attribute route allowed" " in element 'start'. Got " + name); @@ -421,8 +431,6 @@ mp::RouterFleXML::RouterFleXML(std::string xmlconf, mp::FactoryFilter &factory, bool test_only) : m_p(new Rep) { - LIBXML_TEST_VERSION; - xmlDocPtr doc = xmlParseMemory(xmlconf.c_str(), xmlconf.size()); if (!doc)