diff --git a/multiapps-controller-api/pom.xml b/multiapps-controller-api/pom.xml
index 8fc3141542..bdfbd473d7 100644
--- a/multiapps-controller-api/pom.xml
+++ b/multiapps-controller-api/pom.xml
@@ -10,7 +10,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-client/pom.xml b/multiapps-controller-client/pom.xml
index 9c4ce6de78..8f541b78db 100644
--- a/multiapps-controller-client/pom.xml
+++ b/multiapps-controller-client/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-core-test/pom.xml b/multiapps-controller-core-test/pom.xml
index 8a0738262c..0a64a11d22 100644
--- a/multiapps-controller-core-test/pom.xml
+++ b/multiapps-controller-core-test/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-core/pom.xml b/multiapps-controller-core/pom.xml
index ef66afab66..f781d5d721 100644
--- a/multiapps-controller-core/pom.xml
+++ b/multiapps-controller-core/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-coverage/pom.xml b/multiapps-controller-coverage/pom.xml
index e3b6f69628..969b1a045f 100644
--- a/multiapps-controller-coverage/pom.xml
+++ b/multiapps-controller-coverage/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-database-migration/pom.xml b/multiapps-controller-database-migration/pom.xml
index 836d33d37e..b88dc96258 100644
--- a/multiapps-controller-database-migration/pom.xml
+++ b/multiapps-controller-database-migration/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-persistence-test/pom.xml b/multiapps-controller-persistence-test/pom.xml
index ef7d0745af..2e9c1a2677 100644
--- a/multiapps-controller-persistence-test/pom.xml
+++ b/multiapps-controller-persistence-test/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-persistence/pom.xml b/multiapps-controller-persistence/pom.xml
index 7514b98d8e..254d30fc7d 100644
--- a/multiapps-controller-persistence/pom.xml
+++ b/multiapps-controller-persistence/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java
index d1fba0ac70..2ba0ff70a7 100644
--- a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java
+++ b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java
@@ -77,7 +77,7 @@ public List getFileEntriesWithoutContent(List fileEntries)
@Override
protected boolean existsInObjectStore(FileEntry fileEntry) {
- return blobStore.blobMetadata(container, fileEntry.getId()) != null;
+ return blobStore.blobExists(container, fileEntry.getId());
}
@Override
diff --git a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java
index 29a5398b45..0addf3485f 100644
--- a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java
+++ b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java
@@ -31,9 +31,17 @@
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
class JCloudsObjectStoreFileStorageTest {
@@ -368,4 +376,47 @@ protected void assertFileExists(boolean expectedFileExist, FileEntry actualFile)
assertEquals(expectedFileExist, blobExists);
}
+ @Test
+ void existsInObjectStoreWithMockedBlobStoreVerifiesBlobExistsCalled() {
+ BlobStore mockBlobStore = mock(BlobStore.class);
+ FileEntry fileEntry = createFileEntry();
+ JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, CONTAINER);
+
+ when(mockBlobStore.blobExists(CONTAINER, fileEntry.getId())).thenReturn(true);
+
+ boolean result = testFileStorage.existsInObjectStore(fileEntry);
+
+ verify(mockBlobStore, times(1)).blobExists(CONTAINER, fileEntry.getId());
+ assertTrue(result);
+ }
+
+ @Test
+ void existsInObjectStoreWithMockedBlobStoreFileNotFound() {
+ BlobStore mockBlobStore = mock(BlobStore.class);
+ FileEntry fileEntry = createFileEntry();
+ JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, CONTAINER);
+
+ when(mockBlobStore.blobExists(CONTAINER, fileEntry.getId())).thenReturn(false);
+
+ boolean result = testFileStorage.existsInObjectStore(fileEntry);
+
+ verify(mockBlobStore, times(1)).blobExists(CONTAINER, fileEntry.getId());
+ assertFalse(result);
+ }
+
+ @Test
+ void existsInObjectStoreWithMockedBlobStoreVerifiesCorrectContainer() {
+ BlobStore mockBlobStore = mock(BlobStore.class);
+ String testContainer = "test-container";
+ FileEntry fileEntry = createFileEntry();
+ JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, testContainer);
+
+ when(mockBlobStore.blobExists(testContainer, fileEntry.getId())).thenReturn(true);
+
+ boolean result = testFileStorage.existsInObjectStore(fileEntry);
+
+ verify(mockBlobStore, times(1)).blobExists(testContainer, fileEntry.getId());
+ verify(mockBlobStore, never()).blobExists(eq("wrong-container"), any());
+ assertTrue(result);
+ }
}
diff --git a/multiapps-controller-process/pom.xml b/multiapps-controller-process/pom.xml
index ada42f9d88..cc3751e773 100644
--- a/multiapps-controller-process/pom.xml
+++ b/multiapps-controller-process/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-shutdown-client/pom.xml b/multiapps-controller-shutdown-client/pom.xml
index c83207bfd2..afd4e2f252 100644
--- a/multiapps-controller-shutdown-client/pom.xml
+++ b/multiapps-controller-shutdown-client/pom.xml
@@ -8,7 +8,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-web/pom.xml b/multiapps-controller-web/pom.xml
index d734053622..5f90efdf73 100644
--- a/multiapps-controller-web/pom.xml
+++ b/multiapps-controller-web/pom.xml
@@ -9,7 +9,7 @@
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
diff --git a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/Messages.java b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/Messages.java
index 4bbccac51f..44e23acd6e 100644
--- a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/Messages.java
+++ b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/Messages.java
@@ -58,7 +58,7 @@ public final class Messages {
// WARN log messages
- public static final String NO_OBJECTSTORE_PROVIDER_FOUND = "No ObjectStore provider found!";
+ public static final String NO_OBJECTSTORE_PROVIDER_FOUND_FOR_0 = "No ObjectStore provider found for {0}!";
// INFO log messages
public static final String ALM_SERVICE_ENV_INITIALIZED = "Deploy service environment initialized";
diff --git a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/bean/factory/ObjectStoreFileStorageFactoryBean.java b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/bean/factory/ObjectStoreFileStorageFactoryBean.java
index f8311d7d94..18020e1a0a 100644
--- a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/bean/factory/ObjectStoreFileStorageFactoryBean.java
+++ b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/bean/factory/ObjectStoreFileStorageFactoryBean.java
@@ -23,7 +23,6 @@
import org.cloudfoundry.multiapps.controller.persistence.util.EnvironmentServicesFinder;
import org.cloudfoundry.multiapps.controller.web.Constants;
import org.cloudfoundry.multiapps.controller.web.Messages;
-import org.cloudfoundry.multiapps.controller.web.configuration.service.ImmutableObjectStoreServiceInfo;
import org.cloudfoundry.multiapps.controller.web.configuration.service.ObjectStoreServiceInfo;
import org.cloudfoundry.multiapps.controller.web.configuration.service.ObjectStoreServiceInfoCreator;
import org.jclouds.ContextBuilder;
@@ -92,11 +91,13 @@ public FileStorage createObjectStoreFromFirstReachableProvider(Map createObjectStoreBasedOnProvider(String objectStoreProviderName,
List providersServiceInfo,
Map exceptions) {
- return switch (objectStoreProviderName) {
- case Constants.AZURE -> tryToCreateSdkObjectStore(exceptions, Constants.AZUREBLOB);
- case Constants.GCP -> tryToCreateSdkObjectStore(exceptions, Constants.GOOGLE_CLOUD_STORAGE);
- default -> tryToCreateJCloudsObjectStore(objectStoreProviderName, providersServiceInfo, exceptions);
- };
+ Optional objectStoreServiceInfoOptional = getAppropriateProvider(objectStoreProviderName,
+ providersServiceInfo);
+ if (objectStoreServiceInfoOptional.isEmpty()) {
+ LOGGER.warn(MessageFormat.format(Messages.NO_OBJECTSTORE_PROVIDER_FOUND_FOR_0, objectStoreProviderName));
+ return Optional.empty();
+ }
+ return tryToCreateObjectStore(objectStoreServiceInfoOptional.get(), exceptions);
}
private Optional getAppropriateProvider(String objectStoreProviderName,
@@ -107,25 +108,6 @@ private Optional getAppropriateProvider(String objectSto
.findFirst();
}
- private Optional tryToCreateJCloudsObjectStore(String objectStoreProviderName,
- List providersServiceInfo,
- Map exceptions) {
- Optional objectStoreServiceInfoOptional = getAppropriateProvider(objectStoreProviderName,
- providersServiceInfo);
- if (objectStoreServiceInfoOptional.isPresent()) {
- ObjectStoreServiceInfo objectStoreServiceInfo = objectStoreServiceInfoOptional.get();
- return tryToCreateObjectStore(objectStoreServiceInfo, exceptions);
- }
- LOGGER.warn(Messages.NO_OBJECTSTORE_PROVIDER_FOUND);
- return Optional.empty();
- }
-
- private Optional tryToCreateSdkObjectStore(Map exceptions, String providerName) {
- return tryToCreateObjectStore(ImmutableObjectStoreServiceInfo.builder()
- .provider(providerName)
- .build(), exceptions);
- }
-
private Optional tryToCreateObjectStore(ObjectStoreServiceInfo objectStoreServiceInfo,
Map exceptions) {
try {
diff --git a/pom.xml b/pom.xml
index 5f309b8ea9..bf2878ace3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.cloudfoundry.multiapps
multiapps-controller-parent
- 2.44.1
+ 2.44.2
pom
MultiApps Controller Parent
Multi-Target Application (MTA) deployment service for Cloud Foundry