override fun loadObjects()

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))
                }
            }
        }
    }