Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public final class Messages {
public static final String MISSING_PROPERTIES_FOR_CREATING_THE_SPECIFIC_PROVIDER = "Missing properties for creating the specific provider!";
public static final String DEPLOY_FROM_URL_WRONG_CREDENTIALS = "Credentials to {0} are wrong. Make sure that they are correct.";

public static final String FAILED_TO_CREATE_BLOB_STORE_CONTEXT = "Failed to create BlobStoreContext";

// Audit log messages
public static final String USER_TRYING_TO_LOGIN_AUDIT_LOG_MESSAGE = "\"{0}\" is trying to login in space \"{1}\"";
public static final String USER_SUCCESSFULLY_LOGGED_IN_AUDIT_LOG_MESSAGE = "\"{0}\" successfully logged in space \"{1}\"";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package org.cloudfoundry.multiapps.controller.web.configuration.bean.factory;

import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.pivotal.cfenv.core.CfService;
import org.apache.commons.lang3.StringUtils;
import org.cloudfoundry.multiapps.controller.core.util.UriUtil;
Expand All @@ -15,12 +21,6 @@
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;

import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ObjectStoreFileStorageFactoryBean implements FactoryBean<ObjectStoreFileStorage>, InitializingBean {

private static final Logger LOGGER = LoggerFactory.getLogger(ObjectStoreFileStorageFactoryBean.class);
Expand All @@ -44,26 +44,25 @@ private ObjectStoreFileStorage createObjectStoreFileStorage() {
if (providersServiceInfo.isEmpty()) {
return null;
}

Map<String, Exception> exceptions = new HashMap<>();

for (ObjectStoreServiceInfo objectStoreServiceInfo : providersServiceInfo) {
BlobStoreContext context = getBlobStoreContext(objectStoreServiceInfo);
if (context == null) {
exceptions.put(objectStoreServiceInfo.getProvider(),
new IllegalArgumentException(Messages.MISSING_PROPERTIES_FOR_CREATING_THE_SPECIFIC_PROVIDER));
continue;
}
ObjectStoreFileStorage fileStorage = createFileStorage(objectStoreServiceInfo, context);
try {
BlobStoreContext context = getBlobStoreContext(objectStoreServiceInfo);
ObjectStoreFileStorage fileStorage = createFileStorage(objectStoreServiceInfo, context);
fileStorage.testConnection();
LOGGER.info(MessageFormat.format(Messages.OBJECT_STORE_WITH_PROVIDER_0_CREATED, objectStoreServiceInfo.getProvider()));
return fileStorage;
} catch (Exception e) {
exceptions.put(objectStoreServiceInfo.getProvider(), e);
}
}

exceptions.forEach(
(provider, exception) -> LOGGER.error(MessageFormat.format(Messages.CANNOT_CREATE_OBJECT_STORE_CLIENT_WITH_PROVIDER_0, provider),
exception));
(provider, exception) -> LOGGER.error(
MessageFormat.format(Messages.CANNOT_CREATE_OBJECT_STORE_CLIENT_WITH_PROVIDER_0, provider),
exception));
throw new IllegalStateException(Messages.NO_VALID_OBJECT_STORE_CONFIGURATION_FOUND);
}

Expand All @@ -77,15 +76,31 @@ private List<ObjectStoreServiceInfo> getProvidersServiceInfo() {

private BlobStoreContext getBlobStoreContext(ObjectStoreServiceInfo serviceInfo) {
ContextBuilder contextBuilder = ContextBuilder.newBuilder(serviceInfo.getProvider());
applyCredentials(serviceInfo, contextBuilder);

resolveContextEndpoint(serviceInfo, contextBuilder);

BlobStoreContext context = contextBuilder.buildView(BlobStoreContext.class);
if (context == null) {
throw new IllegalStateException(Messages.FAILED_TO_CREATE_BLOB_STORE_CONTEXT);
}

return context;
}

private void applyCredentials(ObjectStoreServiceInfo serviceInfo, ContextBuilder contextBuilder) {
if (serviceInfo.getCredentialsSupplier() != null) {
contextBuilder.credentialsSupplier(serviceInfo.getCredentialsSupplier());
} else if (serviceInfo.getIdentity() != null && serviceInfo.getCredential() != null) {
contextBuilder.credentials(serviceInfo.getIdentity(), serviceInfo.getCredential());
} else {
return null;
String identity = serviceInfo.getIdentity();
String credential = serviceInfo.getCredential();

if (StringUtils.isBlank(identity) || StringUtils.isBlank(credential)) {
throw new IllegalArgumentException(Messages.MISSING_PROPERTIES_FOR_CREATING_THE_SPECIFIC_PROVIDER);
}

contextBuilder.credentials(identity, credential);
}
resolveContextEndpoint(serviceInfo, contextBuilder);
return contextBuilder.buildView(BlobStoreContext.class);
}

private void resolveContextEndpoint(ObjectStoreServiceInfo serviceInfo, ContextBuilder contextBuilder) {
Expand Down
42 changes: 21 additions & 21 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,49 +15,49 @@
<sonar.organization>cloudfoundry</sonar.organization>
<sonar.coverage.jacoco.xmlReportPaths>../multiapps-controller-coverage/target/site/jacoco-aggregate/jacoco.xml
</sonar.coverage.jacoco.xmlReportPaths>
<junit.version>5.12.1</junit.version>
<junit.version>5.12.2</junit.version>
<junit-platform.version>1.12.1</junit-platform.version>
<mockito.version>5.14.2</mockito.version>
<mockito.version>5.17.0</mockito.version>
<derby.version>10.16.1.1</derby.version>
<h2.version>2.2.224</h2.version>
<servlet-api.version>6.1.0</servlet-api.version>
<log4j.version>2.24.3</log4j.version>
<slf4j.version>2.0.17</slf4j.version>
<commons-io.version>2.18.0</commons-io.version>
<commons-collections4.version>4.4</commons-collections4.version>
<snakeyaml.version>2.3</snakeyaml.version>
<commons-io.version>2.19.0</commons-io.version>
<commons-collections4.version>4.5.0</commons-collections4.version>
<snakeyaml.version>2.4</snakeyaml.version>
<httpclient.version>4.5.14</httpclient.version>
<httpcore.version>4.4.16</httpcore.version>
<eclipselink.version>3.0.4
</eclipselink.version> <!-- Be careful when updating eclipselink versions. As of version 4.0.4, there have been reported regressions connected to exhausted Hikari DB pools -->
<flowable.version>6.8.0</flowable.version>
<mybatis.version>3.5.19</mybatis.version>
<spring.version>6.2.4</spring.version>
<spring-security.version>6.4.5</spring-security.version>
<spring.version>6.2.7</spring.version>
<spring-security.version>6.5.0</spring-security.version>
<json-smart.version>2.5.2</json-smart.version>
<hikari.version>6.2.1</hikari.version>
<jackson.version>2.18.3</jackson.version>
<jackson.databind.version>2.18.3</jackson.databind.version>
<liquibase.version>4.29.1</liquibase.version>
<liquibase-slf4j.version>5.0.0</liquibase-slf4j.version>
<cloudfoundry-client.version>2.55.0</cloudfoundry-client.version>
<swagger.version>1.6.14</swagger.version>
<jclouds.version>2.6.0</jclouds.version>
<hikari.version>6.3.0</hikari.version>
<jackson.version>2.19.0</jackson.version>
<jackson.databind.version>2.19.0</jackson.databind.version>
<liquibase.version>4.31.1</liquibase.version>
<liquibase-slf4j.version>5.1.0</liquibase-slf4j.version>
<cloudfoundry-client.version>2.56.0</cloudfoundry-client.version>
<swagger.version>1.6.15</swagger.version>
<jclouds.version>2.7.0</jclouds.version>
<guava.version>33.4.6-jre</guava.version>
<resilience4j.version>2.2.0</resilience4j.version>
<resilience4j.version>2.3.0</resilience4j.version>
<immutables.version>2.10.1</immutables.version>
<micrometer.version>1.12.5</micrometer.version>
<aliyun-sdk-oss.version>3.17.4</aliyun-sdk-oss.version>
<micrometer.version>1.15.0</micrometer.version>
<aliyun-sdk-oss.version>3.18.2</aliyun-sdk-oss.version>
<auto-service.version>1.1.1</auto-service.version>
<commons-codec.version>1.16.1</commons-codec.version>
<commons-codec.version>1.18.0</commons-codec.version>
<multiapps.version>2.32.0</multiapps.version>
<java-cfenv.version>3.1.5</java-cfenv.version>
<java-cfenv.version>3.4.0</java-cfenv.version>
<jaxb-api.version>4.0.2</jaxb-api.version>
<jaxb-core.version>4.0.5</jaxb-core.version>
<jaxb-impl.version>4.0.5</jaxb-impl.version>
<jakarta.inject-api.version>2.0.1</jakarta.inject-api.version>
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
<bouncycastle.version>1.78</bouncycastle.version>
<bouncycastle.version>1.80</bouncycastle.version>
<apache.compress.version>1.27.1</apache.compress.version>
<tika-core.version>3.1.0</tika-core.version>
</properties>
Expand Down