return delegate.createObject(request);
} else {
request.setContent(new BufferSegment(buffer, 0, c));
}
CreateObjectResponse resp = delegate.createObject(request);
pos = c;
// Append until EOF.
try {
while((c = fillBuffer(buffer, in)) != -1) {
UpdateObjectRequest uor = new UpdateObjectRequest();
uor.setIdentifier(resp.getObjectId());
uor.setContentType(request.getContentType());
uor.setRange(new Range(pos, pos+c-1));
uor.setContent(new BufferSegment(buffer, 0, c));
pos += c;
delegate.updateObject(uor);
}
} catch (IOException e) {
throw new AtmosException("Error reading input data: " + e, e);
}
try {
in.close();
} catch (IOException e) {
throw new AtmosException("Error closing stream: " + e, e);
}
String transformConfig = "";
// Update the object with the transformed metadata.
for(OutputTransform ot : appliedTransforms) {
mMeta.putAll(ot.getEncodedMetadata());
if(transformConfig.length() != 0) {
transformConfig += "|";
}
transformConfig += ot.getTransformConfig();
}
mMeta.put(TransformConstants.META_TRANSFORM_MODE, transformConfig);
Set<Metadata> metadata = request.getUserMetadata();
if(metadata == null) {
metadata = new HashSet<Metadata>();
}
Collection<Metadata> updatedMetadata = updateMetadata(mMeta, metadata);
delegate.setUserMetadata(resp.getObjectId(),
updatedMetadata.toArray(new Metadata[updatedMetadata.size()]));
return resp;
}