+ return new TFilter;
+}
+
+// Pass well-formed XML and valid configuration to it (implicit NS)
+BOOST_AUTO_TEST_CASE( test_router_flexml_1 )
+{
+ try
+ {
+ std::string xmlconf = "<?xml version=\"1.0\"?>\n"
+ "<metaproxy xmlns=\"http://indexdata.com/metaproxy\""
+ " version=\"1.0\">\n"
+ " <start route=\"start\"/>\n"
+ " <filters>\n"
+ " <filter id=\"front_default\" type=\"frontend_net\">\n"
+ " <port>@:210</port>\n"
+ " </filter>\n"
+ " <filter id=\"log_cout1\" type=\"log\">\n"
+ " <message>my msg</message>\n"
+ " </filter>\n"
+ " <filter id=\"tfilter_id\" type=\"tfilter\"/>\n"
+ " <filter id=\"log_cout2\" type=\"log\">\n"
+ " <message>other</message>\n"
+ " </filter>\n"
+ " </filters>\n"
+ " <routes>\n"
+ " <route id=\"start\">\n"
+ " <filter refid=\"front_default\"/>\n"
+ " <filter refid=\"log_cout1\"/>\n"
+ " <filter type=\"tfilter\">\n"
+ " </filter>\n"
+ " <filter type=\"z3950_client\">\n"
+ " </filter>\n"
+ " </route>\n"
+ " </routes>\n"
+ "</metaproxy>\n";
+
+ mp::FactoryStatic factory;
+ factory.add_creator("tfilter", filter_creator);
+ mp::RouterFleXML rflexml(xmlconf, factory, true);
+ BOOST_CHECK_EQUAL(tfilter_ref, 2);
+ }
+ catch ( std::runtime_error &e) {
+ std::cout << "std::runtime error: " << e.what() << "\n";
+ BOOST_CHECK (false);
+ }
+ catch ( ... ) {
+ BOOST_CHECK (false);
+ }
+ BOOST_CHECK_EQUAL(tfilter_ref, 0);
+}
+
+// Pass non-wellformed XML
+BOOST_AUTO_TEST_CASE( test_router_flexml_2 )
+{
+ bool got_error_as_expected = false;
+ try
+ {
+ std::string xmlconf_invalid = "<?xml version=\"1.0\"?>\n"
+ "<mp:metaproxy xmlns:mp=\"http://indexdata.com/metaproxy\" version=\"1.0\">\n"
+ " <start route=\"start\"/>\n"
+ " <filters>\n"
+ " <filter id=\"front_default\" type=\"frontend_net\">\n"
+ " <port>@:210</port>\n";