content: package com.alipay.api.kms.aliyun.credentials;
  
  public class BasicSessionCredentials implements ICredentials {
      protected final Long roleSessionDurationSeconds;
      private final String accessKeyId;
      private final String accessKeySecret;
      private final String securityToken;
      private Long sessionStartedTimeInMilliSeconds = 0L;
  
      public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken) {
          this(accessKeyId, accessKeySecret, securityToken, 0L);
      }
  
      public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken, Long roleSessionDurationSeconds) {
          if (accessKeyId == null) {
              throw new IllegalArgumentException("Access key ID cannot be null.");
          }
          if (accessKeySecret == null) {
              throw new IllegalArgumentException("Access key secret cannot be null.");
          }
          this.accessKeyId = accessKeyId;
          this.accessKeySecret = accessKeySecret;
          this.securityToken = securityToken;
          this.roleSessionDurationSeconds = roleSessionDurationSeconds;
          this.sessionStartedTimeInMilliSeconds = System.currentTimeMillis();
      }
  
      @Override
      public String getAccessKeyId() {
          return accessKeyId;
      }
  
      @Override
      public String getAccessKeySecret() {
          return accessKeySecret;
      }
  
      @Override
      public String getSecurityToken() {
          return securityToken;
      }
  
      public boolean willSoonExpire() {
          if (roleSessionDurationSeconds == 0) {
              return false;
          }
          long now = System.currentTimeMillis();
          double expireFact = 0.95;
          return roleSessionDurationSeconds * expireFact < (now - sessionStartedTimeInMilliSeconds) / 1000.0;
      }
  }
  