/* * StreamConsumer.java * * Created on Aug 31, 2011, 11:03:18 AM * * Description: Provides a stream consumer that logs its consumed stream. * * Copyright (C) Aug 31, 2011, Stephen L. Reed, Texai.org. * */ package org.texai.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import net.jcip.annotations.NotThreadSafe; import org.apache.log4j.Logger; /** Provides a stream consumer that logs its consumed stream. * * @author reed */ @NotThreadSafe public class StreamConsumer extends Thread { /** the input stream that consumes the graph program standard output stream */ private final InputStream inputStream; /** the logger */ private final Logger logger; /** Constructs a new StreamConsumer instance. * * @param inputStream the input stream * @param logger the logger */ public StreamConsumer( final InputStream inputStream, final Logger logger) { //Preconditions assert inputStream != null : "inputStream must not be null"; assert logger != null : "logger must not be null"; this.inputStream = inputStream; this.logger = logger; } /** Runs this stream consumer. */ @Override public void run() { try { final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); @SuppressWarnings("UnusedAssignment") String line = null; while ((line = bufferedReader.readLine()) != null) { logger.info(">" + line); if (logger.isDebugEnabled()) { logger.debug(">" + line); } } } catch (IOException ioe) { if (logger.isDebugEnabled()) { logger.debug(ioe.getMessage()); } } } }