private void searchObjectsRecursively(AmazonS3 s3Client, List<String> objectsToDelete) {
					// This is the list of folders that we need to investigate.
					// We're going to start with the path that we've been given,
					// and then we'll grow it from there.
					List<String> folders = new ArrayList<>();
					folders.add(path);

					// Go through all of the folders that we need to investigate,
					// popping the first item off and working on it.  When they're
					// all gone, we'll be done.
					while (!folders.isEmpty()) {
						// This is the folder to investigate.
						String folder = folders.remove(0);

						// Create the request to list the objects within it.
						ListObjectsRequest request = new ListObjectsRequest();
						request.setBucketName(bucket);
						request.setDelimiter("/");

						if (folder.equals("/") || folder.isEmpty()) {
							request.setPrefix(null);
						} else if (!folder.endsWith("/")) {
							request.setPrefix(folder + "/");
						} else {
							request.setPrefix(folder);
						}

						// Get the list of objects within the folder.  Because AWS
						// might paginate this, we're going to continue dealing with
						// the "objectListing" object until it claims that it's done.
						ObjectListing objectListing = s3Client.listObjects(request);
						while (true) {
							// Add any real objects to the list of objects to delete.
							for (S3ObjectSummary entry : objectListing.getObjectSummaries()) {
								objectsToDelete.add(entry.getKey());
							}
							// Add any folders to the list of folders that we need to investigate.
							folders.addAll(objectListing.getCommonPrefixes());

							// If this listing is complete, then we can stop.
							if (!objectListing.isTruncated()) {
								break;
							}
							// Otherwise, we need to get the next batch and repeat.
							objectListing = s3Client.listNextBatchOfObjects(objectListing);
						}
					}
				}
This is the path to the object.
src/main/java/de/taimos/pipeline/aws/S3DeleteStep.java