summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java28
1 files changed, 19 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
index c57122e5bf5..d0e1ede2cfa 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
@@ -3,12 +3,14 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.component.ComponentId;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.container.bundle.BundleInstantiationSpecification;
-import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.config.model.producer.AnyConfigProducer;
import com.yahoo.config.model.producer.TreeConfigProducer;
+import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.text.XML;
+import com.yahoo.vespa.model.container.component.BertEmbedder;
import com.yahoo.vespa.model.container.component.Component;
+import com.yahoo.vespa.model.container.component.HuggingFaceEmbedder;
+import com.yahoo.vespa.model.container.component.HuggingFaceTokenizer;
import com.yahoo.vespa.model.container.xml.BundleInstantiationSpecificationBuilder;
import org.w3c.dom.Element;
@@ -31,17 +33,25 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde
}
@Override
- protected Component doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element spec) {
- Component component = buildComponent(spec);
+ protected Component<? super Component<?, ?>, ?> doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element spec) {
+ var component = buildComponent(spec, deployState);
addChildren(deployState, ancestor, spec, component);
return component;
}
- private Component buildComponent(Element spec) {
- BundleInstantiationSpecification bundleSpec =
- BundleInstantiationSpecificationBuilder.build(spec).nestInNamespace(namespace);
-
- return new Component<Component<?, ?>, ComponentModel>(new ComponentModel(bundleSpec));
+ private Component<? super Component<?, ?>, ?> buildComponent(Element spec, DeployState state) {
+ if (spec.hasAttribute("type")) {
+ var type = spec.getAttribute("type");
+ return switch (type) {
+ case "hugging-face-embedder" -> new HuggingFaceEmbedder(spec, state);
+ case "hugging-face-tokenizer" -> new HuggingFaceTokenizer(spec, state);
+ case "bert-embedder" -> new BertEmbedder(spec, state);
+ default -> throw new IllegalArgumentException("Unknown component type '%s'".formatted(type));
+ };
+ } else {
+ var bundleSpec = BundleInstantiationSpecificationBuilder.build(spec).nestInNamespace(namespace);
+ return new Component<>(new ComponentModel(bundleSpec));
+ }
}
public static void addChildren(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element componentNode, Component<? super Component<?, ?>, ?> component) {