package backtype.storm.topology;
import java.io.Serializable;
import java.util.Map;
/**
* Common methods for all possible components in a topology. This interface is
* used when defining topologies using the Java API.
*/
public interface IComponent extends Serializable {
/**
* Declare the output schema for all the streams of this topology.
*
* @param declarer
* this is used to declare output stream ids, output fields, and
* whether or not each output stream is a direct stream
*/
void declareOutputFields(OutputFieldsDeclarer declarer);
/**
* Declare configuration specific to this component. Only a subset of the
* "topology.*" configs can be overridden. The component configuration can
* be further overridden when constructing the topology using
* {@link TopologyBuilder}
*
*/
Map<String, Object> getComponentConfiguration();
}