private void handlePutObject(HttpExchange exchange, String bucketName, String keyName) throws IOException { if (DOUBLE_DOT_PATTERN.matcher(keyName).matches()) { respondErrorAndClose(exchange, ErrorResponse.INVALID_URI); return; } byte[] content = readRequestBodyFully(exchange); if (buckets.containsKey(bucketName)) { Bucket bucket = buckets.get(bucketName); StoredObject storedObject = new StoredObject(keyName, content); bucket.put(keyName, storedObject); addHeader(exchange, HttpHeaders.E_TAG, "\"" + storedObject.md5HexString() + "\""); respondAndClose(exchange, HttpURLConnection.HTTP_OK); } else { respondErrorAndClose(exchange, ErrorResponse.NO_SUCH_BUCKET); } }
@Override public void run() { while (!Thread.currentThread().isInterrupted()) { bucket.put(); } }