MetaFilter not using specified EmbedderMonitor


Overview: MetaFilter is always using the PrintStreamEmbedderMonitor, even when the Embedder is using a different monitor. This is causing logging messages to be output from the MetaFilter to standard output, even though a different behavior has been set in the Embedder. For cases where there are many stories and scenarios which are being filtered, then this can cause a great deal of logging messages in standard output that are expected to be directed elsewhere or suppressed.

Cause: The cause of this issue is the fact that when the Embedder instantiates the MetaFilters it does not pass the monitor that has been set on the Embedder itself. The default monitor, when noen is passed in the constructor, for MetaFilter is the PrintStreamEmbedderMonitor. Which is why it is always being used.

Fix: Modify the method mapStoriesAsPaths in the Embedder class to use new MetaFilter(filter, this.monitor). Thus passing the monitor assigned to the Embedder on to each of the MetaFilters which are created. In the majority of cases this (where the default monitor is used with the Embedder) the behavior will be the same as it is now (since the default monitor is the same for Embedder as it is for MetaFilter). But when a specific monitor is specified for the Embedder, then it will also be used with the MetaFilter instances.




Brian Saylor



Fix versions