code: @Override
      public URI transformUri(final URI resourceUri, final OperationContext opContext)
              throws URISyntaxException, StorageException {
          if (resourceUri == null) {
              return null;
          }
          
          if(this.isHttpsOnly() && !resourceUri.getScheme().equals(Constants.HTTPS)) {
              throw new IllegalArgumentException(SR.CANNOT_TRANSFORM_NON_HTTPS_URI_WITH_HTTPS_ONLY_CREDENTIALS);
          }
              
          // append the sas token to the resource uri
          URI sasUri = PathUtility.addToQuery(resourceUri, this.token);
          
          // append the api version parameter to the sas uri
          String apiVersion = Constants.QueryConstants.API_VERSION + "=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION;
          return PathUtility.addToQuery(sasUri, apiVersion);
      }
docs: Transforms a resource URI into a shared access signature URI, by appending a shared access token and using the
  specified operation context.
  
  @param resourceUri
  A <code>java.net.URI</code> object that represents the resource URI to be transformed.
  @param opContext
  An {@link OperationContext} object that represents the context for the current operation. This object
  is used to track requests to the storage service, and to provide additional runtime information about
  the operation.
  
  @return A <code>java.net.URI</code> object that represents the signature, including the resource URI and the
  shared access token.
  
  @throws StorageException
  If a storage service error occurred.
  @throws URISyntaxException
  If the resource URI is not properly formatted.