All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.cfenv.spring.boot.data.mongodb.MongoClientOptionsSSLContextBeanCustomizer Maven / Gradle / Ivy

package com.ibm.cfenv.spring.boot.data.mongodb;

import com.ibm.beancustomizer.config.BeanCustomizer;
import com.mongodb.MongoClientOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;

import javax.net.ssl.SSLContext;
import java.util.HashMap;
import java.util.Map;

/**
 * Expects cfenv.processor.icdmongo.enabled=true
 * cfenv.processor.icdmongo.sslcontext=name-of-sslcontext-bean
 */
@Configuration
public class MongoClientOptionsSSLContextBeanCustomizer implements BeanCustomizer {

    private final Map sslContexts;

    @Autowired(required = false)
    public MongoClientOptionsSSLContextBeanCustomizer(Map sslContexts) {
        if (sslContexts == null) {
            this.sslContexts = new HashMap<>();
        } else {
            this.sslContexts = sslContexts;
        }
    }

    @Override
    public MongoClientOptions postProcessBeforeInit(MongoClientOptions mongoClientOptions) {
        SSLContext sslContext = sslContexts.get("mongodb");
        if (sslContext != null) {
            mongoClientOptions = MongoClientOptions.builder(mongoClientOptions)
                    .sslContext(sslContext)
                    .sslEnabled(true)
                    .build();
        }
        return mongoClientOptions;
    }

    @Override
    public MongoClientOptions postProcessAfterInit(MongoClientOptions original) {
        return original;
    }

    @Override
    public boolean accepts(Object bean, String beanName) {
        return bean instanceof MongoClientOptions;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy