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

    All Methods Instance Methods Concrete Methods
    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 Detail

    - #### 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 Detail

    - #### 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`