// Path: hangout-filters/hangout-filters-add/src/main/java/com/ctrip/ops/sysdev/filters/Add.java
// @Log4j2
// public class Add extends BaseFilter {
//     public Add(Map config) {
//         super(config);
//     }
// 
//     private Map<FieldSetter, TemplateRender> f;
// 
//     protected void prepare() {
//         f = new HashMap();
// 
//         Map<String, String> fields = (Map<String, String>) config.get("fields");
//         Iterator<Entry<String, String>> it = fields.entrySet().iterator();
//         while (it.hasNext()) {
//             Map.Entry<String, String> entry = it.next();
// 
//             String field = entry.getKey();
//             String value = entry.getValue();
// 
//             try {
//                 this.f.put(FieldSetter.getFieldSetter(field), TemplateRender.getRender(value));
//             } catch (IOException e) {
//                 log.fatal(e.getMessage());
//                 System.exit(1);
//             }
//         }
//     }
// 
//     @Override
//     protected Map filter(final Map event) {
//         Iterator<Entry<FieldSetter, TemplateRender>> it = f.entrySet().iterator();
//         while (it.hasNext()) {
//             Map.Entry<FieldSetter, TemplateRender> entry = it.next();
// 
//             FieldSetter fieldSetter = entry.getKey();
//             TemplateRender render = entry.getValue();
//             fieldSetter.setField(event, render.render(event));
//         }
//         return event;
//     }
// }


import java.util.HashMap;
import java.util.Map;
import com.ctrip.ops.sysdev.filters.Add;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.yaml.snakeyaml.Yaml;
package com.ctrip.ops.sysdev.test;



public class TestAddFilter {
    @Test
    public void testAddFilter() {
        String c = String.format("%s\n%s\n%s\n%s\n%s\n%s\n%s",
                "        fields:",
                "            nick: '${name}-badboy'",
                "            gender: 'male'",
                "            '[metric][value1]': '10'",
                "            '[metric][value2]': ${name}",
                "            '[metric][value3]': '[extra][value]'",
                "            '[metric][value4]': '[extra][value2]'"
        );
        Yaml yaml = new Yaml();
        Map config = (Map) yaml.load(c);
        Assert.assertNotNull(config);

// Path: hangout-filters/hangout-filters-add/src/main/java/com/ctrip/ops/sysdev/filters/Add.java
// @Log4j2
// public class Add extends BaseFilter {
//     public Add(Map config) {
//         super(config);
//     }
// 
//     private Map<FieldSetter, TemplateRender> f;
// 
//     protected void prepare() {
//         f = new HashMap();
// 
//         Map<String, String> fields = (Map<String, String>) config.get("fields");
//         Iterator<Entry<String, String>> it = fields.entrySet().iterator();
//         while (it.hasNext()) {
//             Map.Entry<String, String> entry = it.next();
// 
//             String field = entry.getKey();
//             String value = entry.getValue();
// 
//             try {
//                 this.f.put(FieldSetter.getFieldSetter(field), TemplateRender.getRender(value));
//             } catch (IOException e) {
//                 log.fatal(e.getMessage());
//                 System.exit(1);
//             }
//         }
//     }
// 
//     @Override
//     protected Map filter(final Map event) {
//         Iterator<Entry<FieldSetter, TemplateRender>> it = f.entrySet().iterator();
//         while (it.hasNext()) {
//             Map.Entry<FieldSetter, TemplateRender> entry = it.next();
// 
//             FieldSetter fieldSetter = entry.getKey();
//             TemplateRender render = entry.getValue();
//             fieldSetter.setField(event, render.render(event));
//         }
//         return event;
//     }
// }


// Path: hangout-filters/hangout-filters-add/src/test/java/com/ctrip/ops/sysdev/test/TestAddFilter.java
import java.util.HashMap;
import java.util.Map;
import com.ctrip.ops.sysdev.filters.Add;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.yaml.snakeyaml.Yaml;

package com.ctrip.ops.sysdev.test;



public class TestAddFilter {
    @Test
    public void testAddFilter() {
        String c = String.format("%s\n%s\n%s\n%s\n%s\n%s\n%s",
                "        fields:",
                "            nick: '${name}-badboy'",
                "            gender: 'male'",
                "            '[metric][value1]': '10'",
                "            '[metric][value2]': ${name}",
                "            '[metric][value3]': '[extra][value]'",
                "            '[metric][value4]': '[extra][value2]'"
        );
        Yaml yaml = new Yaml();
        Map config = (Map) yaml.load(c);
        Assert.assertNotNull(config);

        Add addFilter = new Add(config);