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

io.bootique.mvc.MvcModuleExtender Maven / Gradle / Ivy

There is a newer version: 3.0.M2
Show newest version
package io.bootique.mvc;

import com.google.inject.Binder;
import com.google.inject.Singleton;
import com.google.inject.multibindings.MapBinder;
import io.bootique.mvc.renderer.TemplateRenderer;

/**
 * @since 0.6
 */
public class MvcModuleExtender {

    private Binder binder;
    private MapBinder templateRenderers;

    MvcModuleExtender(Binder binder) {
        this.binder = binder;
    }

    MvcModuleExtender initAllExtensions() {
        contributeRenderers();
        return this;
    }

    public MvcModuleExtender setRenderer(String handledExtension, TemplateRenderer renderer) {
        contributeRenderers().addBinding(handledExtension).toInstance(renderer);
        return this;
    }

    public MvcModuleExtender setRenderer(String handledExtension, Class rendererType) {
        // TODO: what does singleton scope means when adding to collection?
        contributeRenderers().addBinding(handledExtension).to(rendererType).in(Singleton.class);
        return this;
    }

    protected MapBinder contributeRenderers() {
        if (templateRenderers == null) {
            templateRenderers = MapBinder.newMapBinder(binder, String.class, TemplateRenderer.class);
        }
        return templateRenderers;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy