Class ProcessDataSource

java.lang.Object
uk.ac.starlink.util.DataSource
uk.ac.starlink.util.ProcessDataSource

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

    • ProcessDataSource

      public ProcessDataSource(ProcessBuilder pbuilder)
      Constructor.
      Parameters:
      pbuilder - process builder
  • Method Details

    • getRawInputStream

      protected InputStream getRawInputStream() throws 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:
      IOException
    • createCommandLineProcessBuilder

      public static ProcessBuilder createCommandLineProcessBuilder(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