@@ -0,0 +1,1720 @@
+/*%0A *  Copyright 2020 Google LLC%0A *%0A *  Licensed under the Apache License, Version 2.0 (the %22License%22);%0A *  you may not use this file except in compliance with the License.%0A *  You may obtain a copy of the License at%0A *%0A *      https:www.apache.org/licenses/LICENSE-2.0%0A *%0A *  Unless required by applicable law or agreed to in writing, software%0A *  distributed under the License is distributed on an %22AS IS%22 BASIS,%0A *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A *  See the License for the specific language governing permissions and%0A *  limitations under the License.%0A */%0A%0Apackage com.google.vinet.servlets;%0A%0Aimport com.google.vinet.data.MatchingRunner;%0A%0Aimport javax.servlet.annotation.WebServlet;%0Aimport javax.servlet.http.HttpServlet;%0Aimport javax.servlet.http.HttpServletRequest;%0Aimport javax.servlet.http.HttpServletResponse;%0Aimport java.io.IOException;%0A%0A@WebServlet(%22/admin/run-matching%22)%0Apublic class MatchingServlet extends HttpServlet %7B%0A  @Override%0A  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException%7B%0A    /* Construct a MatchingRunner with no initial parameters. All necessary data will be%0A     * pulled from DataStore once runner.run() is called. */%0A    MatchingRunner runner = new MatchingRunner();%0A%0A    /*%0A     * Try to run the matcher. Report any failures to the caller.%0A     * In a production environment, there would be an integration here with the bug tracking system%0A     * used by the deployer, to alert the owner that the matching has failed.%0A     */%0A    try %7B%0A      runner.run();%0A    %7D catch (Exception exception) %7B%0A      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);%0A      throw exception;%0A    %7D%0A  %7D%0A%7D%0A

Add MatchingServlet to allow the MatchingRunner to be triggered via an HTTP request