@@ -0,0 +1,2228 @@
+// Copyright 2019 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.sps.servlets;%0A%0Aimport com.google.appengine.api.blobstore.BlobstoreFailureException;%0Aimport com.google.appengine.api.blobstore.BlobstoreService;%0Aimport com.google.appengine.api.blobstore.BlobstoreServiceFactory;%0Aimport com.google.sps.data.HttpServletUtils;%0Aimport java.io.IOException;%0Aimport javax.servlet.annotation.WebServlet;%0Aimport javax.servlet.http.HttpServlet;%0Aimport javax.servlet.http.HttpServletRequest;%0Aimport javax.servlet.http.HttpServletResponse;%0A%0A/**%0A * Servlet that returns a URL to upload a file to Blobstore and handle the form%0A */%0A@WebServlet(%22/blobstore-upload-url%22)%0Apublic class BlobstoreUploadUrlServlet extends HttpServlet %7B%0A%0A  @Override%0A  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException %7B%0A    String formHandler = HttpServletUtils.getParameter(request, %22formHandler%22, %22%22);%0A%0A    if (formHandler.isEmpty()) %7B%0A      response.sendError(HttpServletResponse.SC_BAD_REQUEST);%0A      return;%0A    %7D%0A%0A    try %7B%0A      BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();%0A      String uploadUrl = blobstoreService.createUploadUrl(formHandler);%0A%0A      response.setContentType(%22text/html%22);%0A      response.getWriter().println(uploadUrl);%0A    %7D catch (BlobstoreFailureException e) %7B%0A      System.out.println(%22Problems communicating with Blobstore: %22 + e);%0A      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);%0A      return;%0A    %7D catch (IllegalArgumentException e) %7B%0A      System.out.println(%22Invalid URL for form handler:%22 + e);%0A      response.sendError(HttpServletResponse.SC_BAD_REQUEST);%0A      return;%0A    %7D%0A  %7D%0A%7D%0A

Add Blobstore URL servlet