/**
  * Creates the Java request path code for an AmazonS3 request
  *
  * @param ds3Request A request
  * @return The Java request path code for an AmazonS3 request
  */
 protected static String getAmazonS3RequestPath(final Ds3Request ds3Request) {
   final StringBuilder builder = new StringBuilder();
   if (ds3Request.getClassification() != Classification.amazons3) {
     return builder.toString();
   }
   builder.append("\"/\"");
   if (ds3Request.getBucketRequirement() == Requirement.REQUIRED) {
     builder.append(" + this.bucketName");
   }
   if (ds3Request.getObjectRequirement() == Requirement.REQUIRED) {
     builder.append(" + \"/\" + this.objectName");
   }
   return builder.toString();
 }
  /**
   * Creates the Java request path code for a SpectraS3 request
   *
   * @param ds3Request A request
   * @return The Java request path code for an SpectraS3 request
   */
  protected static String getSpectraDs3RequestPath(final Ds3Request ds3Request) {
    final StringBuilder builder = new StringBuilder();
    if (ds3Request.getClassification() != Classification.spectrads3
        && ds3Request.getClassification() != Classification.spectrainternal) {
      return builder.toString();
    }
    if (ds3Request.getResource() == null) {
      return builder.append("\"/_rest_/\"").toString();
    }

    builder.append("\"/_rest_/").append(ds3Request.getResource().toString().toLowerCase());
    if (isNotificationRequest(ds3Request)
        && ds3Request.getIncludeInPath()
        && (getNotificationType(ds3Request) == NotificationType.DELETE
            || getNotificationType(ds3Request) == NotificationType.GET)) {
      builder.append("/\"").append(" + this.getNotificationId().toString()");
    } else if (hasBucketNameInPath(ds3Request)) {
      builder.append("/\"").append(" + this.bucketName");
    } else if (isResourceAnArg(ds3Request.getResource(), ds3Request.getIncludeInPath())) {
      final Arguments resourceArg = getArgFromResource(ds3Request.getResource());
      builder.append("/\"").append(" + ").append(resourceArgToString(resourceArg));
    } else {
      builder.append("\"");
    }
    return builder.toString();
  }