com.yahoo.vespa.model.container.component.SignificanceModelRegistry Maven / Gradle / Ivy
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.config.ModelReference;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.search.significance.config.SignificanceConfig;
import com.yahoo.text.XML;
import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static com.yahoo.vespa.model.container.xml.ModelIdResolver.SIGNIFICANCE_MODEL;
/**
* A registry for significance models.
*
* @author MariusArhaug
*
*/
public class SignificanceModelRegistry extends SimpleComponent implements SignificanceConfig.Producer {
private static final String CLASS = "com.yahoo.language.significance.impl.DefaultSignificanceModelRegistry";
private static final String BUNDLE = null;
private final List configList = new ArrayList<>();
public SignificanceModelRegistry(DeployState deployState, Element spec) {
super(new ComponentModel(BundleInstantiationSpecification.fromStrings(CLASS, CLASS, BUNDLE)));
if (spec != null) {
for (Element modelElement : XML.getChildren(spec, "model")) {
addConfig(Model.fromXml(deployState, modelElement, Set.of(SIGNIFICANCE_MODEL)).modelReference());
}
}
}
public void addConfig(ModelReference path) {
configList.add(
new SignificanceModelConfig(path)
);
}
@Override
public void getConfig(SignificanceConfig.Builder builder) {
builder.model(
configList.stream()
.map(config -> new SignificanceConfig.Model.Builder()
.path(config.path)
).toList()
);
}
static class SignificanceModelConfig {
private final ModelReference path;
public SignificanceModelConfig(ModelReference path) {
this.path = path;
}
}
}