package com.salesforce.storm.spout.sideline;

import com.salesforce.storm.spout.sideline.config.SidelineSpoutConfig;
import com.salesforce.storm.spout.sideline.handler.SidelineSpoutHandler;
import com.salesforce.storm.spout.sideline.handler.SidelineVirtualSpoutHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;

/**
 * Spout instance.
 */
public class SidelineSpout extends DynamicSpout {

    private static final Logger logger = LoggerFactory.getLogger(SidelineSpout.class);

    /**
     * Used to overload and modify settings before passing them to the constructor.
     * @param config Supplied configuration.
     * @return Resulting configuration.
     */
    private static Map getConfig(Map config) {
        config.put(SidelineSpoutConfig.SPOUT_HANDLER_CLASS, SidelineSpoutHandler.class.getName());
        config.put(SidelineSpoutConfig.VIRTUAL_SPOUT_HANDLER_CLASS, SidelineVirtualSpoutHandler.class.getName());
        return config;
    }

    public SidelineSpout(Map config) {
        super(getConfig(config));
    }
}

@@ -361,16 +361,52 @@
 out 
-instance
+that supports sidelining messages by filters
 .%0A *
@@ -757,32 +757,141 @@
  Map
- getConfig(Map config) %7B
+%3CString, Object%3E modifyConfig(Map%3CString, Object%3E _config) %7B%0A        final Map%3CString, Object%3E config = Tools.immutableCopy(_config);
 %0A   
@@ -1130,16 +1130,133 @@
 %0A    %7D%0A%0A
+    /**%0A     * Spout that supports sidelining messages by filters.%0A     * @param config Spout configuration.%0A     */%0A
     publ
@@ -1300,19 +1300,22 @@
   super(
-get
+modify
 Config(c

Rename config method and make an immutable copy