
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