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

io.virtdata.core.ContextualBindingsTemplate Maven / Gradle / Ivy

The newest version!
package io.virtdata.core;

import io.virtdata.api.ValuesBinder;

/**
 * A template that maps a set of specifiers, a context object, and a method for applying
 * mapped values to the context object. This can be used in the configuration phase, in global
 * scope without triggering mapper bindings resolution from specifiers.
 *
 * @param  The type of the contextual template object.
 * @param  The type which will be produced when mapped values are applied to a type C
 */
public class ContextualBindingsTemplate {

    private C context;
    private BindingsTemplate bindingsTemplate;
    private ValuesBinder valuesBinder;

    public ContextualBindingsTemplate(C context,
                                      BindingsTemplate bindingsTemplate,
                                      ValuesBinder valuesMapBinder) {
        this.context = context;
        this.bindingsTemplate = bindingsTemplate;
        this.valuesBinder = valuesMapBinder;
    }

    public C getContext() {
        return context;
    }

    public BindingsTemplate getBindingsTemplate() {
        return bindingsTemplate;
    }

    public ValuesBinder getValuesBinder() {
        return valuesBinder;
    }

    public ContextualBindings resolveBindings() {
        Bindings bindings = bindingsTemplate.resolveBindings();
        return new ContextualBindings(bindings, context, valuesBinder);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy