package com.twitter.common.examples.echo; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStreamReader; import com.google.common.io.Closer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * This is part of the pants echo example. Please see: * src/java/com/twitter/common/examples/echo/README.md */ public class HadoopEchoer implements Echoer { private static final String FILENAME = "file:///etc/hosts"; @Override public String echo() throws IOException { Closer closer = Closer.create(); try { Configuration conf = new Configuration(); Path p = new Path(FILENAME); FileSystem fs = closer.register(p.getFileSystem(conf)); FSDataInputStream fsDataInputStream = closer.register(fs.open(p)); InputStreamReader inputStreamReader = closer.register(new InputStreamReader(fsDataInputStream)); BufferedReader bufferedReader = closer.register(new BufferedReader(inputStreamReader)); ByteArrayOutputStream byteArrayOutputStream = closer.register(new ByteArrayOutputStream()); String line = bufferedReader.readLine(); if (line == null) { throw new RuntimeException("Failed reading line from " + FILENAME); } byteArrayOutputStream.write(line.getBytes()); return byteArrayOutputStream.toString(); } finally { closer.close(); } } }