DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Searcher<?>> { @Override protected FederationSearcher doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement) { FederationSearcherModel model = new FederationSearcherModelBuilder(searcherElement).build(); Optional<Component> targetSelector = buildTargetSelector(deployState, ancestor, searcherElement, model.getComponentId()); return new FederationSearcher(model, targetSelector); }    }
@Test public void ensureCorrectModel() { FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root.getDeployState(), root, parse( "<federation id='theId'>", " <provides>p2</provides>", " <source-set inherits=\"default\" />", " <source id='source1'>", " <federationoptions optional='true' />", " </source>", " <source id='source2' />", "</federation>")); FederationSearcherModel model = searcher.model; assertEquals("theId", model.bundleInstantiationSpec.id.stringValue()); assertEquals(com.yahoo.search.federation.FederationSearcher.class.getName(), model.bundleInstantiationSpec.classId.stringValue()); assertEquals(2, model.targets.size()); assertTrue("source-set option was ignored", model.inheritDefaultSources); assertThat(targetNames(model.targets), hasItems("source1", "source2")); }
@Test public void require_that_target_selector_can_be_configured() { FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root.getDeployState(), root, parse( "<federation id='federation-id'>", " <target-selector id='my-id' class='my-class' />", "</federation>")); String targetSelectorId = "my-id@federation-id"; AbstractConfigProducer<?> targetSelector = searcher.getChildren().get(targetSelectorId); assertNotNull("No target selector child found", targetSelector); FederationConfig.Builder builder = new FederationConfig.Builder(); searcher.getConfig(builder); assertThat(new FederationConfig(builder).targetSelector(), is(targetSelectorId)); }