Package org.apache.storm.flux.wrappers.bolts

# Class FluxShellBolt

java.lang.Object
org.apache.storm.task.ShellBolt
org.apache.storm.flux.wrappers.bolts.FluxShellBolt

All Implemented Interfaces:
  `Serializable`, `IBolt`, `IComponent`, `IRichBolt`

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

See Also:
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class org.apache.storm.task.ShellBolt

  `HEARTBEAT_STREAM_ID, LOG`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FluxShellBolt(String[] command)`
  Create a ShellBolt with command line arguments.
  `FluxShellBolt(String[] command, String[] outputFields)`
  Create a ShellBolt with command line arguments and output fields Keep this constructor for backward compatibility.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addComponentConfig(String key, Object value)`
  Add configuration for this bolt.
  `void`
  `addComponentConfig(String key, List<Object> values)`
  Add configuration for this bolt.
  `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.task.ShellBolt

  `changeChildCWD, cleanup, execute, prepare, 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.task.IBolt

  `cleanup, execute, prepare`

- ## Constructor Details

  - ### FluxShellBolt

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

  - ### FluxShellBolt

    public FluxShellBolt(String[] command, String[] outputFields)
    Create a ShellBolt with command line arguments and output fields Keep this constructor for backward compatibility.
    Parameters:
      `command` - Command line arguments for the bolt
      `outputFields` - Names of fields the bolt will emit (if any).

- ## Method Details

  - ### addComponentConfig

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

    ``` className: "org.apache.storm.flux.wrappers.bolts.FluxShellBolt" 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 bolt. This method is called from YAML file:

    ``` className: "org.apache.storm.flux.wrappers.bolts.FluxShellBolt" 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:

    ``` bolts: - className: org.apache.storm.flux.wrappers.bolts.FluxShellBolt id: my_bolt constructorArgs: - [python3, my_bolt.py] configMethods: - name: setDefaultStream args: - [word, count] ```
    Parameters:
      `outputFields` - Names of fields the bolt 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:

    ``` bolts: - className: org.apache.storm.flux.wrappers.bolts.FluxShellBolt id: my_bolt constructorArgs: - [python3, my_bolt.py] configMethods: - name: setNamedStream args: - first - [word, count] ```
    Parameters:
      `name` - Name of stream the bolt will emit into.
      `outputFields` - Names of fields the bolt 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`