@@ -0,0 +1,1840 @@
+// 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%0Apackage com.google.lecturechat.servlets;%0A%0Aimport com.google.lecturechat.data.DatastoreAccess;%0Aimport com.google.lecturechat.data.Message;%0Aimport java.io.IOException;%0Aimport java.util.List;%0Aimport java.util.Optional;%0Aimport javax.servlet.annotation.WebServlet;%0Aimport javax.servlet.http.HttpServlet;%0Aimport javax.servlet.http.HttpServletRequest;%0Aimport javax.servlet.http.HttpServletResponse;%0A%0A/** Servlet for deleting all chat messages before a certain time. Only to be called by a cron job. */%0A@WebServlet(%22/delete-messages%22)%0Apublic class MessageServlet extends HttpServlet %7B%0A%0A  private static final int TIMEFRAME_MESSAGES_TO_KEEP = 24;%0A  private static DatastoreAccess datastore;%0A%0A  @Override%0A  public void init() %7B%0A    datastore = DatastoreAccess.getDatastoreAccess();%0A  %7D%0A%0A  @Override%0A  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException %7B%0A    String cronHeader = request.getHeader(%22X-Appengine-Cron%22);%0A    if (cronHeader == null %7C%7C !cronHeader.equals(%22true%22)) %7B%0A      return;%0A    %7D%0A    datastore.deleteMessagesOlderThan(TIMEFRAME_MESSAGES_TO_KEEP);%0A  %7D%0A%0A%0A  @Override%0A  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException %7B%0A    doGet(request, response);%0A  %7D%0A%7D

Add cron servlet