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

com.commercetools.sunrise.framework.template.cms.FileBasedCmsServiceProvider Maven / Gradle / Ivy

The newest version!
package com.commercetools.sunrise.framework.template.cms;

import com.commercetools.sunrise.cms.CmsService;
import com.commercetools.sunrise.play.configuration.SunriseConfigurationException;
import com.commercetools.sunrise.ctp.project.ProjectContext;
import com.commercetools.sunrise.framework.template.cms.filebased.FileBasedCmsService;
import com.commercetools.sunrise.framework.template.i18n.composite.CompositeI18nResolver;
import com.commercetools.sunrise.framework.template.i18n.composite.CompositeI18nResolverFactory;
import com.google.inject.Provider;
import play.Configuration;

import javax.annotation.Nullable;
import javax.inject.Inject;

public final class FileBasedCmsServiceProvider implements Provider {

    private static final String CONFIG_CMS_I18N = "application.cms.i18n";

    @Nullable
    private final Configuration i18nCmsConfiguration;
    private final ProjectContext projectContext;
    private final CompositeI18nResolverFactory compositeI18nResolverFactory;

    @Inject
    public FileBasedCmsServiceProvider(final Configuration configuration, final ProjectContext projectContext, final CompositeI18nResolverFactory compositeI18nResolverFactory) {
        this.i18nCmsConfiguration = configuration.getConfig(CONFIG_CMS_I18N);
        if (i18nCmsConfiguration == null) {
            throw new SunriseConfigurationException("Could not initialize FileBasedCmsService, as it requires its own i18nResolver configuration and it is missing", CONFIG_CMS_I18N);
        }
        this.projectContext = projectContext;
        this.compositeI18nResolverFactory = compositeI18nResolverFactory;
    }

    @Override
    public CmsService get() {
        final CompositeI18nResolver i18nResolver = compositeI18nResolverFactory.create(i18nCmsConfiguration, projectContext.locales());
        return FileBasedCmsService.of(i18nResolver);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy