summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik <henrik.hoiness@online.no>2018-07-05 11:11:57 +0200
committerHenrik <henrik.hoiness@online.no>2018-07-05 11:11:57 +0200
commit12ec5178f913f588d20ed2e9c87c12d3138cccdf (patch)
treecdeba735e046d5048654dda8446142bfd0caa8f5
parent4281a7eaf61612ab883e9006d3e56e0b38870055 (diff)
Created new module container-search-gui containing handler for gui for building queries. Resources-folder static is now named gui
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/Path.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/Path.java)2
-rw-r--r--container-search-gui/.gitignore31
-rw-r--r--container-search-gui/OWNERS1
-rw-r--r--container-search-gui/README1
-rw-r--r--container-search-gui/pom.xml49
-rw-r--r--container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandler.java)19
-rw-r--r--container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java80
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/css/agency.css (renamed from controller-server/src/main/resources/static/_includes/css/agency.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/css/bootstrap.min.css (renamed from controller-server/src/main/resources/static/_includes/css/bootstrap.min.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/css/vespa.css (renamed from controller-server/src/main/resources/static/_includes/css/vespa.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/index.html (renamed from controller-server/src/main/resources/static/_includes/index.html)12
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/search-api-reference.html (renamed from controller-server/src/main/resources/static/_includes/search-api-reference.html)0
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.css (renamed from controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.min.css (renamed from controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.min.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/FontAwesome.otf (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/FontAwesome.otf)bin109688 -> 109688 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.eot (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.eot)bin70807 -> 70807 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.svg (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.ttf (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.ttf)bin142072 -> 142072 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff)bin83588 -> 83588 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff2 (renamed from controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff2)bin66624 -> 66624 bytes
-rwxr-xr-xcontainer-search-gui/src/main/resources/gui/editarea/edit_area/edit_area.css (renamed from controller-server/src/main/resources/static/editarea/edit_area/edit_area.css)0
-rw-r--r--container-search-gui/src/main/resources/gui/editarea/edit_area/edit_area_full.js (renamed from controller-server/src/main/resources/static/editarea/edit_area/edit_area_full.js)0
-rwxr-xr-xcontainer-search-gui/src/main/resources/gui/editarea/edit_area/langs/en.js (renamed from controller-server/src/main/resources/static/editarea/edit_area/langs/en.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/autocompletion.js (renamed from controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/autocompletion.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/langs/en.js (renamed from controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/langs/en.js)0
-rwxr-xr-xcontainer-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js (renamed from controller-server/src/main/resources/static/editarea/edit_area/reg_syntax/yql.js)2
-rw-r--r--container-search-gui/src/main/resources/gui/icons/android-chrome-192x192.png (renamed from controller-server/src/main/resources/static/icons/android-chrome-192x192.png)bin10282 -> 10282 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/android-chrome-384x384.png (renamed from controller-server/src/main/resources/static/icons/android-chrome-384x384.png)bin25683 -> 25683 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/apple-touch-icon.png (renamed from controller-server/src/main/resources/static/icons/apple-touch-icon.png)bin7357 -> 7357 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/browserconfig.xml (renamed from controller-server/src/main/resources/static/icons/browserconfig.xml)0
-rw-r--r--container-search-gui/src/main/resources/gui/icons/favicon-16x16.png (renamed from controller-server/src/main/resources/static/icons/favicon-16x16.png)bin1168 -> 1168 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/favicon-32x32.png (renamed from controller-server/src/main/resources/static/icons/favicon-32x32.png)bin1672 -> 1672 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/favicon.ico (renamed from controller-server/src/main/resources/static/icons/favicon.ico)bin15086 -> 15086 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/manifest.json (renamed from controller-server/src/main/resources/static/icons/manifest.json)0
-rw-r--r--container-search-gui/src/main/resources/gui/icons/mstile-150x150.png (renamed from controller-server/src/main/resources/static/icons/mstile-150x150.png)bin6854 -> 6854 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/icons/safari-pinned-tab.svg (renamed from controller-server/src/main/resources/static/icons/safari-pinned-tab.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/img/Vespa-V2.png (renamed from controller-server/src/main/resources/static/img/Vespa-V2.png)bin29139 -> 29139 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/img/VespaIcon.png (renamed from controller-server/src/main/resources/static/img/VespaIcon.png)bin19776 -> 19776 bytes
-rw-r--r--container-search-gui/src/main/resources/gui/img/copy.svg (renamed from controller-server/src/main/resources/static/img/copy.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/img/down-arrow.svg (renamed from controller-server/src/main/resources/static/img/down-arrow.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/img/information.svg (renamed from controller-server/src/main/resources/static/img/information.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/img/paste.svg (renamed from controller-server/src/main/resources/static/img/paste.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/img/reload.svg (renamed from controller-server/src/main/resources/static/img/reload.svg)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/agency.js (renamed from controller-server/src/main/resources/static/js/agency.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/bootstrap.js (renamed from controller-server/src/main/resources/static/js/bootstrap.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/bootstrap.min.js (renamed from controller-server/src/main/resources/static/js/bootstrap.min.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/classie.js (renamed from controller-server/src/main/resources/static/js/classie.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/jquery-1.11.0.js (renamed from controller-server/src/main/resources/static/js/jquery-1.11.0.js)0
-rw-r--r--container-search-gui/src/main/resources/gui/js/jquery.easing.min.js (renamed from controller-server/src/main/resources/static/js/jquery.easing.min.js)0
-rwxr-xr-xcontainer-search-gui/src/main/sh/invoke73
-rw-r--r--container-search-gui/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandlerTest.java)16
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/statuspage/StatusPageProxyHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/PathTest.java2
-rw-r--r--pom.xml1
61 files changed, 274 insertions, 31 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/Path.java b/container-core/src/main/java/com/yahoo/restapi/Path.java
index c6781657b8a..65f0bab9a8d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/Path.java
+++ b/container-core/src/main/java/com/yahoo/restapi/Path.java
@@ -1,5 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.restapi;
+package com.yahoo.restapi;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/container-search-gui/.gitignore b/container-search-gui/.gitignore
new file mode 100644
index 00000000000..7f4ebc3a7c6
--- /dev/null
+++ b/container-search-gui/.gitignore
@@ -0,0 +1,31 @@
+.classpath
+.project
+.settings
+/.cache
+/.classpath
+/.emacs.desktop
+/.nbintdb
+/.project
+/.settings
+/.version
+/QueryAccessLog*
+/accessLog.log
+/build
+/bundles
+/libexec
+/nbproject
+/pom.xml.build
+/prelude.iml
+/prelude.ipr
+/prelude.iws
+/staging
+/target
+/temp
+/testLogFileG.txt
+/testLogs
+/test_yapache_access_log
+/testlogsG
+/testng.out.log
+/tmp
+null.log
+tmp
diff --git a/container-search-gui/OWNERS b/container-search-gui/OWNERS
new file mode 100644
index 00000000000..f889c2c48d0
--- /dev/null
+++ b/container-search-gui/OWNERS
@@ -0,0 +1 @@
+henrhoi \ No newline at end of file
diff --git a/container-search-gui/README b/container-search-gui/README
new file mode 100644
index 00000000000..af1a8818cbb
--- /dev/null
+++ b/container-search-gui/README
@@ -0,0 +1 @@
+Container layer providing gui for search functionality.
diff --git a/container-search-gui/pom.xml b/container-search-gui/pom.xml
new file mode 100644
index 00000000000..f4eb33a84fc
--- /dev/null
+++ b/container-search-gui/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>parent</artifactId>
+ <version>6-SNAPSHOT</version>
+ <relativePath>../parent/pom.xml</relativePath>
+ </parent>
+ <artifactId>container-search-gui</artifactId>
+ <packaging>jar</packaging>
+ <version>6-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>application</artifactId>
+ <version>6-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgs>
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-serial</arg>
+ <arg>-Xlint:-deprecation</arg>
+ <arg>-Xlint:-dep-ann</arg>
+ <arg>-Xlint:-cast</arg>
+ <arg>-Werror</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandler.java b/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java
index 1d53ee1ebe9..a7990f34577 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandler.java
+++ b/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java
@@ -1,22 +1,28 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.restapi.gui;
+package com.yahoo.search.query.gui;
import com.google.inject.Inject;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
-import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
+
+
+import com.yahoo.search.query.restapi.ErrorResponse;
import com.yahoo.yolean.Exceptions;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
-
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Level;
+/**
+ * Takes requests on Querybuilder
+ *
+ * @author Henrik Høiness
+ */
public class GUIHandler extends LoggingRequestHandler {
@@ -41,7 +47,7 @@ public class GUIHandler extends LoggingRequestHandler {
}
private HttpResponse handleGET(HttpRequest request) {
- com.yahoo.vespa.hosted.controller.restapi.Path path = new com.yahoo.vespa.hosted.controller.restapi.Path(request.getUri().getPath());
+ com.yahoo.restapi.Path path = new com.yahoo.restapi.Path(request.getUri().getPath());
if (path.matches("/querybuilder/")) {
return new FileResponse("_includes/index.html");
}
@@ -49,7 +55,7 @@ public class GUIHandler extends LoggingRequestHandler {
return ErrorResponse.notFoundError("Nothing at " + path);
}
String filepath = path.getRest();
- if (!isValidPath(GUIHandler.class.getClassLoader().getResource("static").getFile()+"/"+filepath)){
+ if (!isValidPath(GUIHandler.class.getClassLoader().getResource("gui").getFile()+"/"+filepath)){
return ErrorResponse.notFoundError("Nothing at " + path);
}
return new FileResponse(filepath);
@@ -66,7 +72,7 @@ public class GUIHandler extends LoggingRequestHandler {
public FileResponse(String relativePath) {
super(200);
- this.path = Paths.get(GUIHandler.class.getClassLoader().getResource("static").getFile(), relativePath);
+ this.path = Paths.get(GUIHandler.class.getClassLoader().getResource("gui").getFile(), relativePath);
}
@Override
@@ -77,7 +83,6 @@ public class GUIHandler extends LoggingRequestHandler {
@Override
public String getContentType() {
- System.out.println("HELE PATH: "+path.toString());
if (path.toString().endsWith(".css")) {
return "text/css";
} else if (path.toString().endsWith(".js")) {
diff --git a/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java b/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java
new file mode 100644
index 00000000000..2cce4785708
--- /dev/null
+++ b/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java
@@ -0,0 +1,80 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.query.restapi;
+
+import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.slime.Cursor;
+import com.yahoo.slime.JsonFormat;
+import com.yahoo.slime.Slime;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import static com.yahoo.jdisc.Response.Status.BAD_REQUEST;
+import static com.yahoo.jdisc.Response.Status.FORBIDDEN;
+import static com.yahoo.jdisc.Response.Status.INTERNAL_SERVER_ERROR;
+import static com.yahoo.jdisc.Response.Status.METHOD_NOT_ALLOWED;
+import static com.yahoo.jdisc.Response.Status.NOT_FOUND;
+import static com.yahoo.jdisc.Response.Status.UNAUTHORIZED;
+
+/**
+ * Error responses with JSON bodies
+ *
+ * @author bratseth
+ */
+public class ErrorResponse extends HttpResponse {
+
+ private final Slime slime = new Slime();
+ private final String message;
+
+ public enum ErrorCode {
+ FORBIDDEN,
+ UNAUTHORIZED,
+ NOT_FOUND,
+ BAD_REQUEST,
+ METHOD_NOT_ALLOWED,
+ INTERNAL_SERVER_ERROR
+ }
+
+ private ErrorResponse(int code, ErrorCode errorCode, String message) {
+ super(code);
+ this.message = message;
+ Cursor root = slime.setObject();
+ root.setString("error-code", errorCode.name());
+ root.setString("message", message);
+ }
+
+ public String message() { return message; }
+
+ public static ErrorResponse notFoundError(String message) {
+ return new ErrorResponse(NOT_FOUND, ErrorCode.NOT_FOUND, message);
+ }
+
+ public static ErrorResponse internalServerError(String message) {
+ return new ErrorResponse(INTERNAL_SERVER_ERROR, ErrorCode.INTERNAL_SERVER_ERROR, message);
+ }
+
+ public static ErrorResponse badRequest(String message) {
+ return new ErrorResponse(BAD_REQUEST, ErrorCode.BAD_REQUEST, message);
+ }
+
+ public static ErrorResponse methodNotAllowed(String message) {
+ return new ErrorResponse(METHOD_NOT_ALLOWED, ErrorCode.METHOD_NOT_ALLOWED, message);
+ }
+
+ public static ErrorResponse unauthorized(String message) {
+ return new ErrorResponse(UNAUTHORIZED, ErrorCode.UNAUTHORIZED, message);
+ }
+
+ public static ErrorResponse forbidden(String message) {
+ return new ErrorResponse(FORBIDDEN, ErrorCode.FORBIDDEN, message);
+ }
+
+ @Override
+ public void render(OutputStream stream) throws IOException {
+ new JsonFormat(true).encode(stream, slime);
+ }
+
+ @Override
+ public String getContentType() { return "application/json"; }
+
+}
diff --git a/controller-server/src/main/resources/static/_includes/css/agency.css b/container-search-gui/src/main/resources/gui/_includes/css/agency.css
index 8a243ee5853..8a243ee5853 100644
--- a/controller-server/src/main/resources/static/_includes/css/agency.css
+++ b/container-search-gui/src/main/resources/gui/_includes/css/agency.css
diff --git a/controller-server/src/main/resources/static/_includes/css/bootstrap.min.css b/container-search-gui/src/main/resources/gui/_includes/css/bootstrap.min.css
index 4185df72627..4185df72627 100644
--- a/controller-server/src/main/resources/static/_includes/css/bootstrap.min.css
+++ b/container-search-gui/src/main/resources/gui/_includes/css/bootstrap.min.css
diff --git a/controller-server/src/main/resources/static/_includes/css/vespa.css b/container-search-gui/src/main/resources/gui/_includes/css/vespa.css
index 42cf0d1bd9d..42cf0d1bd9d 100644
--- a/controller-server/src/main/resources/static/_includes/css/vespa.css
+++ b/container-search-gui/src/main/resources/gui/_includes/css/vespa.css
diff --git a/controller-server/src/main/resources/static/_includes/index.html b/container-search-gui/src/main/resources/gui/_includes/index.html
index f2c1678c3a2..80287979c53 100644
--- a/controller-server/src/main/resources/static/_includes/index.html
+++ b/container-search-gui/src/main/resources/gui/_includes/index.html
@@ -935,8 +935,10 @@
div.appendChild(object);
setTimeout(function(){
searchApiReference = object.contentDocument;
- div.removeChild(object);
- }, 120);
+ setTimeout(function(){
+ div.removeChild(object);
+ }, 20);
+ }, 150);
}
function changeInformation(no,key){
@@ -944,9 +946,9 @@
if (contains(hasChilds, key)){return "Add parameters under the parent ''" + getFullName(no,key) + "'"}
var refId = getFullName(no,key)
var ref = searchApiReference;
- var tag = document.createElement('div');
- tag.appendChild(ref.getElementById(refId).nextElementSibling);
- var tabletext = stripMyHTML(tag.innerHTML);
+ //var tag = document.createElement('div');
+ //tag.appendChild(ref.getElementById(refId).nextElementSibling);
+ var tabletext = stripMyHTML(ref.getElementById(refId).nextElementSibling.outerHTML);
return tabletext;
}
diff --git a/controller-server/src/main/resources/static/_includes/search-api-reference.html b/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html
index fc5b1983e55..fc5b1983e55 100644
--- a/controller-server/src/main/resources/static/_includes/search-api-reference.html
+++ b/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html
diff --git a/controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.css b/container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.css
index b2a5fe2f253..b2a5fe2f253 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.css
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.css
diff --git a/controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.min.css b/container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.min.css
index d0603cb4b01..d0603cb4b01 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/css/font-awesome.min.css
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/css/font-awesome.min.css
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/FontAwesome.otf b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/FontAwesome.otf
index 3ed7f8b48ad..3ed7f8b48ad 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/FontAwesome.otf
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/FontAwesome.otf
Binary files differ
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.eot b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.eot
index 9b6afaedc0f..9b6afaedc0f 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.eot
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.svg b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.svg
index d05688e9e28..d05688e9e28 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.svg
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.svg
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.ttf b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.ttf
index 26dea7951a7..26dea7951a7 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.ttf
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff
index dc35ce3c2cf..dc35ce3c2cf 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff2 b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff2
index 500e5172534..500e5172534 100644
--- a/controller-server/src/main/resources/static/css/font-awesome/fonts/fontawesome-webfont.woff2
+++ b/container-search-gui/src/main/resources/gui/css/font-awesome/fonts/fontawesome-webfont.woff2
Binary files differ
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/edit_area.css b/container-search-gui/src/main/resources/gui/editarea/edit_area/edit_area.css
index 7b1f42ea4e6..7b1f42ea4e6 100755
--- a/controller-server/src/main/resources/static/editarea/edit_area/edit_area.css
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/edit_area.css
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/edit_area_full.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/edit_area_full.js
index 286d00bbda8..286d00bbda8 100644
--- a/controller-server/src/main/resources/static/editarea/edit_area/edit_area_full.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/edit_area_full.js
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/langs/en.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/langs/en.js
index d2fa5619627..d2fa5619627 100755
--- a/controller-server/src/main/resources/static/editarea/edit_area/langs/en.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/langs/en.js
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/autocompletion.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/autocompletion.js
index 8900dee77c1..8900dee77c1 100644
--- a/controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/autocompletion.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/autocompletion.js
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/langs/en.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/langs/en.js
index e69de29bb2d..e69de29bb2d 100644
--- a/controller-server/src/main/resources/static/editarea/edit_area/plugins/autocompletion/langs/en.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/plugins/autocompletion/langs/en.js
diff --git a/controller-server/src/main/resources/static/editarea/edit_area/reg_syntax/yql.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js
index 0cb8eafbff8..532e5899b39 100755
--- a/controller-server/src/main/resources/static/editarea/edit_area/reg_syntax/yql.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js
@@ -18,7 +18,7 @@ editAreaLoader.load_syntax["yql"] = {
]
}
,'OPERATORS' :[
- 'AND','and','OR','or','BETWEEN','between','&&','&','|','^','/','<=>','=','>=','>','<<','>>','<=','<','-','%','!=','<>','!','||','+','~','*'
+ 'COUNT','AND','and','OR','or','BETWEEN','between','&&','&','|','^','/','<=>','=','>=','>','<<','>>','<=','<','-','%','!=','<>','!','||','+','~','*'
]
,'DELIMITERS' :[
'(', ')', '[', ']', '{', '}'
diff --git a/controller-server/src/main/resources/static/icons/android-chrome-192x192.png b/container-search-gui/src/main/resources/gui/icons/android-chrome-192x192.png
index af80e645b77..af80e645b77 100644
--- a/controller-server/src/main/resources/static/icons/android-chrome-192x192.png
+++ b/container-search-gui/src/main/resources/gui/icons/android-chrome-192x192.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/android-chrome-384x384.png b/container-search-gui/src/main/resources/gui/icons/android-chrome-384x384.png
index 7094e2e232d..7094e2e232d 100644
--- a/controller-server/src/main/resources/static/icons/android-chrome-384x384.png
+++ b/container-search-gui/src/main/resources/gui/icons/android-chrome-384x384.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/apple-touch-icon.png b/container-search-gui/src/main/resources/gui/icons/apple-touch-icon.png
index 4dfc9a85a2a..4dfc9a85a2a 100644
--- a/controller-server/src/main/resources/static/icons/apple-touch-icon.png
+++ b/container-search-gui/src/main/resources/gui/icons/apple-touch-icon.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/browserconfig.xml b/container-search-gui/src/main/resources/gui/icons/browserconfig.xml
index ea8cbcc89e3..ea8cbcc89e3 100644
--- a/controller-server/src/main/resources/static/icons/browserconfig.xml
+++ b/container-search-gui/src/main/resources/gui/icons/browserconfig.xml
diff --git a/controller-server/src/main/resources/static/icons/favicon-16x16.png b/container-search-gui/src/main/resources/gui/icons/favicon-16x16.png
index cce56472694..cce56472694 100644
--- a/controller-server/src/main/resources/static/icons/favicon-16x16.png
+++ b/container-search-gui/src/main/resources/gui/icons/favicon-16x16.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/favicon-32x32.png b/container-search-gui/src/main/resources/gui/icons/favicon-32x32.png
index 5f9f3e1b85b..5f9f3e1b85b 100644
--- a/controller-server/src/main/resources/static/icons/favicon-32x32.png
+++ b/container-search-gui/src/main/resources/gui/icons/favicon-32x32.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/favicon.ico b/container-search-gui/src/main/resources/gui/icons/favicon.ico
index 885fb77541d..885fb77541d 100644
--- a/controller-server/src/main/resources/static/icons/favicon.ico
+++ b/container-search-gui/src/main/resources/gui/icons/favicon.ico
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/manifest.json b/container-search-gui/src/main/resources/gui/icons/manifest.json
index f71a0007cf4..f71a0007cf4 100644
--- a/controller-server/src/main/resources/static/icons/manifest.json
+++ b/container-search-gui/src/main/resources/gui/icons/manifest.json
diff --git a/controller-server/src/main/resources/static/icons/mstile-150x150.png b/container-search-gui/src/main/resources/gui/icons/mstile-150x150.png
index 15ba5c1404e..15ba5c1404e 100644
--- a/controller-server/src/main/resources/static/icons/mstile-150x150.png
+++ b/container-search-gui/src/main/resources/gui/icons/mstile-150x150.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/icons/safari-pinned-tab.svg b/container-search-gui/src/main/resources/gui/icons/safari-pinned-tab.svg
index 7b775fcdbde..7b775fcdbde 100644
--- a/controller-server/src/main/resources/static/icons/safari-pinned-tab.svg
+++ b/container-search-gui/src/main/resources/gui/icons/safari-pinned-tab.svg
diff --git a/controller-server/src/main/resources/static/img/Vespa-V2.png b/container-search-gui/src/main/resources/gui/img/Vespa-V2.png
index ac87f8e94d0..ac87f8e94d0 100644
--- a/controller-server/src/main/resources/static/img/Vespa-V2.png
+++ b/container-search-gui/src/main/resources/gui/img/Vespa-V2.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/img/VespaIcon.png b/container-search-gui/src/main/resources/gui/img/VespaIcon.png
index 33063432c20..33063432c20 100644
--- a/controller-server/src/main/resources/static/img/VespaIcon.png
+++ b/container-search-gui/src/main/resources/gui/img/VespaIcon.png
Binary files differ
diff --git a/controller-server/src/main/resources/static/img/copy.svg b/container-search-gui/src/main/resources/gui/img/copy.svg
index eada154413a..eada154413a 100644
--- a/controller-server/src/main/resources/static/img/copy.svg
+++ b/container-search-gui/src/main/resources/gui/img/copy.svg
diff --git a/controller-server/src/main/resources/static/img/down-arrow.svg b/container-search-gui/src/main/resources/gui/img/down-arrow.svg
index d78d2f9c17f..d78d2f9c17f 100644
--- a/controller-server/src/main/resources/static/img/down-arrow.svg
+++ b/container-search-gui/src/main/resources/gui/img/down-arrow.svg
diff --git a/controller-server/src/main/resources/static/img/information.svg b/container-search-gui/src/main/resources/gui/img/information.svg
index da42cf2caf6..da42cf2caf6 100644
--- a/controller-server/src/main/resources/static/img/information.svg
+++ b/container-search-gui/src/main/resources/gui/img/information.svg
diff --git a/controller-server/src/main/resources/static/img/paste.svg b/container-search-gui/src/main/resources/gui/img/paste.svg
index b2edac680bf..b2edac680bf 100644
--- a/controller-server/src/main/resources/static/img/paste.svg
+++ b/container-search-gui/src/main/resources/gui/img/paste.svg
diff --git a/controller-server/src/main/resources/static/img/reload.svg b/container-search-gui/src/main/resources/gui/img/reload.svg
index c5381f9f232..c5381f9f232 100644
--- a/controller-server/src/main/resources/static/img/reload.svg
+++ b/container-search-gui/src/main/resources/gui/img/reload.svg
diff --git a/controller-server/src/main/resources/static/js/agency.js b/container-search-gui/src/main/resources/gui/js/agency.js
index 553f3eba651..553f3eba651 100644
--- a/controller-server/src/main/resources/static/js/agency.js
+++ b/container-search-gui/src/main/resources/gui/js/agency.js
diff --git a/controller-server/src/main/resources/static/js/bootstrap.js b/container-search-gui/src/main/resources/gui/js/bootstrap.js
index 53da1c77c08..53da1c77c08 100644
--- a/controller-server/src/main/resources/static/js/bootstrap.js
+++ b/container-search-gui/src/main/resources/gui/js/bootstrap.js
diff --git a/controller-server/src/main/resources/static/js/bootstrap.min.js b/container-search-gui/src/main/resources/gui/js/bootstrap.min.js
index 7c1561a8b96..7c1561a8b96 100644
--- a/controller-server/src/main/resources/static/js/bootstrap.min.js
+++ b/container-search-gui/src/main/resources/gui/js/bootstrap.min.js
diff --git a/controller-server/src/main/resources/static/js/classie.js b/container-search-gui/src/main/resources/gui/js/classie.js
index a96755488bf..a96755488bf 100644
--- a/controller-server/src/main/resources/static/js/classie.js
+++ b/container-search-gui/src/main/resources/gui/js/classie.js
diff --git a/controller-server/src/main/resources/static/js/jquery-1.11.0.js b/container-search-gui/src/main/resources/gui/js/jquery-1.11.0.js
index 046e93aa15e..046e93aa15e 100644
--- a/controller-server/src/main/resources/static/js/jquery-1.11.0.js
+++ b/container-search-gui/src/main/resources/gui/js/jquery-1.11.0.js
diff --git a/controller-server/src/main/resources/static/js/jquery.easing.min.js b/container-search-gui/src/main/resources/gui/js/jquery.easing.min.js
index 4a54fcd4300..4a54fcd4300 100644
--- a/controller-server/src/main/resources/static/js/jquery.easing.min.js
+++ b/container-search-gui/src/main/resources/gui/js/jquery.easing.min.js
diff --git a/container-search-gui/src/main/sh/invoke b/container-search-gui/src/main/sh/invoke
new file mode 100755
index 00000000000..0e5c281e72b
--- /dev/null
+++ b/container-search-gui/src/main/sh/invoke
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findhost () {
+ if [ "${VESPA_HOSTNAME}" = "" ]; then
+ VESPA_HOSTNAME=$(vespa-detect-hostname || hostname -f || hostname || echo "localhost") || exit 1
+ fi
+ validate="${VESPA_HOME}/bin/vespa-validate-hostname"
+ if [ -f "$validate" ]; then
+ "$validate" "${VESPA_HOSTNAME}" || exit 1
+ fi
+ export VESPA_HOSTNAME
+}
+
+findroot
+findhost
+
+# END environment bootstrap section
+
+java -cp $VESPA_HOME/lib/jars/jrt.jar:$VESPA_HOME/lib/jars/vespajlib.jar com.yahoo.jrt.tool.RpcInvoker $@
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandlerTest.java b/container-search-gui/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java
index 64f45fb4268..2fc1bda5742 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/gui/GUIHandlerTest.java
+++ b/container-search-gui/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java
@@ -1,17 +1,17 @@
-package com.yahoo.vespa.hosted.controller.restapi.gui;
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.query.gui;
import com.yahoo.application.Networking;
import com.yahoo.application.container.JDisc;
import com.yahoo.application.container.handler.Request;
import com.yahoo.application.container.handler.Response;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class GUIHandlerTest {
@@ -25,12 +25,12 @@ public class GUIHandlerTest {
@After
public void stopContainer() {
-
+ /*
try {
Thread.sleep(120_000);
} catch (InterruptedException e) {
e.printStackTrace();
- }
+ }*/
container.close();
}
@@ -59,8 +59,8 @@ public class GUIHandlerTest {
private void assertResponse(Request.Method method, String path, String expectedStartString, String expectedContentType, int expectedStatusCode) throws IOException {
Response response = container.handleRequest(new Request("http://localhost:8080" + path, new byte[0], method));
- assertEquals("Status code", expectedStatusCode, response.getStatus());
- assertEquals(expectedContentType, response.getHeaders().getFirst("Content-Type"));
+ Assert.assertEquals("Status code", expectedStatusCode, response.getStatus());
+ Assert.assertEquals(expectedContentType, response.getHeaders().getFirst("Content-Type"));
if(expectedStartString != null){
assertTrue(response.getBodyAsString().startsWith(expectedStartString));
}
@@ -68,7 +68,7 @@ public class GUIHandlerTest {
private String servicesXml() {
return "<jdisc version='1.0'>\n" +
- " <handler id='com.yahoo.vespa.hosted.controller.restapi.gui.GUIHandler'>\n" +
+ " <handler id='com.yahoo.search.query.gui.GUIHandler'>\n" +
" <binding>http://*/querybuilder/*</binding>\n" +
" </handler>\n" +
" <http>\n" +
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index 4b09e78ede2..53720b04225 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -65,7 +65,7 @@ import com.yahoo.vespa.hosted.controller.application.JobStatus;
import com.yahoo.vespa.hosted.controller.application.SourceRevision;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
import com.yahoo.vespa.hosted.controller.restapi.MessageResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.restapi.ResourceResponse;
import com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse;
import com.yahoo.vespa.hosted.controller.restapi.StringResponse;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
index 6fefb7099f1..19ec6316841 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
@@ -12,7 +12,7 @@ import com.yahoo.vespa.hosted.controller.maintenance.ControllerMaintenance;
import com.yahoo.vespa.hosted.controller.maintenance.Upgrader;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
import com.yahoo.vespa.hosted.controller.restapi.MessageResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.restapi.ResourceResponse;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence;
import com.yahoo.yolean.Exceptions;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java
index 2f2e72120ea..8a5013a9c16 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java
@@ -19,7 +19,7 @@ import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
import com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse;
import com.yahoo.vespa.hosted.controller.restapi.Uri;
import com.yahoo.vespa.hosted.controller.restapi.application.EmptyJsonResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.yolean.Exceptions;
import java.util.Optional;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
index a05d30a0232..803138e8b3b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
@@ -18,7 +18,7 @@ import com.yahoo.vespa.hosted.controller.TenantController;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.ApplicationAction;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.AthenzClientFactory;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.ZmsException;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.UserTenant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
index 26d0b1868ae..74caa4dcb47 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
@@ -12,7 +12,7 @@ import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import com.yahoo.yolean.Exceptions;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/statuspage/StatusPageProxyHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/statuspage/StatusPageProxyHandler.java
index e652e293c26..388fe0ef69d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/statuspage/StatusPageProxyHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/statuspage/StatusPageProxyHandler.java
@@ -7,7 +7,7 @@ import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
import com.yahoo.container.jdisc.secretstore.SecretStore;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.statuspage.config.StatuspageConfig;
import com.yahoo.yolean.Exceptions;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
index 28c17770f6a..11c1e5ec6df 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
@@ -11,7 +11,7 @@ import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse;
import com.yahoo.yolean.Exceptions;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
index 6eec5c4965d..3d86d5da262 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
@@ -13,7 +13,7 @@ import com.yahoo.vespa.hosted.controller.proxy.ConfigServerRestExecutor;
import com.yahoo.vespa.hosted.controller.proxy.ProxyException;
import com.yahoo.vespa.hosted.controller.proxy.ProxyRequest;
import com.yahoo.vespa.hosted.controller.restapi.ErrorResponse;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import com.yahoo.vespa.hosted.controller.restapi.SlimeJsonResponse;
import com.yahoo.yolean.Exceptions;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/PathTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/PathTest.java
index 7b1d8d17a5c..2edafa96b2c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/PathTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/PathTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
-import com.yahoo.vespa.hosted.controller.restapi.Path;
+import com.yahoo.restapi.Path;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
diff --git a/pom.xml b/pom.xml
index 1f766b2878d..a855c521b2b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,7 @@
<module>container-messagebus</module>
<module>container-search-and-docproc</module>
<module>container-search</module>
+ <module>container-search-gui</module>
<module>container-test</module>
<module>container-test-jars</module>
<module>controller-api</module>