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

net.yudichev.jiotty.common.varstore.VarStoreModule Maven / Gradle / Ivy

package net.yudichev.jiotty.common.varstore;

import net.yudichev.jiotty.common.inject.BaseLifecycleComponentModule;
import net.yudichev.jiotty.common.inject.BindingSpec;
import net.yudichev.jiotty.common.inject.ExposedKeyModule;
import net.yudichev.jiotty.common.lang.TypedBuilder;

import javax.inject.Singleton;
import java.nio.file.Path;

import static com.google.common.base.Preconditions.checkNotNull;

public final class VarStoreModule extends BaseLifecycleComponentModule implements ExposedKeyModule {
    private final BindingSpec pathSpec;

    public VarStoreModule(BindingSpec pathSpec) {
        this.pathSpec = checkNotNull(pathSpec);
    }

    @Override
    protected void configure() {
        pathSpec.bind(Path.class)
                .annotatedWith(VarStoreImpl.StoreFile.class)
                .installedBy(this::installLifecycleComponentModule);
        bind(getExposedKey()).to(VarStoreImpl.class).in(Singleton.class);
        expose(getExposedKey());
    }

    public static Builder builder() {
        return new Builder();
    }

    public static final class Builder implements TypedBuilder> {

        private BindingSpec pathSpec;

        private Builder() {
        }

        public Builder setPath(BindingSpec pathSpec) {
            this.pathSpec = checkNotNull(pathSpec);
            return this;
        }

        @Override
        public ExposedKeyModule build() {
            return new VarStoreModule(pathSpec);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy