MinIO Client SDK for Java

Overview

MinIO Java SDK for Amazon S3 Compatible Cloud Storage Slack

MinIO Java SDK is Simple Storage Service (aka S3) client to perform bucket and object operations to any Amazon S3 compatible object storage service.

For a complete list of APIs and examples, please take a look at the Java Client API Reference documentation.

Minimum Requirements

Java 1.8 or above.

Maven usage

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.1.0</version>
</dependency>

Gradle usage

dependencies {
    compile 'io.minio:minio:8.1.0'
}

JAR download

The latest JAR can be downloaded from here

Quick Start Example - File Uploader

This example program connects to an object storage server, makes a bucket on the server and then uploads a file to the bucket.

You need three items in order to connect to an object storage server.

Parameters Description
Endpoint URL to S3 service.
Access Key Access key (aka user ID) of an account in the S3 service.
Secret Key Secret key (aka password) of an account in the S3 service.

This example uses MinIO server playground https://play.min.io. Feel free to use this service for test and development.

FileUploader.java

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class FileUploader {
  public static void main(String[] args)
      throws IOException, NoSuchAlgorithmException, InvalidKeyException {
    try {
      // Create a minioClient with the MinIO server playground, its access key and secret key.
      MinioClient minioClient =
          MinioClient.builder()
              .endpoint("https://play.min.io")
              .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
              .build();

      // Make 'asiatrip' bucket if not exist.
      boolean found =
          minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());
      if (!found) {
        // Make a new bucket called 'asiatrip'.
        minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
      } else {
        System.out.println("Bucket 'asiatrip' already exists.");
      }

      // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
      // 'asiatrip'.
      minioClient.uploadObject(
          UploadObjectArgs.builder()
              .bucket("asiatrip")
              .object("asiaphotos-2015.zip")
              .filename("/home/user/Photos/asiaphotos.zip")
              .build());
      System.out.println(
          "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "
              + "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");
    } catch (MinioException e) {
      System.out.println("Error occurred: " + e);
      System.out.println("HTTP trace: " + e.httpTrace());
    }
  }
}

Compile FileUploader

$ javac -cp minio-8.1.0-all.jar FileUploader.java

Run FileUploader

$ java -cp minio-8.1.0-all.jar:. FileUploader
'/home/user/Photos/asiaphotos.zip' is successfully uploaded as object 'asiaphotos-2015.zip' to bucket 'asiatrip'.

$ mc ls play/asiatrip/
[2016-06-02 18:10:29 PDT]  82KiB asiaphotos-2015.zip

More References

Explore Further

Contribute

Please refer Contributors Guide

Comments
  • Issues when running on linux.

    Issues when running on linux.

    I have this software that is using minio-java. When using in Mac everything is fine, although I have issues when running in linux.

    Here is the error I'm getting when running on linux: screen shot 2017-04-04 at 9 58 46 pm

    and it's pointing to this line.

    Locale on Mac

    Daniels-MacBook-Pro-2:illinois-cogcomp-nlp daniel$ locale 
    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL=
    

    Locale on Linux:

    khashab2@austen:~$ locale 
    LANG=en_US.UTF-8
    LANGUAGE=en_US:
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    
    working as intended priority: high 
    opened by danyaljj 31
  • Write Performance between 'MinIO Client SDK' and 'mc'

    Write Performance between 'MinIO Client SDK' and 'mc'

    I was asked to open an issue after I posted a question on slack: https://minio.slack.com/archives/C3NDUB8UA/p1573484464253800

    I'll provide additional information once I set up a performance test in my local environment.

    fixed 
    opened by adrian-tarau 25
  • Add MinIO admin client functionality

    Add MinIO admin client functionality

    Adds the following calls for MinIO Admin functionality:

    • Add/Set/List/Delete policies
    • Add/Set/List/Delete users

    I had to add a dependency on bouncy castle and implement sio-go's encryption methodology in-order to encrypt/decrypt UserInfo payloads.

    Seeing as there is no integration test, I tested against my local MinIO server running on Minikube. I commented out the tests to show how/which I tested each endpoints.

    opened by Sam-Kramer 20
  • MINIO JAVA SDK+ STS https://github.com/minio/minio/blob/master/docs/sts/web-identity.md Issue

    MINIO JAVA SDK+ STS https://github.com/minio/minio/blob/master/docs/sts/web-identity.md Issue

    Expected Behavior

    The issue https://github.com/minio/minio/issues/10001 thread was closed without providing the final solution. After getting the access_token from keycloak, passing same to http://localhost:9000?Action=AssumeRoleWithWebIdentity&Version=2011-06-15&WebIdentityToken=access_token and getting the response back as, <?xml version="1.0" encoding="UTF-8"?> <AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleWithWebIdentityResult> <AssumedRoleUser> <Arn></Arn> <AssumeRoleId></AssumeRoleId> </AssumedRoleUser> <Credentials> <AccessKeyId>FT8P56JOXAJDUCWEYWCP</AccessKeyId> <SecretAccessKey>0aIZ6OhJxkvbxYy+9J20llgrV8JRCG+LtzwKkH8h</SecretAccessKey> <Expiration>2020-08-07T06:11:10Z</Expiration> <SessionToken>eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJSRVJITlZXOVZYWDRXUTkxTjZYMyIsImFjciI6IjEiLCJhZGRyZXNzIjp7fSwiYXVkIjoiYWNjb3VudCIsImF6cCI6Im1pbmlvIiwiZW1haWwiOiJicmFkQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZXhwIjoxNTk2NzgwNjcwLCJmYW1pbHlfbmFtZSI6ImJyYWQiLCJnaXZlbl9uYW1lIjoiYnJhZCIsImdyb3VwcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl0sImlhdCI6MTU5Njc4MDM3MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL21hc3RlciIsImp0aSI6ImJhOWUzYjEzLWE2NjAtNGNjYi1hZTVmLTk4YWNjZTM3YzY1YyIsIm5hbWUiOiJicmFkIGJyYWQiLCJwb2xpY3kiOiJyZWFkd3JpdGUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJicmFkIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBlbWFpbCBwcm9maWxlIHBob25lIGFkZHJlc3MgcG9saWN5IG1pY3JvcHJvZmlsZS1qd3Qgb2ZmbGluZV9hY2Nlc3MiLCJzZXNzaW9uX3N0YXRlIjoiYzdlY2MwZDItZWZiNS00N2NjLThmOTItNmI3OTJhMmI4ZjNiIiwic3ViIjoiMTAzMTJjMjktZWYxYi00OWNmLTg0ZjQtODQ1MGZiNDZkNDM5IiwidHlwIjoiQmVhcmVyIiwidXBuIjoiYnJhZCJ9.LesWLGzRPjpBms1GiF95ESpyYXaDD8pMXqZfPz1FfffFYLmh7BcrBUMXzvvoI8JLnF5nE01f2sX2I7HMsLVdZA</SessionToken> </Credentials> <SubjectFromWebIdentityToken>10312c29-ef1b-49cf-84f4-8450fb46d439</SubjectFromWebIdentityToken> </AssumeRoleWithWebIdentityResult> <ResponseMetadata> <RequestId>1628E74C2FC1C748</RequestId> </ResponseMetadata> </AssumeRoleWithWebIdentityResponse> But after passing accessKeyID and SecretAccessKey to minio 7.0 Java SDK as, MinioClient minioClient = new MinioClient("http://localhost:9000","FT8P56JOXAJDUCWEYWCP","0aIZ6OhJxkvbxYy+9J20llgrV8JRCG+LtzwKkH8h");

    Or to minio 7.1 Java SDK as, MinioClient minioClient = MinioClient.builder().endpoint("http://localhost:9000").credentials("FT8P56JOXAJDUCWEYWCP", "0aIZ6OhJxkvbxYy+9J20llgrV8JRCG+LtzwKkH8h"").build(); minioClient.listBuckets();

    Getting below error,

    Exception in thread "main" java.lang.IllegalArgumentException: unknown error code string 'InvalidTokenId' at io.minio.Xml.unmarshal(Xml.java:68) at io.minio.MinioClient.execute(MinioClient.java:1134) at io.minio.MinioClient.executeGet(MinioClient.java:1311) at io.minio.MinioClient.listBuckets(MinioClient.java:3123) at com.misys.dms.Main.main(Main.java:48)

    Current Behavior

    Possible Solution

    Steps to Reproduce (for bugs)

    Context

    Regression

    Your Environment

    • Version used (minio --version): Java SDK 7.0/7.1
    • Server setup and configuration:
    • Operating System and version (uname -a):
    opened by PSHREYASHOLLA 19
  • Getting..

    Getting.."The difference between the request time and the server's time is too large" while checking if bucket Exists.

    Hi... I am trying to clone Bucket ion Minio..

    It used to work fine..but all of a sudden started throwing the below error:

    My code is of below format: MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); boolean isExist = minioClient.bucketExists("asiatrip"); if(isExist) { System.out.println("Bucket already exists."); } else { minioClient.makeBucket("asiatrip"); } Getting error while checking if bucketExists with below error code:

    error occured

      | ErrorResponse(code=RequestTimeTooSkewed, message=The difference between the request time and the server's time is too large., bucketName=null, objectName=null, resource=/confpagecr/, requestId=3L137, hostId=3L137)   | request={method=GET, url=https://play.minio.io:9000/mybucket/?location=, headers=Host: play.minio.io:9000   | User-Agent: Minio (amd64; amd64) minio-java/dev   | x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855   | x-amz-date: 20180831T130351Z   | Authorization: AWS4-HMAC-SHA256 Credential=REDACTED/20180831/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=REDACTED   | }   | response={code=403, headers=Accept-Ranges: bytes   | Content-Type: application/xml   | Server: Minio/RELEASE.2018-02-09T22-40-05Z (linux; amd64)   | Vary: Origin   | X-Amz-Request-Id: 154FFA9E2A386AFC   | Date: Fri, 31 Aug 2018 13:19:15 GMT   | Transfer-Encoding: chunked   | }

    How can we resolve this??Should I set time somewhere??

    working as intended priority: medium 
    opened by LahariGuntha 17
  • NullPointerException - copyObject appears to be broken

    NullPointerException - copyObject appears to be broken

    It appears that copyObject method provided does not work. Here is the exception that is being thrown

    java.lang.NullPointerException
    	at io.minio.Signer.setSigningKey(Signer.java:199)
    	at io.minio.Signer.signV4(Signer.java:231)
    	at io.minio.MinioClient.execute(MinioClient.java:811)
    	at io.minio.MinioClient.executePut(MinioClient.java:1083)
    	at io.minio.MinioClient.copyObject(MinioClient.java:1578)
    

    I did some research and noticed that others are also having this issue. You can take a look at this repo to confirm that others have this issue.

    blocked priority: severe 
    opened by tawrahim 17
  • Listing objects fails with SignatureDoesNotMatch if > than 1000 objects

    Listing objects fails with SignatureDoesNotMatch if > than 1000 objects

    The minio java client 2.0.1 gives me a very strange behaviour as soon as there are more than 1000 objects returned by the listObjects call.

    • It lists all objects up to the 1000
    • Then it throws the attached error complaining about the signature
    • I tested it with the mcclient, which works like a charm and lists all objects, thus the issue is very likley in the java client code
    • The error does not depend at all on the content.
    Error occurred: error occured
    ErrorResponse(code=SignatureDoesNotMatch, message=The request signature we calculated does not match the signature you provided. Check your key and signing method., bucketName=null, objectName=null, resource=/media, requestId=3L137, hostId=3L137)
    request={method=GET, url=http://goldbox:9000/media?marker=Videos/Movies/2016/some/path/file.jpg, headers=Host: goldbox:9000
    User-Agent: Minio (x86_64; x86_64) minio-java/dev
    x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    x-amz-date: 20160912T110657Z
    Authorization: AWS4-HMAC-SHA256 Credential=P6BE2YPLY0FPHIQ5CVZV/20160912/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=6975bb3352dfc687317cae9e8e66353ae0d219516885db1cb7d584b6905eaf47
    }
    response={code=403, headers=Accept-Ranges: bytes
    Server: Minio/DEVELOPMENT.GOGET (linux; amd64)
    Vary: Origin
    X-Amz-Request-Id: OR86OFVUFWR6V5DE
    Date: Mon, 12 Sep 2016 11:06:15 GMT
    Content-Type: text/xml; charset=utf-8
    Transfer-Encoding: chunked
    OkHttp-Selected-Protocol: http/1.1
    OkHttp-Sent-Millis: 1473678417911
    OkHttp-Received-Millis: 1473678417913
    }
    

    Is there some magical barrier which gets hit when there are more than 1000 items returned?

    opened by IsNull 17
  • [BUG][FIX] fix NPE when try to stat object named

    [BUG][FIX] fix NPE when try to stat object named "/"

    NPE thrown when try to stat object named "/", code to reproduction:

    ObjectStat stat = factory.getClient().statObject("test", "/");
    

    exception thrown:

    java.lang.NullPointerException
    	at io.minio.ResponseHeader.lastModified(ResponseHeader.java:132)
    	at io.minio.ObjectStat.<init>(ObjectStat.java:51)
    	at io.minio.MinioClient.statObject(MinioClient.java:1482)
    
    opened by AaronLinOops 16
  • fix: handle http response code 307 - temporary redirect

    fix: handle http response code 307 - temporary redirect

    Previously the SDK throws below exception when it gets response code 307.

    java.io.EOFException: input contained no data
            at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3003)
            at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
            at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
            at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
            at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
            at com.google.api.client.xml.Xml.parseElementInternal(Xml.java:245)
            at com.google.api.client.xml.Xml.parseElement(Xml.java:222)
            at io.minio.messages.XmlEntity.parseXml(XmlEntity.java:75)
            at io.minio.messages.ErrorResponse.parseXml(ErrorResponse.java:159)
            at io.minio.messages.ErrorResponse.<init>(ErrorResponse.java:64)
            at io.minio.MinioClient.execute(MinioClient.java:970)
            at io.minio.MinioClient.executePut(MinioClient.java:1197)
            at io.minio.MinioClient.makeBucket(MinioClient.java:2597)
            at io.minio.MinioClient.makeBucket(MinioClient.java:2554)
            at FunctionalTest.makeBucket_test1(FunctionalTest.java:86)
            at FunctionalTest.runTests(FunctionalTest.java:1264)
            at FunctionalTest.main(FunctionalTest.java:1380)
    

    This patch handles response code and returns Amazon S3 error.

    opened by balamurugana 15
  • Date Parsing - IllegalArgumentException: Invalid format

    Date Parsing - IllegalArgumentException: Invalid format

    Hi, minio-java throws the following exception for every MinioClient funktion (putObject, getObject, bucketExists, ...). Putting and getting objects works fine, but this exception is a bit irritating.

    Thanks for help.

    Cheers, Ronny

    Jun 21, 2016 4:26:29 PM io.minio.http.HeaderParser set INFORMATION: setter: setDate Jun 21, 2016 4:26:29 PM io.minio.http.HeaderParser set INFORMATION: annotation: Date Jun 21, 2016 4:26:29 PM io.minio.http.HeaderParser set INFORMATION: value: Tue, 21 Jun 2016 14:26:29 GMT Jun 21, 2016 4:26:30 PM io.minio.http.HeaderParser set SCHWERWIEGEND: exception occured: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at io.minio.http.HeaderParser.set(HeaderParser.java:71) at io.minio.MinioClient.execute(MinioClient.java:714) at io.minio.MinioClient.executePost(MinioClient.java:927) at io.minio.MinioClient.completeMultipart(MinioClient.java:2314) at io.minio.MinioClient.putObject(MinioClient.java:2007) at io.minio.MinioClient.putObject(MinioClient.java:1907) at de.zpid.datawiz.util.MinioTest.storeFileIntoMino(MinioTest.java:26) at de.zpid.datawiz.controller.ProjectController.uploadFile(ProjectController.java:230) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:112) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:206) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:124) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:106) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Invalid format: "Tue, 21 Jun 2016 14:26:30 GMT" at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:899) at io.minio.ResponseHeader.setDate(ResponseHeader.java:89) ... 87 more

    opened by RBoelter 15
  • I can not upload file with putObject

    I can not upload file with putObject

    private void init() {
        try {
          minioClient = new MinioClient(configuration.getUrl(), configuration.getAccessKey(), configuration.getSecretKey());
        } catch (InvalidEndpointException | InvalidPortException e) {
          log.error("Minio init failed.", e);
          Assert.notNull(null, "Minio init failed.");
        }
      }
    
      private String bucket = configuration.getBucket();
    
      public boolean saveFile(InputStream is, String name, String type) {
        Assert.notNull(is, "Inputstream MUST BE NOT null.");
        try {
          if(minioClient.bucketExists(bucket)) {
            log.info("Bucket is ready");
          } else {
            minioClient.makeBucket(bucket);
          }
          log.info(minioClient.getBucketPolicy(bucket));
          minioClient.putObject(bucket, name, is, Long.valueOf(is.available()), null, null, type);
          is.close();
        } catch (NoSuchAlgorithmException | IOException | InvalidKeyException | XmlPullParserException | MinioException e) {
          log.error("File upload failed.", e);
          return false;
        }
        return true;
      }
    

    file always 0 bytes, no some error log.

    working as intended 
    opened by leonardwoo 14
  • Exception infomation lost when some Exception occurs

    Exception infomation lost when some Exception occurs

    图片 I meet an OOM Exception ,but it's hard to find out . The exception caught outside just says: java.lang.RuntimeException: null

    Caused by: java.lang.RuntimeException: null
    	at io.minio.S3Base.throwEncapsulatedException(S3Base.java:243)
    	at io.minio.MinioClient.putObject(MinioClient.java:1375)
            ....
    

    I personally strongly advise to fix this by changing io.minio.S3Base.java:243 with :

    - throw new RuntimeException(exc.getCause());
    + throw new RuntimeException("Failed to put object:" + ext.getMessage(), exc);
    

    The error message may be something better. https://github.com/minio/minio-java/blob/8c7a5be3a42ae0e1f4da9269e97a30729b3cbf83/api/src/main/java/io/minio/S3Base.java#L243

    opened by terrason 1
Releases(8.5.0)
  • 8.5.0(Jan 7, 2023)

    What's Changed

    • Add bucket created/removed event types by @AlexandreBarde in https://github.com/minio/minio-java/pull/1372
    • Upgrade Gradle 7.6 and dependencies by @balamurugana in https://github.com/minio/minio-java/pull/1393
    • Add ReplicationConfiguration/Rule/Destination/SourceSelectionCriteria/ReplicaModifications by @balamurugana in https://github.com/minio/minio-java/pull/1402

    New Contributors

    • @AlexandreBarde made their first contribution in https://github.com/minio/minio-java/pull/1372

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.6...8.5.0

    Source code(tar.gz)
    Source code(zip)
  • 8.4.6(Nov 20, 2022)

    What's Changed

    • Add checksum elements into CompleteMultipartUploadOutput class by @mmadoo in https://github.com/minio/minio-java/pull/1377
    • upgrade jackson-{databind,core,annotations} dependencies by @balamurugana in https://github.com/minio/minio-java/pull/1379
    • AdminClient: add getDataUsageInfo API by @lukasraska in https://github.com/minio/minio-java/pull/1382

    New Contributors

    • @mmadoo made their first contribution in https://github.com/minio/minio-java/pull/1377
    • @lukasraska made their first contribution in https://github.com/minio/minio-java/pull/1382

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.5...8.4.6

    Source code(tar.gz)
    Source code(zip)
  • 8.4.5(Sep 24, 2022)

    What's Changed

    • Updating links to documentation with new URLs by @djwfyi in https://github.com/minio/minio-java/pull/1366
    • ListObjects(): fix parsing user metadata as per MinIO server by @balamurugana in https://github.com/minio/minio-java/pull/1369
    • Enhancement of the MinIO admin client functionality with the group function by @Vedat-D in https://github.com/minio/minio-java/pull/1343
    • Add restoreObject API support by @balamurugana in https://github.com/minio/minio-java/pull/1227

    New Contributors

    • @djwfyi made their first contribution in https://github.com/minio/minio-java/pull/1366
    • @Vedat-D made their first contribution in https://github.com/minio/minio-java/pull/1343

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.4...8.4.5

    Source code(tar.gz)
    Source code(zip)
  • 8.4.4(Sep 17, 2022)

    What's Changed

    • Revert "Allow null filter in LifecycleRule (#1344)" by @balamurugana in https://github.com/minio/minio-java/pull/1345
    • Upgrade okhttp, kotlin-stdlib, junit fixing vulnerabilities by @julianladisch in https://github.com/minio/minio-java/pull/1361

    New Contributors

    • @julianladisch made their first contribution in https://github.com/minio/minio-java/pull/1361

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.3...8.4.4

    Source code(tar.gz)
    Source code(zip)
  • 8.4.3(Jul 9, 2022)

    What's Changed

    • add command quota set/get bucket quota by @butterflyzh in https://github.com/minio/minio-java/pull/1337
    • Allow null values for UserInfo status. by @murphywill in https://github.com/minio/minio-java/pull/1340
    • Allow null filter in LifecycleRule by @balamurugana in https://github.com/minio/minio-java/pull/1344

    New Contributors

    • @butterflyzh made their first contribution in https://github.com/minio/minio-java/pull/1337

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.2...8.4.3

    Source code(tar.gz)
    Source code(zip)
  • 8.4.2(Jun 12, 2022)

    What's Changed

    • Enable setting ExpiredObjectDeleteMarker in Expiration. by @balamurugana in https://github.com/minio/minio-java/pull/1336
    • Add s3-fips endpoint support. by @balamurugana in https://github.com/minio/minio-java/pull/1334
    • Improve put object performance by sending sha256sum always. by @balamurugana in https://github.com/minio/minio-java/pull/1333
    • Handle 304 status code properly by @balamurugana in https://github.com/minio/minio-java/pull/1330

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.1...8.4.2

    Source code(tar.gz)
    Source code(zip)
  • 8.4.1(May 13, 2022)

    What's Changed

    • fix Host header value for IPv6 by @balamurugana in https://github.com/minio/minio-java/pull/1328

    Full Changelog: https://github.com/minio/minio-java/compare/8.4.0...8.4.1

    Source code(tar.gz)
    Source code(zip)
  • 8.4.0(May 5, 2022)

    What's New

    • MinIO Java SDK now implements full async client implementation, refer #1308

    What's Changed

    • Add getUserInfo to admin client by @murphywill in https://github.com/minio/minio-java/pull/1323
    • Add async client support by @balamurugana in https://github.com/minio/minio-java/pull/1308

    New Contributors

    • @murphywill made their first contribution in https://github.com/minio/minio-java/pull/1323

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.9...8.4.0

    Source code(tar.gz)
    Source code(zip)
  • 8.3.9(Apr 22, 2022)

    What's Changed

    • adminapi: allow ignoring newer unknown fields in UserInfo by @harshavardhana in https://github.com/minio/minio-java/pull/1322
    • Add overwrite flag to downloadObject() API. by @balamurugana in https://github.com/minio/minio-java/pull/1321

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.8...8.3.9

    Source code(tar.gz)
    Source code(zip)
  • 8.3.8(Apr 9, 2022)

    What's Changed

    • Upgrade com.fasterxml.jackson to v2.13.2 by @balamurugana in https://github.com/minio/minio-java/pull/1315
    • fix uploadSnowballObjects() to handle object name length > 100 by @balamurugana in https://github.com/minio/minio-java/pull/1319
    • Upgrade com.fasterxml.jackson.jackson-databind to v2.13.2.2 by @balamurugana in https://github.com/minio/minio-java/pull/1316

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.7...8.3.8

    Source code(tar.gz)
    Source code(zip)
  • 8.3.7(Feb 27, 2022)

    What's Changed

    • Raise ServerException for all unhandled HTTP status code by @balamurugana in https://github.com/minio/minio-java/pull/1297
    • add MINIO_CI_CD=1 environment value by @harshavardhana in https://github.com/minio/minio-java/pull/1302
    • fix docs as per current APIs by @balamurugana in https://github.com/minio/minio-java/pull/1301
    • Remove resume support in downloadObject() API. by @balamurugana in https://github.com/minio/minio-java/pull/1306

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.6...8.3.7

    Source code(tar.gz)
    Source code(zip)
  • 8.3.6(Feb 2, 2022)

    What's Changed

    • Mint - Add environment variable RUN_ON_FAIL by @iternity-dotcom in https://github.com/minio/minio-java/pull/1180
    • fix MinioAdminClient.listCannedPolicies() to return proper string values by @Sam-Kramer in https://github.com/minio/minio-java/pull/1289

    New Contributors

    • @iternity-dotcom made their first contribution in https://github.com/minio/minio-java/pull/1180

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.5...8.3.6

    Source code(tar.gz)
    Source code(zip)
  • 8.3.5(Jan 13, 2022)

    What's Changed

    • fix: presignedUrl docs response-content-type is only meant for GET/HEAD by @harshavardhana in https://github.com/minio/minio-java/pull/1276
    • fix etag usage in temporary filename construction in downloadObject() by @Aeltumn in https://github.com/minio/minio-java/pull/1284
    • Add uploadSnowballObjects() method. by @balamurugana in https://github.com/minio/minio-java/pull/1277

    New Contributors

    • @Aeltumn made their first contribution in https://github.com/minio/minio-java/pull/1284

    Full Changelog: https://github.com/minio/minio-java/compare/8.3.4...8.3.5

    Source code(tar.gz)
    Source code(zip)
  • 8.3.4(Nov 29, 2021)

    Changelog

    • Make Role optional in ReplicationConfiguration (#1268) (11/29/21) (Bala FA)
    • Include Content-{Length,Type} headers in signature calculation (#1267) (11/29/21) (Bala FA)
    • Add long type content-length range condition in PostPolicy. (#1270) (11/29/21) (Bala FA)
    • Remove value field from io.minio.http.Method enum (#1271) (11/29/21) (Emil Sierżęga)
    • Add serialVersionUID to exceptions for serialization (#1272) (11/29/21) (Emil Sierżęga)
    • Remove deprecated Gradle usage (#1273) (11/29/21) (Emil Sierżęga)
    • Add MinIO specific extension DeleteReplication in ReplicationConfiguration. (#1265) (11/18/21) (Bala FA)
    • Remove unnecessary suppress warnings (#1266) (11/17/21) (Emil Sierżęga)
    • Use standard Objects class instead of Guava (#1261) (11/17/21) (Emil Sierżęga)
    • Remove unused imports/variables (#1264) (11/17/21) (Emil Sierżęga)
    • fix SetBucketNotification example for UnsupportedOperationException (#1260) (11/11/21) (ChangXY)
    • fix Gradle snippet in README compatible to Gradle 7+ (#1256) (11/10/21) (Sebastian Aigner)
    Source code(tar.gz)
    Source code(zip)
  • 8.3.3(Oct 21, 2021)

    Changelog

    • Create a separate jar for the admin api (#1251) (10/21/21) (Sam-Kramer)
    • Make bucket name optional in listenBucketNotification() API (#1250) (10/21/21) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 8.3.1(Oct 8, 2021)

    Changelog

    • Add AssumeRoleWithCertificate credential provider. (#1239) (10/09/21) (Bala FA)
    • Simplify io.minio.admin package (#1236) (09/23/21) (Bala FA)
    • add TLS and non-TLS tests (#1233) (09/20/21) (Harshavardhana)
    • Make ID/DisplayName optional in Initiator XML element. (#1232) (09/16/21) (Bala FA)
    • Add MinIO admin client functionality (#1221) (09/16/21) (Sam-Kramer)
    • Upgrade Guava dependency to 30.1.1-jre (#1217) (08/21/21) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 8.3.0(Jul 19, 2021)

    Changelog

    • Send empty body to fetch IMDS token in IamAwsProvider. (#1212) (07/19/21)
    • Fail if unsupported okhttp3 is found. (#1211) (07/19/21)
    • Add part size support in UploadObject() api. (#1208) (07/19/21)
    • Add durationSeconds and policy support in LdapIdentityProvider. (#1209) (07/16/21)
    • Handle reading more than 2GiB part data correctly. (#1205) (07/06/21)
    Source code(tar.gz)
    Source code(zip)
  • 8.2.2(Jun 13, 2021)

    Changelog

    • fix: interpret user-meta in case-insenstive manner (#1199) (06/13/21) (Harshavardhana)
    • Add IMDSv2 and auth token support in IamAws provider. (#1192) (06/08/21) (Bala FA)
    • Fixed parentheses pair in documentation (#1181) (05/14/21) (Denis O)
    • bump guava to 30.0-jre (#1184) (04/20/21) (Michał Pawlik)
    Source code(tar.gz)
    Source code(zip)
  • 8.2.1(Apr 26, 2021)

  • 8.2.0(Apr 6, 2021)

    Changelog

    • Create sane policy JSON in PostPolicy. (#1176) (03/26/21) (Bala FA)
    • Encode value of key element in PostPolicy (#1175) (03/25/21) (Bala FA)
    • Split MinioClient class to reduce size (#1163) (03/16/21) (Bala FA)
    • Remove stale entries in API documentation (#1166) (03/11/21) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 8.1.0(Feb 18, 2021)

    Changelog

    • fix possible divided by zero error (#1162) (02/18/21) (Bala FA)
    • storage-class is valid for deleteMarker on MinIO (#1161) (02/17/21) (Harshavardhana)
    • Add preload data support for putObject() API. (#1156) (02/05/21) (Bala FA)
    • fix postpolicy condition key check (#1154) (02/02/21) (yuliyang_yewu)
    • fix getPresignedObjectUrl() to use available session token (#1147) (01/29/21) (Bala FA)
    • Simplify Set initialization (#1144) (01/08/21) (Bala FA)
    • Add S3 API execution trace to MinioException (#1136) (01/05/21) (Bala FA)
    • fix SSE-KMS to handle context properly (#1141) (01/03/21) (Bala FA)
    • Honor extra headers argument in getPresignedObjectUrl API. (#1142) (01/03/21) (Bala FA)
    • typo: correct method's name (#1143) (12/30/20) (AnnieCattice)
    • Use junit in functional tests (#1133) (12/23/20) (Bala FA)
    • fix README and CONTRIBUTING guides (#1132) (12/18/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 8.0.3(Nov 29, 2020)

    Changelog

    • Ignore functional tests for unsupported bucket with locking (#1130) (11/29/20) (Bala FA)
    • Ignore NoSuchVersion error in removeObjects() API (#1128) (11/29/20) (Bala FA)
    • Add more validation in lifecycle configuration class (#1106) (11/26/20) (Bala FA)
    • Remove duplicate code of buildHeaders() in ComposeSource (#1116) (11/26/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 8.0.2(Nov 25, 2020)

    Changelog

    • Handle conditional headers in {stat,get}Object() request (#1117) (11/25/20) (Bala FA)
    • fix: store compression-type in InputSerialization class (#1126) (11/25/20) (Bala FA)
    • Add support to empty prefix value in XML messages (#1102) (11/24/20) (Bala FA)
    • make com.github.spotbugs.spotbugs-annotations as compile-time only dependency (#1119) (11/23/20) (Bala FA)
    • Remove getObjectUrl() in documentation (#1121) (11/23/20) (Pierre Klink)
    • Remove assume-role provider functional test (#1120) (11/18/20) (Bala FA)
    • build: upgrade shadow v6.1.0 (#1115) (11/15/20) (Marc Philipp)
    Source code(tar.gz)
    Source code(zip)
  • 8.0.1(Nov 12, 2020)

    Changelog

    • fix 0 divided by 0 in part count calculation (#1114) (11/13/20) (Bala FA)
    • Make code property check optional in IamAwsProvider (#1109) (11/11/20) (Bala FA)
    • fix: client grants example (#1101) (11/06/20) (Harshavardhana)
    Source code(tar.gz)
    Source code(zip)
  • 8.0.0(Nov 5, 2020)

    Highlights

    • Add support for various credential providers
    • Add bucket versioning APIs
    • Add replication APIs

    Changelog

    • fix publishing plugin compatibility with shadow jar (11/04/20) (Minio Trusted)
    • update readme.md to 7.1.4 to release 8.0.0 (11/04/20) (Minio Trusted)
    • Add object representation of LifecycleConfiguration with API rename. (#1065) (11/04/20) (Bala FA)
    • Refactor MinioProperties class and fix os name in user-agent (#1089) (11/04/20) (Vinu Varghese)
    • Simplify SseConfiguration XML handling (#1074) (10/23/20) (Bala FA)
    • remove build status (#1083) (10/20/20) (Harshavardhana)
    • Add unicode support in user metadata of an object. (#1079) (10/20/20) (Bala FA)
    • Remove quiet flag usage in RemoveObjectsArgs class (#1080) (10/19/20) (Bala FA)
    • Refactor iterator in removeObjects() API. (#1076) (10/19/20) (Bala FA)
    • Add equals() and hashcode() methods in Args classes (#1068) (10/19/20) (Cemal Turkoglu)
    • Ignore accept-encoding header in signature calculation. (#1071) (10/14/20) (Bala FA)
    • fix javadoc (#1015) (10/12/20) (Bala FA)
    • remove all deprecated methods/classes (#1013) (10/12/20) (Bala FA)
    • fix x-amz-object-lock-retain-until-date header time format in ObjectWriteArgs (#1063) (09/24/20) (Ashish Kumar Sinha) :...skipping...
    • Update version to next release (11/05/20) (Minio Trusted)
    • Release version 8.0.0 (11/05/20) (Minio Trusted)
    • fix publishing plugin compatibility with shadow jar (11/04/20) (Minio Trusted)
    • update readme.md to 7.1.4 to release 8.0.0 (11/04/20) (Minio Trusted)
    • Add object representation of LifecycleConfiguration with API rename. (#1065) (11/04/20) (Bala FA)
    • Refactor MinioProperties class and fix os name in user-agent (#1089) (11/04/20) (Vinu Varghese)
    • Simplify SseConfiguration XML handling (#1074) (10/23/20) (Bala FA)
    • remove build status (#1083) (10/20/20) (Harshavardhana)
    • Add unicode support in user metadata of an object. (#1079) (10/20/20) (Bala FA)
    • Remove quiet flag usage in RemoveObjectsArgs class (#1080) (10/19/20) (Bala FA)
    • Refactor iterator in removeObjects() API. (#1076) (10/19/20) (Bala FA)
    • Add equals() and hashcode() methods in Args classes (#1068) (10/19/20) (Cemal Turkoglu)
    • Ignore accept-encoding header in signature calculation. (#1071) (10/14/20) (Bala FA)
    • fix javadoc (#1015) (10/12/20) (Bala FA)
    • remove all deprecated methods/classes (#1013) (10/12/20) (Bala FA)
    • fix x-amz-object-lock-retain-until-date header time format in ObjectWriteArgs (#1063) (09/24/20) (Ashish Kumar Sinha)
    • fix README and CONTRIBUTING documentations (#1060) (09/24/20) (Bala FA)
    • add java 11 support and remove java 9/10 support (#1049) (09/21/20) (Bala FA)
    • add {set,get}BucketVersioning APIs (#1053) (09/21/20) (Bala FA)
    • add ldap identity credential provider (#1039) (09/17/20) (Bala FA)
    • rename APIs {set,get,delete}DefaultRetention() to {set,get,delete}ObjectLockConfiguration() (#1055) (09/15/20) (Bala FA)
    • handle redirect HTTP status code (#1056) (09/15/20) (Bala FA)
    • Upgrade build and compile dependencies (#1048) (09/09/20) (Bala FA)
    • Have region cache to every instance of MinioClient (#1051) (09/09/20) (Bala FA)
    • Use working build.gradle from release branch (#1054) (09/07/20) (Bala FA)
    • add IAM AWS credential provider (#1038) (09/07/20) (Bala FA)
    • use string() method in response.body() (#1047) (09/06/20) (Bala FA)
    • add MinioClient credential provider from config file (#1042) (09/04/20) (Bala FA)
    • add assume-role credential provider (#1036) (09/03/20) (Bala FA)
    • add session-token parameter to static credential provider (#1037) (09/01/20) (Bala FA)
    • add AWS credential provider from config file (#1041) (08/26/20) (Bala FA)
    • add chained credential provider (#1043) (08/25/20) (Bala FA)
    • make webidentity/clientgrants response classes as inner-classes (#1040) (08/24/20) (Bala FA)
    • add xml object representation of replication configuration (#1033) (08/22/20) (Bala FA)
    • add {set,get,delete}BucketReplication APIs (#1030) (08/08/20) (Bala FA)
    • Handle error code generically for any S3 service. (#1028) (08/06/20) (Bala FA)
    • Major cleanup and correctness of STS support. (#1026) (07/28/20) (Bala FA)
    • Add STS credentials support (#996) (07/24/20) (Eugene Getman)
    • refactor PostPolicy to have conditions correctly (#1005) (07/23/20) (Bala FA)
    • fix: canonical header computation for multi-spaced header values (#1025) (07/23/20) (Bala FA)
    • simplify ObjectLockConfiguration XML handling (#1018) (07/16/20) (Bala FA)
    • simplify SseConfiguration XML handling (#1019) (07/16/20) (Bala FA)
    • fix composeObject() example (#1020) (07/16/20) (Bala FA)
    • functional test: use separate config directory to run minio server (#1021) (07/16/20) (Harshavardhana)
    • simplify server-side encryption (#1014) (07/14/20) (Bala FA)
    • fix: decode object name if url encoding is set (#1017) (07/13/20) (Bala FA)
    • enhance functional test execution (#1009) (07/10/20) (Bala FA)
    • add .gitattributes for windows build (#1011) (07/10/20) (Bala FA)
    • enhance statObject() response (#1006) (07/09/20) (Bala FA)
    • Simplify functional tests to reduce code duplication (#997) (07/09/20) (Bala FA)
    • Return higher level object GetObjectResponse for getObject API (#998) (07/08/20) (Bala FA)
    • make protected buildUrl(), createRequest() and execute() methods (#1001) (07/08/20) (Bala FA)
    • improve InvalidResponseException to have response detail (#1002) (07/07/20) (Bala FA)
    • Handle region and extra headers/query parameters in low level APIs (#992) (07/07/20) (Bala FA)
    • simplify multimap creation (#1000) (07/06/20) (Bala FA)
    • Add new listBuckets API with arg builder (#1003) (07/04/20) (Bala FA)
    • Add javadocs for constructor deprecation, update example in README (#1004) (07/03/20) (hertg)
    • fix {copy,compose}Object to handle single source appropriately. (#995) (07/03/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 7.1.4(Sep 24, 2020)

  • 7.1.2(Sep 6, 2020)

    Changelog

    • configure archives basename to avoid creating release with project-id (09/06/20) (Minio Trusted)
    • migrate to maven-publish to push to maven (09/06/20) (Minio Trusted)
    • fix: canonical header computation for multi-spaced header values (#1025) (07/23/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 7.1.0(Jul 1, 2020)

    Highlights

    • Versioning support has been added

    Changelog

    • Add versioning support (#999) (07/01/20) (Bala FA)
    • Handle extra headers/query params for all requests. (#965) (06/26/20) (Bala FA)
    • Add base argument class for conditionally reading objects. (#989) (06/26/20) (Bala FA)
    • Add builder support to Compose object api (#979) (06/22/20) (Ashish Kumar Sinha)
    • add builder support to MinioClient class (#987) (06/22/20) (Bala FA)
    • Add versioning support in listObjects API (#984) (06/20/20) (Bala FA)
    • Add arg builder support to putObject api (#972) (06/16/20) (Bala FA)
    • Add arg builder to listIncompleteUpload API (#937) (06/12/20) (Ashish Kumar Sinha)
    • Fix: use correct keyname to read the version from Manifest file (#962) (06/11/20) (kannappanr)
    • add arg builder support to copyObject API (#970) (06/10/20) (Bala FA)
    • add arg builder to removeObjects API (#967) (06/08/20) (Bala FA)
    • Restructure base args (#971) (06/08/20) (Bala FA)
    • Add arg builder to getPresignedObjectUrl() (#948) (06/05/20) (Ashish Kumar Sinha)
    • Implement args builder for removeIncompleteUpload (#968) (06/04/20) (Shireesh Anjal)
    • add arg builder to {set,get,delete}DefaultRetention APIs (#935) (06/03/20) (Bala FA)
    • Implement args builder for selectObjectContent API (#964) (06/02/20) (Shireesh Anjal)
    • add arg builder to listenBucketNotification API (#934) (06/02/20) (Bala FA)
    • add arg builder to {set,get,delete}BucketNotification APIs (#932) (06/02/20) (Bala FA)
    • log exception thrown during setup/teardown in json format (#963) (06/01/20) (kannappanr)
    • Handle s3 service returning HTTP server error (#960) (06/01/20) (Bala FA)
    • Add arg builder to legal hold APIs (#953) (05/31/20) (Ashish Kumar Sinha)
    • add builder support for bucketExists (#961) (05/31/20) (Ashish Kumar Sinha)
    • Add method isVersioningEnabled() (#955) (05/30/20) (Ashish Kumar Sinha)
    • Move to okhttp v3.14.9 (#959) (05/29/20) (Bala FA)
    • Implement Args builder for getObject API (#954) (05/29/20) (Shireesh Anjal)
    • add arg builder to {set,get,delete}BucketPolicy APIs (#933) (05/28/20) (Bala FA)
    • add arg builder to set/get objectRetention API (#938) (05/28/20) (Ashish Kumar Sinha)
    • add arg builder to {set,get,delete}BucketLifeCycle APIs (#931) (05/27/20) (Bala FA)
    • add bucket/object tagging apis (#918) (05/26/20) (Bala FA)
    • add bucket encryption apis. (#902) (05/25/20) (Bala FA)
    • add arg builder to removeObject API (#950) (05/22/20) (Bala FA)
    • handle accelerate and dual-stack aws endpoints (#900) (05/22/20) (Bala FA)
    • Add arg builder to (enable,disable}Versioning and removeBucket APIs (#930) (05/21/20) (Ashish Kumar Sinha)
    • add arg builder to statObject API (#936) (05/19/20) (Bala FA)
    • fix: disable connection retry for PUT and POST methods (#928) (05/19/20) (Bala FA)
    • Implement Args builder for listObjects API (#946) (05/19/20) (Shireesh Anjal)
    • fix: BucketArgs.Builder.validate() to accept A type args (#947) (05/19/20) (Bala FA)
    • Rename getter bucketName() to bucket() in BucketArgs class. (#945) (05/18/20) (Bala FA)
    • Add validation support to the builder framework (#944) (05/18/20) (Bala FA)
    • Few enhancements in the builder framework (#941) (05/18/20) (Shireesh Anjal)
    • fix makeBucket() with object-lock in functional test (#942) (05/18/20) (Bala FA)
    • Refactor builder framework (#929) (05/13/20) (Shireesh Anjal)
    • Add Make bucket API with builder pattern (#927) (05/12/20) (Ashish Kumar Sinha)
    • fix: make owner field optional in Item class. (#921) (05/05/20) (Bala FA)
    • Update Readme example (#919) (05/03/20) (Daniel Valdivia)
    • make id optional in NotificationCommonConfiguration. (#917) (04/29/20) (Bala FA)
    • move to simple-xml-safe (#908) (04/27/20) (Bala FA)
    • exclude minio directory in .gitignore (#910) (04/24/20) (Bala FA)
    • load TLS certificate from SSL_CERT_FILE env var (#903) (04/21/20) (Bala FA)
    • run functional test with downloaded minio (#890) (04/21/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
  • 7.0.2(Apr 21, 2020)

    Changelog

    • Fix: Do not set empty content-encoding (#909) (04/20/20) (kannappanr)
    • Rectify the validation condition & add functional test (#904) (04/21/20) (Ashish Kumar Sinha)
    • fix optional fraction-of-time in ResponseDate format (#907) (04/16/20) (Bala FA)
    • fix comment and exception order (#891) (04/13/20) (Bala FA)
    • make protected internal methods (#889) (04/08/20) (Bala FA)
    • cleanup javadoc and API documentation. (#888) (04/06/20) (Bala FA)
    Source code(tar.gz)
    Source code(zip)
Owner
High Performance, Kubernetes Native Object Storage
High Performance, Kubernetes Native Object Storage
Client for anarchy servers that has bots / auto-modules and other stuff.

AutoBot is a module styled client for anarchy servers that offers bots and auto-modules like ElytraBot which is a pathfinding bot for elytras

null 43 Dec 27, 2022
Java lib for monitoring directories or individual files via java.nio.file.WatchService

ch.vorburger.fswatch Java lib for monitoring directories or individual files based on the java.nio.file.WatchService. Usage Get it from Maven Central

Michael Vorburger ⛑️ 21 Jan 7, 2022
Tencent Kona JDK11 is a no-cost, production-ready distribution of the Open Java Development Kit (OpenJDK), Long-Term Support(LTS) with quarterly updates. Tencent Kona JDK11 is certified as compatible with the Java SE standard.

Tencent Kona JDK11 Tencent Kona JDK11 is a no-cost, production-ready distribution of the Open Java Development Kit (OpenJDK), Long-Term Support(LTS) w

Tencent 268 Dec 16, 2022
This repository contains Java programs to become zero to hero in Java.

This repository contains Java programs to become zero to hero in Java. Data Structure programs topic wise are also present to learn data structure problem solving in Java. Programs related to each and every concep are present from easy to intermidiate level

Sahil Batra 15 Oct 9, 2022
An open-source Java library for Constraint Programming

Documentation, Support and Issues Contributing Download and installation Choco-solver is an open-source Java library for Constraint Programming. Curre

null 607 Jan 3, 2023
Java Constraint Programming solver

https://maven-badges.herokuapp.com/maven-central/org.jacop/jacop/badge.svg [] (https://maven-badges.herokuapp.com/maven-central/org.jacop/jacop/) JaCo

null 202 Dec 30, 2022
Java Constraint Solver to solve vehicle routing, employee rostering, task assignment, conference scheduling and other planning problems.

OptaPlanner www.optaplanner.org Looking for Quickstarts? OptaPlanner’s quickstarts have moved to optaplanner-quickstarts repository. Quick development

KIE (Drools, OptaPlanner and jBPM) 2.8k Jan 2, 2023
Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas

Arthas Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows developers to troubleshoot production issues for Java applications with

Alibaba 31.5k Jan 4, 2023
Java rate limiting library based on token/leaky-bucket algorithm.

Java rate-limiting library based on token-bucket algorithm. Advantages of Bucket4j Implemented on top of ideas of well known algorithm, which are by d

Vladimir Bukhtoyarov 1.7k Jan 8, 2023
Object-Oriented Java primitives, as an alternative to Google Guava and Apache Commons

Project architect: @victornoel ATTENTION: We're still in a very early alpha version, the API may and will change frequently. Please, use it at your ow

Yegor Bugayenko 691 Dec 27, 2022
Dex : The Data Explorer -- A data visualization tool written in Java/Groovy/JavaFX capable of powerful ETL and publishing web visualizations.

Dex Dex : The data explorer is a powerful tool for data science. It is written in Groovy and Java on top of JavaFX and offers the ability to: Read in

Patrick Martin 1.3k Jan 8, 2023
Google core libraries for Java

Guava: Google Core Libraries for Java Guava is a set of core Java libraries from Google that includes new collection types (such as multimap and multi

Google 46.5k Jan 1, 2023
Java regular expressions made easy.

JavaVerbalExpressions VerbalExpressions is a Java library that helps to construct difficult regular expressions. Getting Started Maven Dependency: <de

null 2.6k Dec 30, 2022
java port of Underscore.js

underscore-java Requirements Java 1.8 and later or Java 11. Installation Include the following in your pom.xml for Maven: <dependencies> <dependency

Valentyn Kolesnikov 411 Dec 6, 2022
(cross-platform) Java Version Manager

jabba Java Version Manager inspired by nvm (Node.js). Written in Go. The goal is to provide unified pain-free experience of installing (and switching

Stanley Shyiko 2.5k Jan 9, 2023
Manage your Java environment

Master your Java Environment with jenv Website : http://www.jenv.be Maintainers : Gildas Cuisinier Future maintainer in discussion: Benjamin Berman As

jEnv 4.6k Dec 30, 2022
The shell for the Java Platform

______ .~ ~. |`````````, .'. ..'''' | | | |'''|''''' .''```. .'' |_________| |

CRaSH Repositories 916 Dec 30, 2022
Hashids algorithm v1.0.0 implementation in Java

Hashids.java A small Java class to generate YouTube-like hashes from one or many numbers. Ported from javascript hashids.js by Ivan Akimov What is it?

CELLA 944 Jan 5, 2023
a pug implementation written in Java (formerly known as jade)

Attention: jade4j is now pug4j In alignment with the javascript template engine we renamed jade4j to pug4j. You will find it under https://github.com/

neuland - Büro für Informatik 700 Oct 16, 2022