private static ICollection CreateFilters(Uri uri, string extension, string mime_type)
{
SortedList matched_filters_by_flavor = FilterFlavor.NewHashtable ();
foreach (FilterFlavor flavor in FilterFlavor.Flavors) {
if (flavor.IsMatch (uri, extension, mime_type)) {
Filter matched_filter = null;
try {
matched_filter = (Filter) Activator.CreateInstance ((Type) FilterFlavor.FilterTable [flavor]);
if (flavor.MimeType != null)
matched_filter.MimeType = flavor.MimeType;
if (flavor.Extension != null)
matched_filter.Extension = flavor.Extension;
} catch (Exception e) {
continue;
}
matched_filters_by_flavor [flavor] = matched_filter;
}
}
if (Debug) {
foreach (DictionaryEntry entry in matched_filters_by_flavor) {
FilterFlavor flav = (FilterFlavor) entry.Key;
Filter filter = (Filter) entry.Value;
Logger.Log.Debug ("Found matching filter: {0}, Weight: {1}", filter, flav.Weight);
}
}
return matched_filters_by_flavor.Values;
}