You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ServletBinderImpl.java 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Copyright (C) 2009-2010, Google Inc. and others
  3. *
  4. * This program and the accompanying materials are made available under the
  5. * terms of the Eclipse Distribution License v. 1.0 which is available at
  6. * https://www.eclipse.org/org/documents/edl-v10.php.
  7. *
  8. * SPDX-License-Identifier: BSD-3-Clause
  9. */
  10. package org.eclipse.jgit.http.server.glue;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. import javax.servlet.Filter;
  14. import javax.servlet.http.HttpServlet;
  15. import javax.servlet.http.HttpServletResponse;
  16. import org.eclipse.jgit.http.server.HttpServerText;
  17. abstract class ServletBinderImpl implements ServletBinder {
  18. private final List<Filter> filters;
  19. private HttpServlet httpServlet;
  20. ServletBinderImpl() {
  21. this.filters = new ArrayList<>();
  22. }
  23. /** {@inheritDoc} */
  24. @Override
  25. public ServletBinder through(Filter filter) {
  26. if (filter == null)
  27. throw new NullPointerException(HttpServerText.get().filterMustNotBeNull);
  28. filters.add(filter);
  29. return this;
  30. }
  31. /** {@inheritDoc} */
  32. @Override
  33. public void with(HttpServlet servlet) {
  34. if (servlet == null)
  35. throw new NullPointerException(HttpServerText.get().servletMustNotBeNull);
  36. if (httpServlet != null)
  37. throw new IllegalStateException(HttpServerText.get().servletWasAlreadyBound);
  38. httpServlet = servlet;
  39. }
  40. /**
  41. * Get the servlet
  42. *
  43. * @return the configured servlet, or singleton returning 404 if none.
  44. */
  45. protected HttpServlet getServlet() {
  46. if (httpServlet != null) {
  47. return httpServlet;
  48. }
  49. return new ErrorServlet(HttpServletResponse.SC_NOT_FOUND);
  50. }
  51. /**
  52. * Get filters
  53. *
  54. * @return the configured filters; zero-length array if none.
  55. */
  56. protected Filter[] getFilters() {
  57. return filters.toArray(new Filter[0]);
  58. }
  59. /** @return the pipeline that matches and executes this chain. */
  60. abstract UrlPipeline create();
  61. }