com.developpez.adiguba.shell
Class ProcessConsumer

java.lang.Object
  extended by com.developpez.adiguba.shell.ProcessConsumer

public class ProcessConsumer
extends Object

ProcessConsumer permet de traiter tous les flux d'un process.
Cette classe permet de définir simplement les flux d'E/S associé à un process via les méthodes input()/output()/error().

Par exemple, pour utiliser des fichiers comme flux d'E/S :


 ProcessConsumer pc = ...;
 int result = pc.input( new FileInputStream("file_stdin.txt") )
   .output( new FileInputStream("file_stdout.txt") )
   .error( new FileInputStream("file_stderr.txt") )
   .consume();
 
Par défaut, aucun flux d'entrée n'est associé, alors que les flux de sorties standard et d'erreur du process sont associé à ceux de l'application Java.

Version:
shell-1.0
Author:
adiGuba

Constructor Summary
ProcessConsumer(Process process)
          Construit un ProcessConsumer pour ce Process, en utilisant le charset par défaut.
ProcessConsumer(ProcessBuilder pb)
          Construit un ProcessConsumer pour ce ProcessBuilder, en utilisant le charset par défaut.
ProcessConsumer(ProcessBuilder pb, Charset cs)
          Construit un ProcessConsumer pour ce ProcessBuilder.
ProcessConsumer(Process process, Charset cs)
          Construit un ProcessConsumer pour ce Process.
 
Method Summary
 int consume()
          Consume tous les flux du process en associant les différents flux.
 String consumeAsString()
          Consume tous les flux du process en associant les différents flux, et redirige la sortie standard vers une chaine de caractère.
 Future<String> consumeAsStringInBackground()
          Consume tous les flux du process en associant les différents flux, et redirige la sortie standard vers une chaine de caractère.
 Future<Integer> consumeInBackground()
          Consume tous les flux du process en associant les différents flux.
 Future<Void> dumpInBackground(Readable in, Appendable out)
          Copie des flux de in vers out, en tâche de fond.
 ProcessConsumer error()
          Supprime le flux de sortie d'erreur pour le process (pas de flux de sortie).
 ProcessConsumer error(Appendable err)
          Définit un objet Appendable comme flux de sortie d'erreur pour le process.
 ProcessConsumer error(OutputStream err)
          Définit un objet OutputStream comme flux de sortie d'erreur pour le process.
 ProcessConsumer error(PrintStream err)
          Définit un objet PrintStream comme flux de sortie d'erreur pour le process.
 ProcessConsumer errorRedirect()
          Définit un objet PrintStream comme flux de sortie d'erreur pour le process.
protected  void finalize()
          Garde fou qui force la fermeture des flux au cas où...
protected static
<T> Future<T>
inBackground(Callable<T> task)
          Exécute une tâche dans un thread séparée, en utilisant un pool de thread.
 ProcessConsumer input()
          Supprime le flux d'entrée pour le process (pas de flux d'entrée).
 ProcessConsumer input(CharSequence in)
          Définit un CharSequence comme flux d'entrée pour le process.
 ProcessConsumer input(InputStream in)
          Définit un InputStream comme flux d'entrée pour le process.
 ProcessConsumer input(Readable in)
          Définit un objet Readable comme flux d'entrée pour le process.
 ProcessConsumer output()
          Supprime le flux de sortie standard pour le process (pas de flux de sortie).
 ProcessConsumer output(Appendable out)
          Définit un objet Appendable comme flux de sortie standard pour le process.
 ProcessConsumer output(OutputStream out)
          Définit un objet OutputStream comme flux de sortie standard pour le process.
 ProcessConsumer output(PrintStream out)
          Définit un objet PrintStream comme flux de sortie standard pour le process.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProcessConsumer

public ProcessConsumer(Process process)
Construit un ProcessConsumer pour ce Process, en utilisant le charset par défaut.

Parameters:
process - Le processus qui sera traité.

ProcessConsumer

public ProcessConsumer(Process process,
                       Charset cs)
Construit un ProcessConsumer pour ce Process.

Parameters:
process - Le processus qui sera traité.
cs - Le charset à utiliser pour la conversion.

ProcessConsumer

public ProcessConsumer(ProcessBuilder pb)
Construit un ProcessConsumer pour ce ProcessBuilder, en utilisant le charset par défaut.

Parameters:
pb - Le ProcessBuilder qui sera utilisé pour créer le process.

ProcessConsumer

public ProcessConsumer(ProcessBuilder pb,
                       Charset cs)
Construit un ProcessConsumer pour ce ProcessBuilder.

Parameters:
pb - Le ProcessBuilder qui sera utilisé pour créer le process.
cs - Le charset à utiliser pour la conversion.
Method Detail

input

public ProcessConsumer input(Readable in)
                      throws IllegalStateException
Définit un objet Readable comme flux d'entrée pour le process. Une seule des méthodes input() peut être utilisé.
Par défaut, aucun flux d'entrée n'est utilisé.

Parameters:
in - Le flux d'entrée du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux d'entrée a déjà été défini précédemment.

input

public ProcessConsumer input(InputStream in)
                      throws IllegalStateException
Définit un InputStream comme flux d'entrée pour le process.

Parameters:
in - Le flux d'entrée du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux d'entrée a déjà été défini précédemment.
See Also:
input(Readable)

input

public ProcessConsumer input(CharSequence in)
                      throws IllegalStateException
Définit un CharSequence comme flux d'entrée pour le process.

Parameters:
in - Le flux d'entrée du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux d'entrée a déjà été défini précédemment.
See Also:
input(Readable)

input

public ProcessConsumer input()
                      throws IllegalStateException
Supprime le flux d'entrée pour le process (pas de flux d'entrée).

Returns:
this
Throws:
IllegalStateException - Lorsque le flux d'entrée a déjà été défini précédemment.
See Also:
input(Readable)

output

public ProcessConsumer output(Appendable out)
                       throws IllegalStateException
Définit un objet Appendable comme flux de sortie standard pour le process. Une seule des méthodes output() peut être utilisé.
Par défaut, le flux de sortie standard de l'application est utilisé (System.out).

Parameters:
out - Le flux de sortie standard du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie standard a déjà été défini précédemment.

output

public ProcessConsumer output(OutputStream out)
                       throws IllegalStateException
Définit un objet OutputStream comme flux de sortie standard pour le process.

Parameters:
out - Le flux de sortie standard du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie standard a déjà été défini précédemment.
See Also:
output(Appendable)

output

public ProcessConsumer output(PrintStream out)
                       throws IllegalStateException
Définit un objet PrintStream comme flux de sortie standard pour le process.

Parameters:
out - Le flux de sortie standard du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie standard a déjà été défini précédemment.
See Also:
output(Appendable)

output

public ProcessConsumer output()
                       throws IllegalStateException
Supprime le flux de sortie standard pour le process (pas de flux de sortie).

Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie standard a déjà été défini précédemment.
See Also:
output(Appendable)

error

public ProcessConsumer error(Appendable err)
                      throws IllegalStateException
Définit un objet Appendable comme flux de sortie d'erreur pour le process. Une seule des méthodes error() peut être utilisé.
Par défaut, le flux de sortie d'erreur de l'application est utilisé (System.err).

Parameters:
err - Le flux de sortie d'erreur du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie d'erreur a déjà été défini précédemment.

error

public ProcessConsumer error(OutputStream err)
                      throws IllegalStateException
Définit un objet OutputStream comme flux de sortie d'erreur pour le process.

Parameters:
err - Le flux de sortie d'erreur du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie d'erreur a déjà été défini précédemment.
See Also:
error(Appendable)

error

public ProcessConsumer error(PrintStream err)
                      throws IllegalStateException
Définit un objet PrintStream comme flux de sortie d'erreur pour le process.

Parameters:
err - Le flux de sortie d'erreur du process.
Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie d'erreur a déjà été défini précédemment.
See Also:
error(Appendable)

error

public ProcessConsumer error()
                      throws IllegalStateException
Supprime le flux de sortie d'erreur pour le process (pas de flux de sortie).

Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie d'erreur a déjà été défini précédemment.
See Also:
error(Appendable)

errorRedirect

public ProcessConsumer errorRedirect()
                              throws IllegalStateException
Définit un objet PrintStream comme flux de sortie d'erreur pour le process. Cette méthode ne peut être utilisé qu'avec une instance de ProcessBuilder.

Returns:
this
Throws:
IllegalStateException - Lorsque le flux de sortie d'erreur a déjà été défini précédemment, ou que cet instance de ProcessConsumer ne possède pas de ProcessBuilder.
See Also:
error(Appendable), ProcessConsumer(ProcessBuilder), ProcessConsumer(ProcessBuilder, Charset)

consume

public int consume()
            throws IOException
Consume tous les flux du process en associant les différents flux. Cette méthode est bloquante tant que le process n'est pas terminé.

Returns:
Le code de retour du process.
Throws:
IOException - Erreur d'E/S
See Also:
Process.exitValue()

consumeAsString

public String consumeAsString()
                       throws IOException,
                              IllegalStateException
Consume tous les flux du process en associant les différents flux, et redirige la sortie standard vers une chaine de caractère. Cette méthode est bloquante tant que le process n'est pas terminé.

Returns:
Une chaine de caractère contenant la sortie standard du process.
Throws:
IOException - Erreur d'E/S
IllegalStateException - Lorsque le flux de sortie standard a déjà été défini précédemment.

consumeInBackground

public Future<Integer> consumeInBackground()
Consume tous les flux du process en associant les différents flux. Cette méthode se contente d'exécuter la méthode consume() en tâche de fond.

Returns:
L'objet Future permettant de manipuler la tâche de fond.
See Also:
Future

consumeAsStringInBackground

public Future<String> consumeAsStringInBackground()
Consume tous les flux du process en associant les différents flux, et redirige la sortie standard vers une chaine de caractère. Cette méthode se contente d'exécuter la méthode consumeAsString() en tâche de fond.

Returns:
L'objet Future permettant de manipuler la tâche de fond.
See Also:
Future

finalize

protected void finalize()
Garde fou qui force la fermeture des flux au cas où...

Overrides:
finalize in class Object

dumpInBackground

public final Future<Void> dumpInBackground(Readable in,
                                           Appendable out)
Copie des flux de in vers out, en tâche de fond.

Parameters:
in - Flux depuis lequel les données seront lues
out - Flux vers lequel les données seront écrites

inBackground

protected static <T> Future<T> inBackground(Callable<T> task)
Exécute une tâche dans un thread séparée, en utilisant un pool de thread.

Type Parameters:
T - Le type du résultat de la tâche.
Parameters:
task - La tâche a exécuter.
Returns:
L'objet Future permettant de manipuler la tâche.
See Also:
Future