Package org.apache.storm.flux.wrappers.spouts

# Class FluxShellSpout

java.lang.Object
org.apache.storm.spout.ShellSpout
org.apache.storm.flux.wrappers.spouts.FluxShellSpout

All Implemented Interfaces:
  `Serializable`, `ISpout`, `IComponent`, `IRichSpout`

public class FluxShellSpout extends ShellSpout implements IRichSpout
A generic `ShellSpout` implementation that allows you specify output fields and even streams without having to subclass `ShellSpout` to do so.

See Also:
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class org.apache.storm.spout.ShellSpout

  `LOG`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FluxShellSpout(String[] command)`
  Create a ShellSpout with command line arguments.
  `FluxShellSpout(String[] args, String[] outputFields)`
  Create a ShellSpout with command line arguments and output fields

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addComponentConfig(String key, Object value)`
  Add configuration for this spout.
  `void`
  `addComponentConfig(String key, List<Object> values)`
  Add configuration for this spout.
  `void`
  `declareOutputFields(OutputFieldsDeclarer declarer)`
  Declare the output schema for all the streams of this topology.
  `Map<String,Object>`
  `getComponentConfiguration()`
  Declare configuration specific to this component.
  `void`
  `setDefaultStream(String[] outputFields)`
  Set default stream outputFields, this method is called from YAML file:
  `void`
  `setNamedStream(String name, String[] outputFields)`
  Set custom *named* stream outputFields, this method is called from YAML file:

  ### Methods inherited from class org.apache.storm.spout.ShellSpout

  `ack, activate, changeChildCWD, close, deactivate, fail, nextTuple, open, setEnv, shouldChangeChildCWD`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.storm.spout.ISpout

  `ack, activate, close, deactivate, fail, nextTuple, open`

- ## Constructor Details

  - ### FluxShellSpout

    public FluxShellSpout(String[] command)
    Create a ShellSpout with command line arguments.
    Parameters:
      `command` - Command line arguments for the bolt

  - ### FluxShellSpout

    public FluxShellSpout(String[] args, String[] outputFields)
    Create a ShellSpout with command line arguments and output fields

    Keep this constructor for backward compatibility.
    Parameters:
      `args` - Command line arguments for the spout
      `outputFields` - Names of fields the spout will emit.

- ## Method Details

  - ### addComponentConfig

    public void addComponentConfig(String key, Object value)
    Add configuration for this spout. This method is called from YAML file:

    ``` className: "org.apache.storm.flux.wrappers.bolts.FluxShellSpout" constructorArgs: # command line - ["python3", "splitsentence.py"] # output fields - ["word"] configMethods: - name: "addComponentConfig" args: ["publisher.data_paths", "actions"] ```
    Parameters:
      `key` - config key
      `value` - config value

  - ### addComponentConfig

    public void addComponentConfig(String key, List<Object> values)
    Add configuration for this spout. This method is called from YAML file:

    ``` className: "org.apache.storm.flux.wrappers.bolts.FluxShellSpout" constructorArgs: # command line - ["python3", "splitsentence.py"] # output fields - ["word"] configMethods: - name: "addComponentConfig" args: - "publisher.data_paths" - ["actions"] ```
    Parameters:
      `key` - config key
      `values` - config values

  - ### setDefaultStream

    public void setDefaultStream(String[] outputFields)
    Set default stream outputFields, this method is called from YAML file:

    ``` spouts: - className: org.apache.storm.flux.wrappers.bolts.FluxShellSpout id: my_spout constructorArgs: - [python3, my_spout.py] configMethods: - name: setDefaultStream args: - [word, count] ```
    Parameters:
      `outputFields` - Names of fields the spout will emit (if any) in default stream.

  - ### setNamedStream

    public void setNamedStream(String name, String[] outputFields)
    Set custom *named* stream outputFields, this method is called from YAML file:

    ``` spouts: - className: org.apache.storm.flux.wrappers.bolts.FluxShellSpout id: my_spout constructorArgs: - [python3, my_spout.py] configMethods: - name: setNamedStream args: - first - [word, count] ```
    Parameters:
      `name` - Name of stream the spout will emit into.
      `outputFields` - Names of fields the spout will emit in custom *named* stream.

  - ### declareOutputFields

    public void declareOutputFields(OutputFieldsDeclarer declarer)
    Description copied from interface: `IComponent`
    Declare the output schema for all the streams of this topology.
    Specified by:
      `declareOutputFields` in interface `IComponent`
    Parameters:
      `declarer` - this is used to declare output stream ids, output fields, and whether or not each output stream is a direct stream

  - ### getComponentConfiguration

    public Map<String,Object> getComponentConfiguration()
    Description copied from interface: `IComponent`
    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 `TopologyBuilder`
    Specified by:
      `getComponentConfiguration` in interface `IComponent`