blob: 21f1800239e41e77ca6b1586ac3460fd9430cc38 [file] [log] [blame]
/*
* Copyright (C) 2009-2010, Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.http.server.glue;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jgit.http.server.HttpServerText;
abstract class ServletBinderImpl implements ServletBinder {
private final List<Filter> filters;
private HttpServlet httpServlet;
ServletBinderImpl() {
this.filters = new ArrayList<>();
}
/** {@inheritDoc} */
@Override
public ServletBinder through(Filter filter) {
if (filter == null)
throw new NullPointerException(HttpServerText.get().filterMustNotBeNull);
filters.add(filter);
return this;
}
/** {@inheritDoc} */
@Override
public void with(HttpServlet servlet) {
if (servlet == null)
throw new NullPointerException(HttpServerText.get().servletMustNotBeNull);
if (httpServlet != null)
throw new IllegalStateException(HttpServerText.get().servletWasAlreadyBound);
httpServlet = servlet;
}
/**
* Get the servlet
*
* @return the configured servlet, or singleton returning 404 if none.
*/
protected HttpServlet getServlet() {
if (httpServlet != null) {
return httpServlet;
}
return new ErrorServlet(HttpServletResponse.SC_NOT_FOUND);
}
/**
* Get filters
*
* @return the configured filters; zero-length array if none.
*/
protected Filter[] getFilters() {
return filters.toArray(new Filter[0]);
}
/** @return the pipeline that matches and executes this chain. */
abstract UrlPipeline create();
}