package com.netflix.suro.routing.filter.lang;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.netflix.suro.routing.filter.MessageFilters;
import com.netflix.suro.routing.filter.MessageFilter;
import org.antlr.runtime.Token;
import org.antlr.runtime.tree.CommonTree;
import org.antlr.runtime.tree.Tree;
public class OrTreeNode extends CommonTree implements MessageFilterTranslatable {
@Override
@SuppressWarnings("unchecked")
public MessageFilter translate() {
return MessageFilters.or(
Lists.transform(getChildren(), new Function<Object, MessageFilter>() {
@Override
public MessageFilter apply(Object input) {
MessageFilterTranslatable node = (MessageFilterTranslatable) input;
return node.translate();
}
})
);
}
public OrTreeNode(Token t) {
super(t);
}
public OrTreeNode(OrTreeNode node) {
super(node);
}
public Tree dupNode() {
return new OrTreeNode(this);
} // for dup'ing type
public String toString() {
return String.format("%s<%s>", token.getText(), getClass().getSimpleName());
}
}