diff options
author | Henrik <henrik.hoiness@online.no> | 2018-07-10 15:46:23 +0200 |
---|---|---|
committer | Henrik <henrik.hoiness@online.no> | 2018-07-10 15:46:23 +0200 |
commit | 5ee1acd4c6aa0c565c60bee97be8d91d24b28a92 (patch) | |
tree | ef187d60074510b914ad4aee2b23973a345ad657 | |
parent | 0d73cf90a7c5b1b3d7dc2fa608220ca33a0f8b2b (diff) |
Add GUIHandler to Configmodel and add bundle runtime
4 files changed, 52 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java new file mode 100644 index 00000000000..3b752335055 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java @@ -0,0 +1,21 @@ +package com.yahoo.vespa.model.container.search; + +import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.container.bundle.BundleInstantiationSpecification; +import com.yahoo.osgi.provider.model.ComponentModel; +import com.yahoo.vespa.model.container.component.Handler; + +public class GUIHandler extends Handler<AbstractConfigProducer<?>> { + public static final String BUNDLE = "container-search-gui"; + public static final String CLASS = "com.yahoo.search.query.gui.GUIHandler"; + public static final String BINDING = "*/querybuilder/*"; + + public GUIHandler() { + super(new ComponentModel(bundleSpec(CLASS, BUNDLE))); + } + + public static BundleInstantiationSpecification bundleSpec(String className, String bundle) { + return BundleInstantiationSpecification.getFromStrings(className, className, bundle); + } + +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 9e129044a7a..d81026c54d1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -57,6 +57,7 @@ import com.yahoo.vespa.model.container.http.xml.HttpBuilder; import com.yahoo.vespa.model.container.jersey.xml.RestApiBuilder; import com.yahoo.vespa.model.container.processing.ProcessingChains; import com.yahoo.vespa.model.container.search.ContainerSearch; +import com.yahoo.vespa.model.container.search.GUIHandler; import com.yahoo.vespa.model.container.search.PageTemplates; import com.yahoo.vespa.model.container.search.QueryProfiles; import com.yahoo.vespa.model.container.search.SemanticRules; @@ -674,9 +675,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } private void addGUIHandler(ContainerCluster cluster) { - Handler<?> guiHandler = Handler.fromClassName("com.yahoo.search.query.gui.GUIHandler"); - - guiHandler.addServerBindings("http://*/querybuilder/*", "https://*/querybuilder/*"); + Handler<?> guiHandler = new GUIHandler(); + guiHandler.addServerBindings("http://"+GUIHandler.BINDING, "https://"+GUIHandler.BINDING); cluster.addComponent(guiHandler); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java index cc8733fc9e2..30f1df6a394 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java @@ -8,6 +8,8 @@ import com.yahoo.searchdefinition.parser.ParseException; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.container.Container; import com.yahoo.vespa.model.container.ContainerCluster; +import com.yahoo.vespa.model.container.component.Handler; +import com.yahoo.vespa.model.container.search.GUIHandler; import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils; import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg; import org.junit.Test; @@ -32,6 +34,31 @@ public class SearchBuilderTest extends ContainerModelBuilderTestBase { return root.getConfig(ChainsConfig.class, "default/component/com.yahoo.search.handler.SearchHandler"); } + @Test + public void gui_search_handler_is_always_included_when_search_is_specified() throws Exception{ + Element clusterElem = DomBuilderTest.parse( + "<jdisc id='default' version='1.0'>", + " <search />", + nodesXml, + "</jdisc>"); + + createModel(root, clusterElem); + + String discBindingsConfig = root.getConfig(JdiscBindingsConfig.class, "default").toString(); + assertThat(discBindingsConfig, containsString(GUIHandler.BINDING)); + + ContainerCluster cluster = (ContainerCluster)root.getChildren().get("default"); + + GUIHandler guiHandler = null; + for (Handler<?> handler : cluster.getHandlers()) { + if (handler instanceof GUIHandler) { + guiHandler = (GUIHandler) handler; + } + } + if (guiHandler == null) fail(); + } + + @Test public void search_handler_bindings_can_be_overridden() throws Exception { diff --git a/container-disc/pom.xml b/container-disc/pom.xml index c112466bbd4..f054bf21590 100644 --- a/container-disc/pom.xml +++ b/container-disc/pom.xml @@ -169,6 +169,7 @@ configdefinitions-jar-with-dependencies.jar, container-jersey2-jar-with-dependencies.jar, container-search-and-docproc-jar-with-dependencies.jar, + container-search-gui.jar, docprocs-jar-with-dependencies.jar, jdisc-security-filters-jar-with-dependencies.jar, jdisc_http_service-jar-with-dependencies.jar, |