in hadoop-testutils/src/main/java/org/apache/hadoop/hbase/oss/EmbeddedS3.java [256:285]
public PutObjectResult putObject(PutObjectRequest request) {
String key = request.getKey();
LOG.debug("putObject: {}", key);
EmbeddedS3Object object = bucket.get(key);
if (object == null) {
object = new EmbeddedS3Object();
}
try {
if (request.getInputStream() != null) {
InputStream in = request.getInputStream();
object.data = IOUtils.toString(in, encoding);
in.close();
} else if (request.getFile() != null) {
File file = request.getFile();
object.data = FileUtils.readFileToString(file, encoding);
} else {
throw new UnsupportedOperationException("Unknown putObject method");
}
} catch (IOException e) {
throw new SdkClientException("Error reading object to put", e);
}
// TODO later Hadoop versions will require setting ETags, etc. too
object.getObjectMetadata().setContentLength(object.data.length());
// Object isn't listed in the bucket until after it's written
bucket.put(key, object);
return new PutObjectResult();
}