in plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/s3/editor/S3TreeNode.kt [187:253]
override fun loadObjects(continuationMarker: VersionContinuationToken?): List<S3TreeNode> {
if (!showHistory) {
return emptyList()
}
try {
val response = runBlocking {
bucket.listObjectVersions(key, continuationMarker?.keyMarker, continuationMarker?.versionId)
}
return buildList {
response?.versions()
?.filter { it.key() == key && it.versionId() != NOT_VERSIONED_VERSION_ID }
?.map { S3TreeObjectVersionNode(this@S3TreeObjectNode, it.versionId(), it.size(), it.lastModified()) }
?.onEach { add(it) }
if (response?.isTruncated == true) {
val nextKey = response.nextKeyMarker()
val nextVersion = response.nextVersionIdMarker()
add(
S3TreeContinuationNode(
bucket,
this@S3TreeObjectNode,
this@S3TreeObjectNode.key,
VersionContinuationToken(nextKey, nextVersion)
)
)
}
}
} catch (e: NoSuchBucketException) {
bucket.handleDeletedBucket()
return emptyList()
} catch (e: S3Exception) {
e.notifyError(message("s3.object.load.fail.title"))
return buildList {
if (continuationMarker != null) {
add(
S3TreeErrorContinuationNode(
bucket,
this@S3TreeObjectNode,
this@S3TreeObjectNode.key,
continuationMarker
)
)
} else {
add(S3TreeErrorNode(bucket, this@S3TreeObjectNode))
}
}
} catch (e: Exception) {
LOG.error(e) { "Loading objects failed!" }
return buildList {
if (continuationMarker != null) {
add(
S3TreeErrorContinuationNode(
bucket,
this@S3TreeObjectNode,
this@S3TreeObjectNode.key,
continuationMarker
)
)
} else {
add(S3TreeErrorNode(bucket, this@S3TreeObjectNode))
}
}
}
}