Skip to content

Commit 53b9529

Browse files
committed
getBucketMetadata never returns null.
1 parent 114ec92 commit 53b9529

File tree

3 files changed

+28
-40
lines changed

3 files changed

+28
-40
lines changed

server/src/main/java/com/adobe/testing/s3mock/service/BucketService.java

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,17 @@ public BucketService(BucketStore bucketStore, ObjectStore objectStore) {
9090

9191
public boolean isBucketEmpty(String bucketName) {
9292
var bucketMetadata = bucketStore.getBucketMetadata(bucketName);
93-
if (bucketMetadata != null) {
94-
var objects = bucketMetadata.objects();
95-
if (!objects.isEmpty()) {
96-
for (var id : objects.values()) {
97-
var s3ObjectMetadata = objectStore.getS3ObjectMetadata(bucketMetadata, id, null);
98-
if (s3ObjectMetadata != null && !s3ObjectMetadata.deleteMarker()) {
99-
return false;
100-
}
93+
var objects = bucketMetadata.objects();
94+
if (!objects.isEmpty()) {
95+
for (var id : objects.values()) {
96+
var s3ObjectMetadata = objectStore.getS3ObjectMetadata(bucketMetadata, id, null);
97+
if (s3ObjectMetadata != null && !s3ObjectMetadata.deleteMarker()) {
98+
return false;
10199
}
102-
return true;
103100
}
104-
return bucketMetadata.objects().isEmpty();
105-
} else {
106-
throw new IllegalStateException("Requested Bucket does not exist: " + bucketName);
101+
return true;
107102
}
103+
return bucketMetadata.objects().isEmpty();
108104
}
109105

110106
public boolean doesBucketExist(String bucketName) {
@@ -122,7 +118,6 @@ public ListAllMyBucketsResult listBuckets(
122118
var buckets = bucketStore
123119
.listBuckets()
124120
.stream()
125-
.filter(Objects::nonNull)
126121
.filter(b -> b.name().startsWith(normalizedPrefix))
127122
.sorted(Comparator.comparing(BucketMetadata::name))
128123
.map(Bucket::from)
@@ -174,29 +169,25 @@ public Bucket createBucket(
174169

175170
public boolean deleteBucket(String bucketName) {
176171
var bucketMetadata = bucketStore.getBucketMetadata(bucketName);
177-
if (bucketMetadata != null) {
178-
var objects = bucketMetadata.objects();
179-
if (!objects.isEmpty()) {
180-
for (var entry : objects.entrySet()) {
181-
var s3ObjectMetadata =
182-
objectStore.getS3ObjectMetadata(bucketMetadata, entry.getValue(), null);
183-
if (s3ObjectMetadata != null && s3ObjectMetadata.deleteMarker()) {
184-
// yes, we really want to delete the objects here, if they are delete markers, they
185-
// do not officially exist.
186-
objectStore.doDeleteObject(bucketMetadata, entry.getValue());
187-
bucketStore.removeFromBucket(entry.getKey(), bucketName);
188-
}
172+
var objects = bucketMetadata.objects();
173+
if (!objects.isEmpty()) {
174+
for (var entry : objects.entrySet()) {
175+
var s3ObjectMetadata =
176+
objectStore.getS3ObjectMetadata(bucketMetadata, entry.getValue(), null);
177+
if (s3ObjectMetadata != null && s3ObjectMetadata.deleteMarker()) {
178+
// yes, we really want to delete the objects here, if they are delete markers, they
179+
// do not officially exist.
180+
objectStore.doDeleteObject(bucketMetadata, entry.getValue());
181+
bucketStore.removeFromBucket(entry.getKey(), bucketName);
189182
}
190183
}
191-
// check again if bucket is empty
192-
bucketMetadata = bucketStore.getBucketMetadata(bucketName);
193-
if (!bucketMetadata.objects().isEmpty()) {
194-
throw new IllegalStateException("Bucket is not empty: " + bucketName);
195-
}
196-
return bucketStore.deleteBucket(bucketName);
197-
} else {
198-
throw new IllegalStateException("Requested Bucket does not exist: " + bucketName);
199184
}
185+
// check again if bucket is empty
186+
bucketMetadata = bucketStore.getBucketMetadata(bucketName);
187+
if (!bucketMetadata.objects().isEmpty()) {
188+
throw new IllegalStateException("Bucket is not empty: " + bucketName);
189+
}
190+
return bucketStore.deleteBucket(bucketName);
200191
}
201192

202193
public void setVersioningConfiguration(String bucketName, VersioningConfiguration configuration) {
@@ -255,7 +246,6 @@ public List<S3Object> getS3Objects(String bucketName, @Nullable String prefix) {
255246
var uuids = bucketStore.lookupIdsInBucket(prefix, bucketName);
256247
return uuids
257248
.stream()
258-
.filter(Objects::nonNull)
259249
.map(uuid -> objectStore.getS3ObjectMetadata(bucketMetadata, uuid, null))
260250
.filter(Objects::nonNull)
261251
.map(S3Object::from)

server/src/main/java/com/adobe/testing/s3mock/store/StoreConfiguration.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ ObjectStore objectStore(
5555
var objectStore = new ObjectStore(S3_OBJECT_DATE_FORMAT, objectMapper);
5656
for (var bucketName : bucketNames) {
5757
var bucketMetadata = bucketStore.getBucketMetadata(bucketName);
58-
if (bucketMetadata != null) {
59-
objectStore.loadObjects(bucketMetadata, bucketMetadata.objects().values());
60-
}
58+
objectStore.loadObjects(bucketMetadata, bucketMetadata.objects().values());
6159
}
6260
return objectStore;
6361
}

server/src/test/kotlin/com/adobe/testing/s3mock/service/BucketServiceTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import org.assertj.core.api.Assertions.assertThat
3030
import org.assertj.core.api.Assertions.assertThatThrownBy
3131
import org.junit.jupiter.api.Test
3232
import org.mockito.Mockito.verify
33+
import org.mockito.kotlin.doThrow
3334
import org.mockito.kotlin.whenever
3435
import org.springframework.beans.factory.annotation.Autowired
3536
import org.springframework.boot.test.context.SpringBootTest
@@ -643,11 +644,10 @@ internal class BucketServiceTest : ServiceTestBase() {
643644
@Test
644645
fun testDeleteBucket_nonExistingBucket_throws() {
645646
val bucketName = "no-such-bucket"
646-
// Return null metadata to trigger the else-branch in service
647-
whenever(bucketStore.getBucketMetadata(bucketName)).thenReturn(null)
647+
whenever(bucketStore.getBucketMetadata(bucketName)).doThrow(IllegalStateException(("Bucket does not exist: $bucketName")))
648648
assertThatThrownBy { iut.deleteBucket(bucketName) }
649649
.isInstanceOf(IllegalStateException::class.java)
650-
.hasMessageContaining("Requested Bucket does not exist: $bucketName")
650+
.hasMessageContaining("Bucket does not exist: $bucketName")
651651
}
652652

653653
@Test

0 commit comments

Comments
 (0)