From 2f8641e9a6bf131324c0610487c8c21cf80f75ab Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sat, 16 May 2015 22:03:01 +0200 Subject: [PATCH 01/11] Bump GWT version to 2.8.0-rc2 There are number of important changes in this GWT release: 1. HtmlUnit, Jetty and their dependencies upgrade: [1],[2],[3] 2. Unbundled most dependencies from GWT Maven artifacts With 1. we can remove patched WebServer fork from GWT project, that was needed to adapt to Jetty 9 version. With 2. we don't need to strip Jetty classes from gwt-dev artifact any more to avoid classpath collisions (we wouldn't get classpath collisions to start with because of 1.). However, because of 2. we need to add quite some dependencies that we got for granted in gwt-dev in early GWT releases on our own: * Apache Ant, Apache 2.0 License * Apache Tapestry, Apache 2.0 License * CERN colt, CERN own or LGPL License * Google JS Interop annotations, Apache 2.0 License * W3C CSS sac library, License W3C IPR SOFTWARE NOTICE According to the release notes: [4]. Double/Boolean are not boxed anymore That leads to the NPE when such method: void showLineEndings(boolean s); is used with null value: p.showLineEndings(in.showLineEndings); where in.showLineEndings is null. Adapt the code to accept Boolean instead. gwtjsonrpc is updated to version 1.10 which is built for GWT 2.8.0-rc2. TEST PLAN: * Verified that daemon works * Verified that SDM works [1] https://github.com/gwtproject/gwt/issues/8712 [2] https://sourceforge.net/p/htmlunit/bugs/1656/ [3] https://gwt-review.googlesource.com/7857 [4] http://www.gwtproject.org/release-notes.html#Release_Notes_2_8_0_RC1 Change-Id: I3f009f3ef0cbb8bafac236fb9a81c951697a5903 --- WORKSPACE | 44 +- .../google/gwt/dev/codeserver/WebServer.java | 541 ------------------ .../client/account/DiffPreferences.java | 36 +- .../google/gerrit/client/diff/DiffScreen.java | 2 +- .../gerrit/client/diff/PreferencesBox.java | 2 +- .../archetype-resources/lib/gwt/BUCK | 15 - lib/BUCK | 6 +- lib/gwt/BUCK | 52 +- tools/eclipse/BUCK | 6 + tools/gwt-constants.defs | 6 + 10 files changed, 119 insertions(+), 591 deletions(-) delete mode 100644 gerrit-gwtdebug/src/main/java/com/google/gwt/dev/codeserver/WebServer.java diff --git a/WORKSPACE b/WORKSPACE index d4c173389b..d3e707ef2d 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -62,18 +62,18 @@ maven_jar( sha1 = '5d9e2e895e3111622720157d0aa540066d5fce3a', ) -GWT_VERS = '2.7.0' +GWT_VERS = '2.8.0-rc2' maven_jar( name = 'user', artifact = 'com.google.gwt:gwt-user:' + GWT_VERS, - sha1 = 'bdc7af42581745d3d79c2efe0b514f432b998a5b', + sha1 = 'ad99b09a626c20cce2bdacf3726a51b2cd16b99e', ) maven_jar( name = 'dev', artifact = 'com.google.gwt:gwt-dev:' + GWT_VERS, - sha1 = 'c2c3dd5baf648a0bb199047a818be5e560f48982', + sha1 = 'd70a6feb4661c07488090cb81303415e9110b15a', ) maven_jar( @@ -82,6 +82,36 @@ maven_jar( sha1 = 'b6bd7f9d78f6fdaa3c37dae18a4bd298915f328e', ) +maven_jar( + name = 'jsinterop_annotations', + artifact = 'com.google.jsinterop:jsinterop-annotations:1.0.0', + sha1 = '23c3a3c060ffe4817e67673cc8294e154b0a4a95', +) + +maven_jar( + name = 'ant', + artifact = 'ant:ant:1.6.5', + sha1 = '7d18faf23df1a5c3a43613952e0e8a182664564b', +) + +maven_jar( + name = 'colt', + artifact = 'colt:colt:1.2.0', + sha1 = '0abc984f3adc760684d49e0f11ddf167ba516d4f', +) + +maven_jar( + name = 'tapestry', + artifact = 'tapestry:tapestry:4.0.2', + sha1 = 'e855a807425d522e958cbce8697f21e9d679b1f7', +) + +maven_jar( + name = 'w3c_css_sac', + artifact = 'org.w3c.css:sac:1.3', + sha1 = 'cdb2dcb4e22b83d6b32b93095f644c3462739e82', +) + JGIT_VERS = '4.4.1.201607150455-r.105-g81ba2be' maven_jar( @@ -129,14 +159,14 @@ maven_jar( maven_jar( name = 'gwtjsonrpc', - artifact = 'com.google.gerrit:gwtjsonrpc:1.8', - sha1 = 'c264bf2f543cffddceada5cdf031eea06dbd44a0', + artifact = 'com.google.gerrit:gwtjsonrpc:1.10', + sha1 = '25adea6ef102b761993688e80dfc7203e0f5edf0', ) http_jar( name = 'gwtjsonrpc_src', - sha256 = '2ef86396861a7c555c404b5a20a72dc6599b541ce2d1370a62f6470eefe7142d', - url = 'http://repo.maven.apache.org/maven2/com/google/gerrit/gwtjsonrpc/1.8/gwtjsonrpc-1.8-sources.jar', + sha256 = '009c4c7574eaddf49d2c72dd015cfbd5b495fbeea4c3958c2ec548af2c186733', + url = 'http://repo.maven.apache.org/maven2/com/google/gerrit/gwtjsonrpc/1.10/gwtjsonrpc-1.10-sources.jar', ) maven_jar( diff --git a/gerrit-gwtdebug/src/main/java/com/google/gwt/dev/codeserver/WebServer.java b/gerrit-gwtdebug/src/main/java/com/google/gwt/dev/codeserver/WebServer.java deleted file mode 100644 index 728f276a50..0000000000 --- a/gerrit-gwtdebug/src/main/java/com/google/gwt/dev/codeserver/WebServer.java +++ /dev/null @@ -1,541 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.gwt.dev.codeserver; - -import com.google.gwt.core.ext.TreeLogger; -import com.google.gwt.core.ext.TreeLogger.Type; -import com.google.gwt.core.ext.UnableToCompleteException; -import com.google.gwt.dev.codeserver.CompileDir.PolicyFile; -import com.google.gwt.dev.codeserver.Pages.ErrorPage; -import com.google.gwt.dev.json.JsonObject; - -import org.eclipse.jetty.http.MimeTypes; -import org.eclipse.jetty.server.HttpConnection; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.servlets.GzipFilter; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.util.Date; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.servlet.DispatcherType; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * The web server for Super Dev Mode, also known as the code server. The URLs handled include: - * - * - *

EXPERIMENTAL. There is no authentication, encryption, or XSS protection, so this server is - * only safe to run on localhost.

- */ -// This file was copied from GWT project and adjusted to run against -// Jetty 9.2.2. The original diff can be found here: -// https://gwt-review.googlesource.com/#/c/7857/13/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java -public class WebServer { - - private static final Pattern SAFE_DIRECTORY = - Pattern.compile("([a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9_-]+"); // no extension needed - - private static final Pattern SAFE_FILENAME = - Pattern.compile("([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9_-]+"); // an extension is required - - private static final Pattern SAFE_MODULE_PATH = - Pattern.compile("/(" + SAFE_DIRECTORY + ")/$"); - - static final Pattern SAFE_DIRECTORY_PATH = - Pattern.compile("/(" + SAFE_DIRECTORY + "/)+$"); - - /* visible for testing */ - static final Pattern SAFE_FILE_PATH = - Pattern.compile("/(" + SAFE_DIRECTORY + "/)+" + SAFE_FILENAME + "$"); - - static final Pattern STRONG_NAME = Pattern.compile("[\\dA-F]{32}"); - - private static final Pattern CACHE_JS_FILE = Pattern.compile("/(" + STRONG_NAME + ").cache.js$"); - - private static final MimeTypes MIME_TYPES = new MimeTypes(); - - private static final String TIME_IN_THE_PAST = "Mon, 01 Jan 1990 00:00:00 GMT"; - - private final SourceHandler handler; - private final JsonExporter jsonExporter; - private final OutboxTable outboxes; - private final JobRunner runner; - private final JobEventTable eventTable; - - private final String bindAddress; - private final int port; - - private Server server; - - WebServer(SourceHandler handler, JsonExporter jsonExporter, OutboxTable outboxes, - JobRunner runner, JobEventTable eventTable, String bindAddress, int port) { - this.handler = handler; - this.jsonExporter = jsonExporter; - this.outboxes = outboxes; - this.runner = runner; - this.eventTable = eventTable; - this.bindAddress = bindAddress; - this.port = port; - } - - @SuppressWarnings("serial") - void start(final TreeLogger logger) throws UnableToCompleteException { - - Server newServer = new Server(); - ServerConnector connector = new ServerConnector(newServer); - connector.setHost(bindAddress); - connector.setPort(port); - connector.setReuseAddress(false); - connector.setSoLingerTime(0); - - newServer.addConnector(connector); - - ServletContextHandler newHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); - newHandler.setContextPath("/"); - newHandler.addServlet(new ServletHolder(new HttpServlet() { - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - handleRequest(request.getPathInfo(), request, response, logger); - } - }), "/*"); - newHandler.addFilter(GzipFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); - newServer.setHandler(newHandler); - try { - newServer.start(); - } catch (Exception e) { - logger.log(TreeLogger.ERROR, "cannot start web server", e); - throw new UnableToCompleteException(); - } - this.server = newServer; - } - - public int getPort() { - return port; - } - - public void stop() throws Exception { - server.stop(); - server = null; - } - - /** - * Returns the location of the compiler output. (Changes after every recompile.) - * @param outputModuleName the module name that the GWT compiler used in its output. - */ - public File getCurrentWarDir(String outputModuleName) { - return outboxes.findByOutputModuleName(outputModuleName).getWarDir(); - } - - private void handleRequest(String target, HttpServletRequest request, - HttpServletResponse response, TreeLogger parentLogger) - throws IOException { - - if (request.getMethod().equalsIgnoreCase("get")) { - - TreeLogger logger = parentLogger.branch(Type.TRACE, "GET " + target); - - Response page = doGet(target, request, logger); - if (page == null) { - logger.log(Type.WARN, "not handled: " + target); - return; - } - - setHandled(request); - if (!target.endsWith(".cache.js")) { - // Make sure IE9 doesn't cache any pages. - // (Nearly all pages may change on server restart.) - response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate"); - response.setHeader("Pragma", "no-cache"); - response.setHeader("Expires", TIME_IN_THE_PAST); - response.setDateHeader("Date", new Date().getTime()); - } - page.send(request, response, logger); - } - } - - /** - * Returns the page that should be sent in response to a GET request, or null for no response. - */ - private Response doGet(String target, HttpServletRequest request, TreeLogger logger) - throws IOException { - - if (target.equals("/")) { - JsonObject json = jsonExporter.exportFrontPageVars(); - return Pages.newHtmlPage("config", json, "frontpage.html"); - } - - if (target.equals("/dev_mode_on.js")) { - JsonObject json = jsonExporter.exportDevModeOnVars(); - return Responses.newJavascriptResponse("__gwt_codeserver_config", json, - "dev_mode_on.js"); - } - - // Recompile on request from the bookmarklet. - // This is a GET because a bookmarklet can call it from a different origin (JSONP). - if (target.startsWith("/recompile/")) { - String moduleName = target.substring("/recompile/".length()); - Outbox box = outboxes.findByOutputModuleName(moduleName); - if (box == null) { - return new ErrorPage("No such module: " + moduleName); - } - - // We are passing properties from an unauthenticated GET request directly to the compiler. - // This should be safe, but only because these are binding properties. For each binding - // property, you can only choose from a set of predefined values. So all an attacker can do is - // cause a spurious recompile, resulting in an unexpected permutation being loaded later. - // - // It would be unsafe to allow a configuration property to be changed. - Job job = box.makeJob(getBindingProperties(request), logger); - runner.submit(job); - Job.Result result = job.waitForResult(); - JsonObject json = jsonExporter.exportRecompileResponse(result); - return Responses.newJsonResponse(json); - } - - if (target.startsWith("/log/")) { - String moduleName = target.substring("/log/".length()); - Outbox box = outboxes.findByOutputModuleName(moduleName); - if (box == null) { - return new ErrorPage("No such module: " + moduleName); - } else if (box.containsStubCompile()) { - return new ErrorPage("This module hasn't been compiled yet."); - } else { - return makeLogPage(box); - } - } - - if (target.equals("/favicon.ico")) { - InputStream faviconStream = getClass().getResourceAsStream("favicon.ico"); - if (faviconStream == null) { - return new ErrorPage("icon not found"); - } - // IE8 will not load the favicon in an img tag with the default MIME type, - // so use "image/x-icon" instead. - return Responses.newBinaryStreamResponse("image/x-icon", faviconStream); - } - - if (target.equals("/policies/")) { - return makePolicyIndexPage(); - } - - if (target.equals("/progress")) { - // TODO: return a list of progress objects here, one for each job. - JobEvent event = eventTable.getCompilingJobEvent(); - - JsonObject json; - if (event == null) { - json = new JsonObject(); - json.put("status", "idle"); - } else { - json = jsonExporter.exportProgressResponse(event); - } - return Responses.newJsonResponse(json); - } - - Matcher matcher = SAFE_MODULE_PATH.matcher(target); - if (matcher.matches()) { - return makeModulePage(matcher.group(1)); - } - - matcher = SAFE_DIRECTORY_PATH.matcher(target); - if (matcher.matches() && SourceHandler.isSourceMapRequest(target)) { - return handler.handle(target, request, logger); - } - - matcher = SAFE_FILE_PATH.matcher(target); - if (matcher.matches()) { - if (SourceHandler.isSourceMapRequest(target)) { - return handler.handle(target, request, logger); - } - if (target.startsWith("/policies/")) { - return makePolicyFilePage(target); - } - return makeCompilerOutputPage(target); - } - - logger.log(TreeLogger.WARN, "ignored get request: " + target); - return null; // not handled - } - - /** - * Returns a file that the compiler wrote to its war directory. - */ - private Response makeCompilerOutputPage(String target) { - - int secondSlash = target.indexOf('/', 1); - String moduleName = target.substring(1, secondSlash); - Outbox box = outboxes.findByOutputModuleName(moduleName); - if (box == null) { - return new ErrorPage("No such module: " + moduleName); - } - - final String contentEncoding; - File file = box.getOutputFile(target); - if (!file.isFile()) { - // perhaps it's compressed - file = box.getOutputFile(target + ".gz"); - if (!file.isFile()) { - return new ErrorPage("not found: " + file.toString()); - } - contentEncoding = "gzip"; - } else { - contentEncoding = null; - } - - final String sourceMapUrl; - Matcher match = CACHE_JS_FILE.matcher(target); - if (match.matches()) { - String strongName = match.group(1); - String template = SourceHandler.sourceMapLocationTemplate(moduleName); - sourceMapUrl = template.replace("__HASH__", strongName); - } else { - sourceMapUrl = null; - } - - String mimeType = guessMimeType(target); - final Response barePage = Responses.newFileResponse(mimeType, file); - - // Wrap the response to send the extra headers. - return new Response() { - @Override - public void send(HttpServletRequest request, HttpServletResponse response, TreeLogger logger) - throws IOException { - // TODO: why do we need this? Looks like Ray added it a long time ago. - response.setHeader("Access-Control-Allow-Origin", "*"); - - if (sourceMapUrl != null) { - response.setHeader("X-SourceMap", sourceMapUrl); - response.setHeader("SourceMap", sourceMapUrl); - } - - if (contentEncoding != null) { - if (!request.getHeader("Accept-Encoding").contains("gzip")) { - response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); - logger.log(TreeLogger.WARN, "client doesn't accept gzip; bailing"); - return; - } - response.setHeader("Content-Encoding", "gzip"); - } - - barePage.send(request, response, logger); - } - }; - } - - private Response makeModulePage(String moduleName) { - Outbox box = outboxes.findByOutputModuleName(moduleName); - if (box == null) { - return new ErrorPage("No such module: " + moduleName); - } - - JsonObject json = jsonExporter.exportModulePageVars(box); - return Pages.newHtmlPage("config", json, "modulepage.html"); - } - - private Response makePolicyIndexPage() { - - return new Response() { - - @Override - public void send(HttpServletRequest request, HttpServletResponse response, TreeLogger logger) - throws IOException { - response.setContentType("text/html"); - - HtmlWriter out = new HtmlWriter(response.getWriter()); - - out.startTag("html").nl(); - out.startTag("head").nl(); - out.startTag("title").text("Policy Files").endTag("title").nl(); - out.endTag("head"); - out.startTag("body"); - - out.startTag("h1").text("Policy Files").endTag("h1").nl(); - - for (Outbox box : outboxes.getOutboxes()) { - List policies = box.readRpcPolicyManifest(); - if (!policies.isEmpty()) { - out.startTag("h2").text(box.getOutputModuleName()).endTag("h2").nl(); - - out.startTag("table").nl(); - for (PolicyFile policy : policies) { - - out.startTag("tr"); - - out.startTag("td"); - - out.startTag("a", "href=", policy.getServiceSourceUrl()); - out.text(policy.getServiceName()); - out.endTag("a"); - - out.endTag("td"); - - out.startTag("td"); - - out.startTag("a", "href=", policy.getUrl()); - out.text(policy.getName()); - out.endTag("a"); - - out.endTag("td"); - - out.endTag("tr").nl(); - } - out.endTag("table").nl(); - } - } - - out.endTag("body").nl(); - out.endTag("html").nl(); - } - }; - } - - private Response makePolicyFilePage(String target) { - - int secondSlash = target.indexOf('/', 1); - if (secondSlash < 1) { - return new ErrorPage("invalid URL for policy file: " + target); - } - - String rest = target.substring(secondSlash + 1); - if (rest.contains("/") || !rest.endsWith(".gwt.rpc")) { - return new ErrorPage("invalid name for policy file: " + rest); - } - - File fileToSend = outboxes.findPolicyFile(rest); - if (fileToSend == null) { - return new ErrorPage("Policy file not found: " + rest); - } - - return Responses.newFileResponse("text/plain", fileToSend); - } - - /** - * Sends the log file as html with errors highlighted in red. - */ - private Response makeLogPage(final Outbox box) { - final File file = box.getCompileLog(); - if (!file.isFile()) { - return new ErrorPage("log file not found"); - } - - return new Response() { - - @Override - public void send(HttpServletRequest request, HttpServletResponse response, TreeLogger logger) - throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(file)); - - response.setStatus(HttpServletResponse.SC_OK); - response.setContentType("text/html"); - response.setHeader("Content-Style-Type", "text/css"); - - HtmlWriter out = new HtmlWriter(response.getWriter()); - out.startTag("html").nl(); - out.startTag("head").nl(); - out.startTag("title").text(box.getOutputModuleName() + " compile log").endTag("title").nl(); - out.startTag("style").nl(); - out.text(".error { color: red; font-weight: bold; }").nl(); - out.endTag("style").nl(); - out.endTag("head").nl(); - out.startTag("body").nl(); - sendLogAsHtml(reader, out); - out.endTag("body").nl(); - out.endTag("html").nl(); - } - }; - } - - private static final Pattern ERROR_PATTERN = Pattern.compile("\\[ERROR\\]"); - - /** - * Copies in to out line by line, escaping each line for html characters and highlighting - * error lines. Closes in when done. - */ - private static void sendLogAsHtml(BufferedReader in, HtmlWriter out) throws IOException { - try { - out.startTag("pre").nl(); - String line = in.readLine(); - while (line != null) { - Matcher m = ERROR_PATTERN.matcher(line); - boolean error = m.find(); - if (error) { - out.startTag("span", "class=", "error"); - } - out.text(line); - if (error) { - out.endTag("span"); - } - out.nl(); // the readLine doesn't include the newline. - line = in.readLine(); - } - out.endTag("pre").nl(); - } finally { - in.close(); - } - } - - /* visible for testing */ - static String guessMimeType(String filename) { - String mimeType = MIME_TYPES.getMimeByExtension(filename); - return mimeType != null ? mimeType : ""; - } - - /** - * Returns the binding properties from the web page where dev mode is being used. (As passed in - * by dev_mode_on.js in a JSONP request to "/recompile".) - */ - private Map getBindingProperties(HttpServletRequest request) { - Map result = new HashMap<>(); - for (Object key : request.getParameterMap().keySet()) { - String propName = (String) key; - if (!propName.equals("_callback")) { - result.put(propName, request.getParameter(propName)); - } - } - return result; - } - - private static void setHandled(HttpServletRequest request) { - Request baseRequest = (request instanceof Request) ? (Request) request : - HttpConnection.getCurrentConnection().getHttpChannel().getRequest(); - baseRequest.setHandled(true); - } -} diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/DiffPreferences.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/DiffPreferences.java index 7c707b2d3e..423d05f526 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/DiffPreferences.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/DiffPreferences.java @@ -129,24 +129,24 @@ public class DiffPreferences extends JavaScriptObject { public final native void lineLength(int c) /*-{ this.line_length = c }-*/; public final native void context(int c) /*-{ this.context = c }-*/; public final native void cursorBlinkRate(int r) /*-{ this.cursor_blink_rate = r }-*/; - public final native void intralineDifference(boolean i) /*-{ this.intraline_difference = i }-*/; - public final native void showLineEndings(boolean s) /*-{ this.show_line_endings = s }-*/; - public final native void showTabs(boolean s) /*-{ this.show_tabs = s }-*/; - public final native void showWhitespaceErrors(boolean s) /*-{ this.show_whitespace_errors = s }-*/; - public final native void syntaxHighlighting(boolean s) /*-{ this.syntax_highlighting = s }-*/; - public final native void hideTopMenu(boolean s) /*-{ this.hide_top_menu = s }-*/; - public final native void autoHideDiffTableHeader(boolean s) /*-{ this.auto_hide_diff_table_header = s }-*/; - public final native void hideLineNumbers(boolean s) /*-{ this.hide_line_numbers = s }-*/; - public final native void expandAllComments(boolean e) /*-{ this.expand_all_comments = e }-*/; - public final native void manualReview(boolean r) /*-{ this.manual_review = r }-*/; - public final native void renderEntireFile(boolean r) /*-{ this.render_entire_file = r }-*/; - public final native void retainHeader(boolean r) /*-{ this.retain_header = r }-*/; - public final native void hideEmptyPane(boolean s) /*-{ this.hide_empty_pane = s }-*/; - public final native void skipUnchanged(boolean s) /*-{ this.skip_unchanged = s }-*/; - public final native void skipUncommented(boolean s) /*-{ this.skip_uncommented = s }-*/; - public final native void skipDeleted(boolean s) /*-{ this.skip_deleted = s }-*/; - public final native void matchBrackets(boolean m) /*-{ this.match_brackets = m }-*/; - public final native void lineWrapping(boolean w) /*-{ this.line_wrapping = w }-*/; + public final native void intralineDifference(Boolean i) /*-{ this.intraline_difference = i }-*/; + public final native void showLineEndings(Boolean s) /*-{ this.show_line_endings = s }-*/; + public final native void showTabs(Boolean s) /*-{ this.show_tabs = s }-*/; + public final native void showWhitespaceErrors(Boolean s) /*-{ this.show_whitespace_errors = s }-*/; + public final native void syntaxHighlighting(Boolean s) /*-{ this.syntax_highlighting = s }-*/; + public final native void hideTopMenu(Boolean s) /*-{ this.hide_top_menu = s }-*/; + public final native void autoHideDiffTableHeader(Boolean s) /*-{ this.auto_hide_diff_table_header = s }-*/; + public final native void hideLineNumbers(Boolean s) /*-{ this.hide_line_numbers = s }-*/; + public final native void expandAllComments(Boolean e) /*-{ this.expand_all_comments = e }-*/; + public final native void manualReview(Boolean r) /*-{ this.manual_review = r }-*/; + public final native void renderEntireFile(Boolean r) /*-{ this.render_entire_file = r }-*/; + public final native void retainHeader(Boolean r) /*-{ this.retain_header = r }-*/; + public final native void hideEmptyPane(Boolean s) /*-{ this.hide_empty_pane = s }-*/; + public final native void skipUnchanged(Boolean s) /*-{ this.skip_unchanged = s }-*/; + public final native void skipUncommented(Boolean s) /*-{ this.skip_uncommented = s }-*/; + public final native void skipDeleted(Boolean s) /*-{ this.skip_deleted = s }-*/; + public final native void matchBrackets(Boolean m) /*-{ this.match_brackets = m }-*/; + public final native void lineWrapping(Boolean w) /*-{ this.line_wrapping = w }-*/; public final native boolean intralineDifference() /*-{ return this.intraline_difference || false }-*/; public final native boolean showLineEndings() /*-{ return this.show_line_endings || false }-*/; public final native boolean showTabs() /*-{ return this.show_tabs || false }-*/; diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffScreen.java index 8935e3658b..de19b35147 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffScreen.java @@ -639,7 +639,7 @@ abstract class DiffScreen extends Screen { } private void toggleShowIntraline() { - prefs.intralineDifference(!prefs.intralineDifference()); + prefs.intralineDifference(!Boolean.valueOf(prefs.intralineDifference())); setShowIntraline(prefs.intralineDifference()); prefsAction.update(); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java index 78d01dbae0..ef1d4bd135 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java @@ -260,7 +260,7 @@ public class PreferencesBox extends Composite { @UiHandler("intralineDifference") void onIntralineDifference(ValueChangeEvent e) { - prefs.intralineDifference(e.getValue()); + prefs.intralineDifference(Boolean.valueOf(e.getValue())); if (view != null) { view.setShowIntraline(prefs.intralineDifference()); } diff --git a/gerrit-plugin-gwt-archetype/src/main/resources/archetype-resources/lib/gwt/BUCK b/gerrit-plugin-gwt-archetype/src/main/resources/archetype-resources/lib/gwt/BUCK index 511a8ec303..21bc45c7c3 100644 --- a/gerrit-plugin-gwt-archetype/src/main/resources/archetype-resources/lib/gwt/BUCK +++ b/gerrit-plugin-gwt-archetype/src/main/resources/archetype-resources/lib/gwt/BUCK @@ -13,20 +13,5 @@ maven_jar( name = 'dev', id = 'com.google.gwt:gwt-dev:' + VERSION, license = 'Apache2.0', - deps = [ - ':javax-validation', - ':javax-validation_src', - ], attach_source = False, - exclude = ['org/eclipse/jetty/*'], ) - -maven_jar( - name = 'javax-validation', - id = 'javax.validation:validation-api:1.0.0.GA', - bin_sha1 = 'b6bd7f9d78f6fdaa3c37dae18a4bd298915f328e', - src_sha1 = '7a561191db2203550fbfa40d534d4997624cd369', - license = 'Apache2.0', - visibility = [], -) - diff --git a/lib/BUCK b/lib/BUCK index 327a203e5b..4664463cc7 100644 --- a/lib/BUCK +++ b/lib/BUCK @@ -53,9 +53,9 @@ java_library( maven_jar( name = 'gwtjsonrpc', - id = 'com.google.gerrit:gwtjsonrpc:1.9', - bin_sha1 = '458f55e92584fbd9ab91a89fa1c37654922a0f2b', - src_sha1 = 'ba539361c80a26f0d30a2f56068f6d83f44062d8', + id = 'com.google.gerrit:gwtjsonrpc:1.10', + bin_sha1 = '25adea6ef102b761993688e80dfc7203e0f5edf0', + src_sha1 = '4401b5868976460f8fac504cf730425ed95481ff', license = 'Apache2.0', ) diff --git a/lib/gwt/BUCK b/lib/gwt/BUCK index ebd58f1cae..41000d3234 100644 --- a/lib/gwt/BUCK +++ b/lib/gwt/BUCK @@ -1,23 +1,21 @@ include_defs('//lib/maven.defs') -VERSION = '2.7.0' +VERSION = '2.8.0-rc2' maven_jar( name = 'user', id = 'com.google.gwt:gwt-user:' + VERSION, - sha1 = 'bdc7af42581745d3d79c2efe0b514f432b998a5b', + sha1 = 'ad99b09a626c20cce2bdacf3726a51b2cd16b99e', license = 'Apache2.0', attach_source = False, - exclude = ['javax/servlet/*'], ) maven_jar( name = 'dev', id = 'com.google.gwt:gwt-dev:' + VERSION, - sha1 = 'c2c3dd5baf648a0bb199047a818be5e560f48982', + sha1 = 'd70a6feb4661c07488090cb81303415e9110b15a', license = 'Apache2.0', attach_source = False, - exclude = ['org/eclipse/jetty/*'], ) maven_jar( @@ -29,3 +27,47 @@ maven_jar( visibility = ['PUBLIC'], ) +maven_jar( + name = 'jsinterop-annotations', + id = 'com.google.jsinterop:jsinterop-annotations:1.0.0', + bin_sha1 = '23c3a3c060ffe4817e67673cc8294e154b0a4a95', + src_sha1 = '5d7c478efbfccc191430d7c118d7bd2635e43750', + license = 'Apache2.0', + visibility = ['PUBLIC'], +) + +maven_jar( + name = 'ant', + id = 'ant:ant:1.6.5', + bin_sha1 = '7d18faf23df1a5c3a43613952e0e8a182664564b', + src_sha1 = '9e0a847494563f35f9b02846a1c1eb4aa2ee5a9a', + license = 'Apache2.0', + visibility = ['PUBLIC'], +) + +maven_jar( + name = 'colt', + id = 'colt:colt:1.2.0', + attach_source = False, + bin_sha1 = '0abc984f3adc760684d49e0f11ddf167ba516d4f', + license = 'DO_NOT_DISTRIBUTE', + visibility = ['PUBLIC'], +) + +maven_jar( + name = 'tapestry', + id = 'tapestry:tapestry:4.0.2', + attach_source = False, + bin_sha1 = 'e855a807425d522e958cbce8697f21e9d679b1f7', + license = 'Apache2.0', + visibility = ['PUBLIC'], +) + +maven_jar( + name = 'w3c-css-sac', + id = 'org.w3c.css:sac:1.3', + attach_source = False, + bin_sha1 = 'cdb2dcb4e22b83d6b32b93095f644c3462739e82', + license = 'DO_NOT_DISTRIBUTE', + visibility = ['PUBLIC'], +) diff --git a/tools/eclipse/BUCK b/tools/eclipse/BUCK index 0bcde9d981..a8b3f01671 100644 --- a/tools/eclipse/BUCK +++ b/tools/eclipse/BUCK @@ -21,8 +21,14 @@ java_library( '//lib/bouncycastle:bcprov', '//lib/bouncycastle:bcpg', '//lib/bouncycastle:bcpkix', + '//lib/gwt:ant', + '//lib/gwt:colt', '//lib/gwt:javax-validation', '//lib/gwt:javax-validation_src', + '//lib/gwt:jsinterop-annotations', + '//lib/gwt:jsinterop-annotations_src', + '//lib/gwt:tapestry', + '//lib/gwt:w3c-css-sac', '//lib/jetty:servlets', '//lib/prolog:compiler_lib', '//polygerrit-ui:polygerrit_components', diff --git a/tools/gwt-constants.defs b/tools/gwt-constants.defs index 8bafddb133..b76c04b648 100644 --- a/tools/gwt-constants.defs +++ b/tools/gwt-constants.defs @@ -14,8 +14,14 @@ GWT_PLUGIN_DEPS = [ ] GWT_TRANSITIVE_DEPS = [ + '//lib/gwt:ant', + '//lib/gwt:colt', '//lib/gwt:javax-validation', '//lib/gwt:javax-validation_src', + '//lib/gwt:jsinterop-annotations', + '//lib/gwt:jsinterop-annotations_src', + '//lib/gwt:tapestry', + '//lib/gwt:w3c-css-sac', '//lib/ow2:ow2-asm', '//lib/ow2:ow2-asm-analysis', '//lib/ow2:ow2-asm-commons', From 5515cfbdde2a3eeca675d71e8d9fddf599f5d177 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Thu, 27 Oct 2016 22:02:07 +0200 Subject: [PATCH 02/11] Bump GWT version to 2.8.0 Change-Id: I0dd10792a0c12adba3927c18dabc31875df3622f --- WORKSPACE | 6 +++--- lib/gwt/BUCK | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index d3e707ef2d..e9ad5e1495 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -62,18 +62,18 @@ maven_jar( sha1 = '5d9e2e895e3111622720157d0aa540066d5fce3a', ) -GWT_VERS = '2.8.0-rc2' +GWT_VERS = '2.8.0' maven_jar( name = 'user', artifact = 'com.google.gwt:gwt-user:' + GWT_VERS, - sha1 = 'ad99b09a626c20cce2bdacf3726a51b2cd16b99e', + sha1 = '518579870499e15531f454f35dca0772d7fa31f7', ) maven_jar( name = 'dev', artifact = 'com.google.gwt:gwt-dev:' + GWT_VERS, - sha1 = 'd70a6feb4661c07488090cb81303415e9110b15a', + sha1 = 'f160a61272c5ebe805cd2d3d3256ed3ecf14893f', ) maven_jar( diff --git a/lib/gwt/BUCK b/lib/gwt/BUCK index 41000d3234..6e8b8d1137 100644 --- a/lib/gwt/BUCK +++ b/lib/gwt/BUCK @@ -1,11 +1,11 @@ include_defs('//lib/maven.defs') -VERSION = '2.8.0-rc2' +VERSION = '2.8.0' maven_jar( name = 'user', id = 'com.google.gwt:gwt-user:' + VERSION, - sha1 = 'ad99b09a626c20cce2bdacf3726a51b2cd16b99e', + sha1 = '518579870499e15531f454f35dca0772d7fa31f7', license = 'Apache2.0', attach_source = False, ) @@ -13,7 +13,7 @@ maven_jar( maven_jar( name = 'dev', id = 'com.google.gwt:gwt-dev:' + VERSION, - sha1 = 'd70a6feb4661c07488090cb81303415e9110b15a', + sha1 = 'f160a61272c5ebe805cd2d3d3256ed3ecf14893f', license = 'Apache2.0', attach_source = False, ) From 3a6bc35d0a441054b245a54aa5532764cf1803e9 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Mon, 23 Oct 2017 16:49:38 +0900 Subject: [PATCH 03/11] Upgrade GWT to version 2.8.2 This version includes a fix for incorrect getAbsoluteLeft/Top values in Chrome 61 and later [1], plus various other bugfixes. See the release notes [2] for full details. See also the release notes for 2.8.1 [3] which is also included in this upgrade. [1] https://github.com/gwtproject/gwt/issues/9542 [2] http://www.gwtproject.org/release-notes.html#Release_Notes_2_8_2 [3] http://www.gwtproject.org/release-notes.html#Release_Notes_2_8_1 Bug: Issue 7519 Change-Id: If6da895e1349336b8853767a537ed4a09c2773f5 --- lib/gwt/BUCK | 15 ++++++++++++--- tools/gwt-constants.defs | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/gwt/BUCK b/lib/gwt/BUCK index 6e8b8d1137..2be89d784c 100644 --- a/lib/gwt/BUCK +++ b/lib/gwt/BUCK @@ -1,11 +1,11 @@ include_defs('//lib/maven.defs') -VERSION = '2.8.0' +VERSION = '2.8.2' maven_jar( name = 'user', id = 'com.google.gwt:gwt-user:' + VERSION, - sha1 = '518579870499e15531f454f35dca0772d7fa31f7', + sha1 = 'a2b9be2c996a658c4e009ba652a9c6a81c88a797', license = 'Apache2.0', attach_source = False, ) @@ -13,7 +13,7 @@ maven_jar( maven_jar( name = 'dev', id = 'com.google.gwt:gwt-dev:' + VERSION, - sha1 = 'f160a61272c5ebe805cd2d3d3256ed3ecf14893f', + sha1 = '7a87e060bbf129386b7ae772459fb9f87297c332', license = 'Apache2.0', attach_source = False, ) @@ -71,3 +71,12 @@ maven_jar( license = 'DO_NOT_DISTRIBUTE', visibility = ['PUBLIC'], ) + +maven_jar( + name = 'jsr305', + id = 'com.google.code.findbugs:jsr305:3.0.1', + sha1 = 'f7be08ec23c21485b9b5a1cf1654c2ec8c58168d', + license = 'Apache2.0', + attach_source = False, + visibility = ['PUBLIC'], +) diff --git a/tools/gwt-constants.defs b/tools/gwt-constants.defs index b76c04b648..cb2c1c1ad2 100644 --- a/tools/gwt-constants.defs +++ b/tools/gwt-constants.defs @@ -20,6 +20,7 @@ GWT_TRANSITIVE_DEPS = [ '//lib/gwt:javax-validation_src', '//lib/gwt:jsinterop-annotations', '//lib/gwt:jsinterop-annotations_src', + '//lib/gwt:jsr305', '//lib/gwt:tapestry', '//lib/gwt:w3c-css-sac', '//lib/ow2:ow2-asm', From ef7a6120fe0ab6010eb8eb6a752658b3a4c833ce Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Thu, 22 Sep 2016 17:50:56 +0200 Subject: [PATCH 04/11] Fix screens inherited from PaginatedProjectScreen After GWT upgrade: I3f009f3ef all screens inherited from PaginatedProjectScreen are broken because match token wasn't initialized and caused a NPE. Change-Id: I525b25193a870aef4f19068d3731d68035799ea3 --- .../com/google/gerrit/client/admin/PaginatedProjectScreen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PaginatedProjectScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PaginatedProjectScreen.java index 63498038ad..66738c0566 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PaginatedProjectScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PaginatedProjectScreen.java @@ -21,7 +21,7 @@ import com.google.gwt.http.client.URL; abstract class PaginatedProjectScreen extends ProjectScreen { protected int pageSize; - protected String match; + protected String match = ""; protected int start; PaginatedProjectScreen(Project.NameKey toShow) { From 91b13ade0d7859f085d5e330b264729f9afebdb9 Mon Sep 17 00:00:00 2001 From: Fabio Ponciroli Date: Tue, 10 Sep 2019 13:04:42 -0700 Subject: [PATCH 05/11] Update git submodules * Update plugins/replication from branch 'stable-2.16' to bf66e9959da0b3b16881687e8ed1dacafbbb5d04 - Option to drain the event queue before shutdown The node can be down for a while and the replication events could be missing for all that time. When the node is coming up again, the SHA1 should be then obsolete and then effectively lost. Allow the Gerrit administrator to avoid delaying replication events by automatically making the shutdown of the replication queue more graceful and wait for all in-flight replications tasks to end before shutting down the system. Bug: Issue 11145 Change-Id: I9d823cd64176b4987d7ba71d9a46e717d0f52b93 --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index 4753f8f72f..bf66e9959d 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit 4753f8f72ff64cb75a26357307034dfa8489fca8 +Subproject commit bf66e9959da0b3b16881687e8ed1dacafbbb5d04 From e4ed705ddeba1860a67d56defa43a46a06dcf974 Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Tue, 10 Sep 2019 21:15:13 +0100 Subject: [PATCH 06/11] Update git submodules * Update plugins/replication from branch 'stable-2.16' to 7927786d06cf0b8ae046e3ea8e8283e16f5db3e1 - Reformat with GJF Change-Id: I5e476d79c33f3e2b9bb45f3f9ea0396b20072854 --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index bf66e9959d..7927786d06 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit bf66e9959da0b3b16881687e8ed1dacafbbb5d04 +Subproject commit 7927786d06cf0b8ae046e3ea8e8283e16f5db3e1 From 9d3f90489ab632cf55a9f21d15b951a2285725ee Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 11 Sep 2019 08:17:14 +0900 Subject: [PATCH 07/11] Format BUILD file with buildifier Change-Id: I2037b1d2105c03e419df37742c36b7064b348fca --- proto/testing/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/testing/BUILD b/proto/testing/BUILD index 3701394bbe..f32d7457a6 100644 --- a/proto/testing/BUILD +++ b/proto/testing/BUILD @@ -1,5 +1,5 @@ -load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") +load("@rules_proto//proto:defs.bzl", "proto_library") proto_library( name = "test_proto", From 1ee4227ddb466edf10f367d8b39ac93d88658f36 Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Wed, 11 Sep 2019 00:42:11 +0100 Subject: [PATCH 08/11] Update git submodules * Update plugins/replication from branch 'stable-2.16' to 628f4795d07c783720dee4ef51374810f3a41649 - ReplicationIT: speedup drain replication queue tests Do not introduce artificial delays for the testing of the replication queue drain. Explicitly shutdown the replication config immediately after the push operation, so that even a small 1s replication delay is good enough to test the functionality. Change-Id: I68caea21675875a947c2b520d265446ca2f7fe30 - ReplicationIT: Remove unused variables in tests Change-Id: Ic652fd71748bf7899377f5e4b3ef5e3f9d7d819a --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index 7927786d06..628f4795d0 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit 7927786d06cf0b8ae046e3ea8e8283e16f5db3e1 +Subproject commit 628f4795d07c783720dee4ef51374810f3a41649 From 6e58097de69e672f53b2c12f20f6ab1683282530 Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Wed, 11 Sep 2019 00:43:41 +0100 Subject: [PATCH 09/11] Update git submodules * Update plugins/replication from branch 'stable-3.0' to 84f695f893025152496d6c6782660cb239845db7 - Merge branch 'stable-2.16' into stable-3.0 * stable-2.16: ReplicationIT: speedup drain replication queue tests ReplicationIT: Remove unused variables in tests Reformat with GJF Option to drain the event queue before shutdown Change-Id: I02a30f057aba348f2977c12b669c17a560d710b1 - ReplicationIT: speedup drain replication queue tests Do not introduce artificial delays for the testing of the replication queue drain. Explicitly shutdown the replication config immediately after the push operation, so that even a small 1s replication delay is good enough to test the functionality. Change-Id: I68caea21675875a947c2b520d265446ca2f7fe30 - ReplicationIT: Remove unused variables in tests Change-Id: Ic652fd71748bf7899377f5e4b3ef5e3f9d7d819a - Reformat with GJF Change-Id: I5e476d79c33f3e2b9bb45f3f9ea0396b20072854 - Option to drain the event queue before shutdown The node can be down for a while and the replication events could be missing for all that time. When the node is coming up again, the SHA1 should be then obsolete and then effectively lost. Allow the Gerrit administrator to avoid delaying replication events by automatically making the shutdown of the replication queue more graceful and wait for all in-flight replications tasks to end before shutting down the system. Bug: Issue 11145 Change-Id: I9d823cd64176b4987d7ba71d9a46e717d0f52b93 --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index 6698a9e087..84f695f893 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit 6698a9e0878519c3a01d9f891e53f8411e6f1d98 +Subproject commit 84f695f893025152496d6c6782660cb239845db7 From d9226f57709fb9bcc0ea5f38f8030ca611efacb4 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 11 Sep 2019 14:00:17 +0900 Subject: [PATCH 10/11] Update git submodules * Update plugins/replication from branch 'stable-2.16' to 41dcd7a9830830e0a1592462086455a2a6240e0f - ReplicationIT: Replace ExpectedException with assertThrows The ExpectedException is removed in later branches. Replace it in stable-2.16 to avoid unnecessary rework when merging up. Change-Id: I65b18bf77f9d5816e7d2c9533535d0c307f65a46 - ReplicationFileBasedConfig#EventQueueNotEmptyException: Add missing serialVersionUID Change-Id: I4bc1d415f32ac5511f41bf9ecbd59aa4ff104d2e --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index 628f4795d0..41dcd7a983 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit 628f4795d07c783720dee4ef51374810f3a41649 +Subproject commit 41dcd7a9830830e0a1592462086455a2a6240e0f From 3c0a106be5a73d9bf3418358737ca988a293d6d2 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 11 Sep 2019 14:00:42 +0900 Subject: [PATCH 11/11] Update git submodules * Update plugins/replication from branch 'stable-3.0' to b8895b93180d236d745c1bedb24eb2c8650d986b - Merge branch 'stable-2.16' into stable-3.0 * stable-2.16: ReplicationIT: Replace ExpectedException with assertThrows ReplicationFileBasedConfig#EventQueueNotEmptyException: Add missing serialVersionUID Change-Id: Ibaa65c80ec8494637d0844bb1a967ac35d93cd61 - ReplicationIT: Replace ExpectedException with assertThrows The ExpectedException is removed in later branches. Replace it in stable-2.16 to avoid unnecessary rework when merging up. Change-Id: I65b18bf77f9d5816e7d2c9533535d0c307f65a46 - ReplicationFileBasedConfig#EventQueueNotEmptyException: Add missing serialVersionUID Change-Id: I4bc1d415f32ac5511f41bf9ecbd59aa4ff104d2e --- plugins/replication | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/replication b/plugins/replication index 84f695f893..b8895b9318 160000 --- a/plugins/replication +++ b/plugins/replication @@ -1 +1 @@ -Subproject commit 84f695f893025152496d6c6782660cb239845db7 +Subproject commit b8895b93180d236d745c1bedb24eb2c8650d986b