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

com.sdl.dxa.dd4t.DropInExperienceConfiguration Maven / Gradle / Ivy

package com.sdl.dxa.dd4t;

import com.sdl.dxa.dd4t.providers.ModelServiceComponentPresentationProvider;
import com.sdl.dxa.dd4t.providers.ModelServicePageProvider;
import com.sdl.dxa.tridion.modelservice.ModelServiceClient;
import com.sdl.dxa.tridion.modelservice.ModelServiceClientConfiguration;
import org.dd4t.core.factories.impl.ComponentPresentationFactoryImpl;
import org.dd4t.core.factories.impl.PageFactoryImpl;
import org.dd4t.providers.PayloadCacheProvider;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import static org.slf4j.LoggerFactory.getLogger;

@SuppressWarnings("SpringAutowiredFieldsWarningInspection")
@Configuration
@Profile("auto.dd4t.ms.provider")
public class DropInExperienceConfiguration implements ApplicationContextAware {

    private static final Logger log = getLogger(DropInExperienceConfiguration.class);

    @Autowired
    private ModelServiceClient modelServiceClient;

    @Autowired
    private ModelServiceClientConfiguration modelServiceClientConfiguration;

    public DropInExperienceConfiguration() {
        // required empty
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        PageFactoryImpl pageFactory = applicationContext.getBean(PageFactoryImpl.class);
        ComponentPresentationFactoryImpl componentPresentationFactory = applicationContext.getBean(ComponentPresentationFactoryImpl.class);

        PayloadCacheProvider cacheProvider = applicationContext.getBean(PayloadCacheProvider.class);

        ModelServicePageProvider modelServicePageProvider = modelServicePageProvider(cacheProvider);

        ModelServiceComponentPresentationProvider modelServiceComponentPresentationProvider = componentPresentationProvider(cacheProvider);

        if (pageFactory != null && componentPresentationFactory != null) {
            pageFactory.setPageProvider(modelServicePageProvider);
            componentPresentationFactory.setComponentPresentationProvider(modelServiceComponentPresentationProvider);
            log.info("Default DD4T Page/CP Providers have been replaced with default DXA Model Service Page/CP Providers. " +
                    "Run application without 'auto.dd4t.ms.provider' Spring profile to use any custom beans configuration.");
        }
    }

    private ModelServiceComponentPresentationProvider componentPresentationProvider(PayloadCacheProvider cacheProvider) {
        ModelServiceComponentPresentationProvider modelServiceComponentPresentationProvider = new ModelServiceComponentPresentationProvider();
        modelServiceComponentPresentationProvider.setContentIsCompressed("false");
        modelServiceComponentPresentationProvider.setCacheProvider(cacheProvider);
        modelServiceComponentPresentationProvider.setModelServiceClient(modelServiceClient);
        modelServiceComponentPresentationProvider.setModelServiceClientConfiguration(modelServiceClientConfiguration);
        return modelServiceComponentPresentationProvider;
    }

    private ModelServicePageProvider modelServicePageProvider(PayloadCacheProvider cacheProvider) {
        ModelServicePageProvider modelServicePageProvider = new ModelServicePageProvider();
        modelServicePageProvider.setContentIsCompressed("false");
        modelServicePageProvider.setCacheProvider(cacheProvider);
        modelServicePageProvider.setModelServiceClient(modelServiceClient);
        modelServicePageProvider.setModelServiceClientConfiguration(modelServiceClientConfiguration);
        return modelServicePageProvider;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy