Class ProcessDataSource


  • public class ProcessDataSource
    extends DataSource
    DataSource that uses the standard output of a System process.
    Since:
    24 Mar 2015
    Author:
    Mark Taylor
    • Constructor Detail

      • ProcessDataSource

        public ProcessDataSource​(java.lang.ProcessBuilder pbuilder)
        Constructor.
        Parameters:
        pbuilder - process builder
    • Method Detail

      • getRawInputStream

        protected java.io.InputStream getRawInputStream()
                                                 throws java.io.IOException
        Description copied from class: DataSource
        Provides a new InputStream for this data source. This method should be implemented by subclasses to provide a new InputStream giving the raw content of the source each time it is called. The general contract of this method is that each time it is called it will return a stream with the same content.
        Specified by:
        getRawInputStream in class DataSource
        Returns:
        an InputStream containing the data of this source
        Throws:
        java.io.IOException
      • createCommandLineProcessBuilder

        public static java.lang.ProcessBuilder createCommandLineProcessBuilder​(java.lang.String cmdLine)
        Utility method to create a process builder given a shell command line that generates output to standard output. The command line may contain shell syntax like | symbols.

        This method simply sets up a ProcessBuilder to execute a process with the argv { "sh", "-c", cmdLine }. I haven't tested this exhaustively, but I'd expect it to work on un*x-like systems. I've got no idea if there's any chance of getting something like this to work on MS Windows, or even if such a thing would be any use.

        Parameters:
        cmdLine - shell command that generates output to stdout
        Returns:
        process builder to execute cmdLine