Skip to content

Commit 08a1513

Browse files
committed
Private mutable properties
Add private backing field and public accessors to non-mutable versions.
1 parent af9ed12 commit 08a1513

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

server/src/main/kotlin/com/adobe/testing/s3mock/store/BucketMetadata.kt

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.adobe.testing.s3mock.dto.ObjectLockConfiguration
2323
import com.adobe.testing.s3mock.dto.ObjectOwnership
2424
import com.adobe.testing.s3mock.dto.VersioningConfiguration
2525
import com.fasterxml.jackson.annotation.JsonIgnore
26+
import com.fasterxml.jackson.annotation.JsonProperty
2627
import java.nio.file.Path
2728
import java.util.UUID
2829

@@ -40,8 +41,25 @@ data class BucketMetadata(
4041
val bucketRegion: String,
4142
val bucketInfo: BucketInfo?,
4243
val locationInfo: LocationInfo?,
43-
val objects: MutableMap<String, UUID> = mutableMapOf()
44+
@param:JsonProperty("objects")
45+
private val _objects: MutableMap<String, UUID> = mutableMapOf()
4446
) {
47+
val objects: Map<String, UUID>
48+
get() = java.util.Collections.unmodifiableMap(_objects)
49+
50+
fun addKey(key: String): UUID {
51+
val existing = _objects[key]
52+
if (existing != null) return existing
53+
val uuid = UUID.randomUUID()
54+
_objects[key] = uuid
55+
return uuid
56+
}
57+
58+
fun removeKey(key: String): Boolean =
59+
_objects.remove(key) != null
60+
61+
fun getID(key: String): UUID? = _objects[key]
62+
4563
fun withVersioningConfiguration(versioningConfiguration: VersioningConfiguration): BucketMetadata =
4664
this.copy(versioningConfiguration = versioningConfiguration)
4765

@@ -51,29 +69,6 @@ data class BucketMetadata(
5169
fun withBucketLifecycleConfiguration(bucketLifecycleConfiguration: BucketLifecycleConfiguration?): BucketMetadata =
5270
this.copy(bucketLifecycleConfiguration = bucketLifecycleConfiguration)
5371

54-
fun doesKeyExist(key: String): Boolean {
55-
return getID(key) != null
56-
}
57-
58-
fun addKey(key: String): UUID {
59-
if (doesKeyExist(key)) {
60-
return getID(key)!!
61-
} else {
62-
val uuid = UUID.randomUUID()
63-
this.objects[key] = uuid
64-
return uuid
65-
}
66-
}
67-
68-
fun removeKey(key: String): Boolean {
69-
val removed = this.objects.remove(key)
70-
return removed != null
71-
}
72-
73-
fun getID(key: String): UUID? {
74-
return this.objects[key]
75-
}
76-
7772
@get:JsonIgnore
7873
val isVersioningEnabled: Boolean
7974
get() = this.versioningConfiguration?.status == VersioningConfiguration.Status.ENABLED

server/src/main/kotlin/com/adobe/testing/s3mock/store/S3ObjectVersions.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,39 @@
1717
package com.adobe.testing.s3mock.store
1818

1919
import com.fasterxml.jackson.annotation.JsonIgnore
20+
import com.fasterxml.jackson.annotation.JsonProperty
2021
import java.util.UUID
2122

2223
/**
2324
* [doc](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-objects-versioned-bucket.html).
2425
*/
2526
data class S3ObjectVersions(
2627
val id: UUID,
27-
val versions: MutableList<String>
28+
@param:JsonProperty("versions")
29+
private val _versions: MutableList<String>
2830
) {
2931
constructor(id: UUID) : this(id, mutableListOf())
3032

33+
val versions: List<String>
34+
get() = java.util.Collections.unmodifiableList(_versions)
35+
3136
fun createVersion(): String {
3237
val versionId = UUID.randomUUID().toString()
33-
versions.add(versionId)
38+
_versions.add(versionId)
3439
return versionId
3540
}
3641

3742
@get:JsonIgnore
3843
val latestVersion: String?
3944
get() {
40-
if (versions.isEmpty()) {
45+
if (_versions.isEmpty()) {
4146
return null
4247
}
43-
return versions[versions.size - 1]
48+
return _versions[_versions.size - 1]
4449
}
4550

4651
fun deleteVersion(versionId: String) {
47-
versions.remove(versionId)
52+
_versions.remove(versionId)
4853
}
4954

5055
companion object {

server/src/test/kotlin/com/adobe/testing/s3mock/store/BucketMetadataTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class BucketMetadataTest {
8484
bucketRegion = "us-east-1",
8585
bucketInfo = bucketInfo(),
8686
locationInfo = locationInfo(),
87-
objects = mutableMapOf("src/test/resources/sampleFile_large.txt" to UUID.fromString("c6fe9dd9-2c83-4f34-a934-5da6d7d4ea2c"))
87+
_objects = mutableMapOf("src/test/resources/sampleFile_large.txt" to UUID.fromString("c6fe9dd9-2c83-4f34-a934-5da6d7d4ea2c"))
8888
)
8989
DtoTestUtil.serializeAndAssertJSON(iut, testInfo)
9090
}

0 commit comments

Comments
 (0)