diff --git a/src/main/java/org/codelibs/fess/app/web/admin/storage/AdminStorageAction.java b/src/main/java/org/codelibs/fess/app/web/admin/storage/AdminStorageAction.java index 6392ef052..24cb8a030 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/storage/AdminStorageAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/storage/AdminStorageAction.java @@ -44,8 +44,13 @@ import org.lastaflute.web.ruts.process.ActionRuntime; import org.lastaflute.web.servlet.request.stream.WrittenStreamOut; import io.minio.ErrorCode; +import io.minio.GetObjectArgs; +import io.minio.ListObjectsArgs; +import io.minio.MakeBucketArgs; import io.minio.MinioClient; +import io.minio.PutObjectArgs; import io.minio.PutObjectOptions; +import io.minio.RemoveObjectArgs; import io.minio.Result; import io.minio.errors.ErrorResponseException; import io.minio.messages.Item; @@ -162,7 +167,12 @@ public class AdminStorageAction extends FessAdminAction { try (final InputStream in = uploadFile.getInputStream()) { final FessConfig fessConfig = ComponentUtil.getFessConfig(); final MinioClient minioClient = createClient(fessConfig); - minioClient.putObject(fessConfig.getStorageBucket(), objectName, in, new PutObjectOptions(uploadFile.getFileSize(), -1)); + final PutObjectOptions options = new PutObjectOptions(uploadFile.getFileSize(), -1); + final PutObjectArgs args = + PutObjectArgs.builder().bucket(fessConfig.getStorageBucket()).object(objectName) + .stream(in, options.objectSize(), options.partSize()).contentType(options.contentType()) + .headers(options.headers()).sse(options.sse()).build(); + minioClient.putObject(args); } catch (final Exception e) { throw new StorageException("Failed to upload " + objectName, e); } @@ -170,7 +180,8 @@ public class AdminStorageAction extends FessAdminAction { public static void downloadObject(final String objectName, final WrittenStreamOut out) { final FessConfig fessConfig = ComponentUtil.getFessConfig(); - try (InputStream in = createClient(fessConfig).getObject(fessConfig.getStorageBucket(), objectName)) { + final GetObjectArgs args = GetObjectArgs.builder().bucket(fessConfig.getStorageBucket()).object(objectName).build(); + try (InputStream in = createClient(fessConfig).getObject(args)) { out.write(in); } catch (final Exception e) { throw new StorageException("Failed to download " + objectName, e); @@ -181,7 +192,8 @@ public class AdminStorageAction extends FessAdminAction { try { final FessConfig fessConfig = ComponentUtil.getFessConfig(); final MinioClient minioClient = createClient(fessConfig); - minioClient.removeObject(fessConfig.getStorageBucket(), objectName); + final RemoveObjectArgs args = RemoveObjectArgs.builder().bucket(fessConfig.getStorageBucket()).object(objectName).build(); + minioClient.removeObject(args); } catch (final Exception e) { throw new StorageException("Failed to delete " + objectName, e); } @@ -189,7 +201,8 @@ public class AdminStorageAction extends FessAdminAction { protected static MinioClient createClient(final FessConfig fessConfig) { try { - return new MinioClient(fessConfig.getStorageEndpoint(), fessConfig.getStorageAccessKey(), fessConfig.getStorageSecretKey()); + return MinioClient.builder().endpoint(fessConfig.getStorageEndpoint()) + .credentials(fessConfig.getStorageAccessKey(), fessConfig.getStorageSecretKey()).build(); } catch (final Exception e) { throw new StorageException("Failed to create MinioClient: " + fessConfig.getStorageEndpoint(), e); } @@ -200,8 +213,11 @@ public class AdminStorageAction extends FessAdminAction { final ArrayList> list = new ArrayList<>(); try { final MinioClient minioClient = createClient(fessConfig); - for (final Result result : minioClient.listObjects(fessConfig.getStorageBucket(), - prefix != null && prefix.length() > 0 ? prefix + "/" : prefix, false)) { + final ListObjectsArgs args = + ListObjectsArgs.builder().bucket(fessConfig.getStorageBucket()) + .prefix(prefix != null && prefix.length() > 0 ? prefix + "/" : prefix).recursive(false) + .includeUserMetadata(false).useApiVersion1(false).build(); + for (final Result result : minioClient.listObjects(args)) { final Map map = new HashMap<>(); final Item item = result.get(); final String objectName = item.objectName(); @@ -223,7 +239,8 @@ public class AdminStorageAction extends FessAdminAction { if (code == ErrorCode.NO_SUCH_BUCKET) { final MinioClient minioClient = createClient(fessConfig); try { - minioClient.makeBucket(fessConfig.getStorageBucket()); + final MakeBucketArgs args = MakeBucketArgs.builder().bucket(fessConfig.getStorageBucket()).build(); + minioClient.makeBucket(args); logger.info("Created bucket: {}", fessConfig.getStorageBucket()); } catch (final Exception e1) { logger.warn("Failed to create bucket:" + fessConfig.getStorageBucket(), e1);