Esempio n. 1
0
void
test_001(Fixture *fixture, G_GNUC_UNUSED gconstpointer data)
{
	GType type = g_type_from_name("Log4gRegexFilter");
	g_assert(type);
	Log4gFilter *filter = g_object_new(type, NULL);
	g_assert(filter);
	log4g_filter_activate_options(filter);
	g_assert_cmpint(LOG4G_FILTER_NEUTRAL, ==,
			log4g_filter_decide(filter, fixture->event));
	g_object_set(filter, "regex", "bar", NULL);
	log4g_filter_activate_options(filter);
	g_assert_cmpint(LOG4G_FILTER_ACCEPT, ==,
			log4g_filter_decide(filter, fixture->event));
	g_object_set(filter, "regex", "bork", NULL);
	log4g_filter_activate_options(filter);
	g_assert_cmpint(LOG4G_FILTER_DENY, ==,
			log4g_filter_decide(filter, fixture->event));
	g_object_unref(filter);
}
Esempio n. 2
0
static Log4gFilter *
parse_filter(Log4gConfigurator *base, xmlNodePtr node)
{
	Log4gFilter *filter = NULL;
	xmlChar *type = xmlGetProp(node, (const xmlChar *)"type");
	if (!type) {
		log4g_log_error(Q_("filters must have a `type'"));
		goto exit;
	}
	GType gtype = g_type_from_name((const gchar *)type);
	if (!gtype) {
		log4g_log_error(Q_("%s: invalid `type'"), type);
		goto exit;
	}
	if (!G_TYPE_IS_INSTANTIATABLE(gtype)) {
		log4g_log_error(Q_("%s: is a non-instantiable type"), type);
		goto exit;
	}
	filter = g_object_new(gtype, NULL);
	if (!filter) {
		log4g_log_error(Q_("%s: g_object_new() returned NULL"), type);
		goto exit;
	}
	if (!LOG4G_IS_FILTER(filter)) {
		log4g_log_error(Q_("%s: not an instance of Log4gFilter"), type);
		g_object_unref(filter);
		filter = NULL;
		goto exit;
	}
	node = node->xmlChildrenNode;
	while (node) {
		if (!xmlStrcmp(node->name, (const xmlChar *)"property")) {
			parse_property(base, node, filter);
		} else if (!xmlStrcmp(node->name, (const xmlChar *)"text")) {
			log4g_log_warn(Q_("invalid text element"));
		} else if (!xmlStrcmp(node->name, (const xmlChar *)"comment")) {
			/* do nothing */
		} else {
			log4g_log_warn(Q_("%s: invalid element"), node->name);
		}
		node = node->next;
	}
	log4g_filter_activate_options(filter);
exit:
	if (type) {
		xmlFree(type);
	}
	return filter;
}