Package uk.ac.starlink.util

# 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

## Field Summary

### Fields inherited from class uk.ac.starlink.util.DataSource

`DEFAULT_INTRO_LIMIT, MARK_WORKAROUND_PROPERTY`

## Constructor Summary

Constructors
Constructor
Description
`ProcessDataSource(ProcessBuilder pbuilder)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`static ProcessBuilder`
`createCommandLineProcessBuilder(String cmdLine)`
Utility method to create a process builder given a shell command line that generates output to standard output.
`protected InputStream`
`getRawInputStream()`
Provides a new InputStream for this data source.

### Methods inherited from class uk.ac.starlink.util.DataSource

`close, forceCompression, getCompression, getHybridInputStream, getInputStream, getInputStream, getIntro, getIntroLimit, getLength, getMarkWorkaround, getName, getPosition, getRawLength, getSystemId, getURL, makeDataSource, makeDataSource, makeDataSource, setCompression, setIntroLimit, setMarkWorkaround, setName, setPosition, toString`

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

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

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