/* * Copyright 2011 gitblit.com. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */packagecom.gitblit.servlet;import staticjavax.servlet.http.HttpServletResponse.SC_NOT_FOUND;importjava.io.IOException;importjava.util.Enumeration;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.eclipse.jgit.http.server.GitFilter;importcom.gitblit.dagger.DaggerContext;importcom.gitblit.git.GitblitReceivePackFactory;importcom.gitblit.git.GitblitUploadPackFactory;importcom.gitblit.git.RepositoryResolver;importcom.gitblit.manager.IGitblit;importdagger.ObjectGraph;/** * The GitServlet provides http/https access to Git repositories. * Access to this servlet is protected by the GitFilter. * * @author James Moger * */publicclassGitServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;privatefinalGitFiltergitFilter;publicGitServlet(){gitFilter=newGitFilter();}@Overridepublicvoidinit(finalServletConfigconfig)throwsServletException{ServletContextcontext=config.getServletContext();ObjectGraphdagger=(ObjectGraph)context.getAttribute(DaggerContext.INJECTOR_NAME);IGitblitgitblit=dagger.get(IGitblit.class);gitFilter.setRepositoryResolver(newRepositoryResolver<HttpServletRequest>(gitblit));gitFilter.setUploadPackFactory(newGitblitUploadPackFactory<HttpServletRequest>(gitblit));gitFilter.setReceivePackFactory(newGitblitReceivePackFactory<HttpServletRequest>(gitblit));gitFilter.init(newFilterConfig(){@OverridepublicStringgetFilterName(){returngitFilter.getClass().getName();}@OverridepublicStringgetInitParameter(Stringname){returnconfig.getInitParameter(name);}@OverridepublicEnumeration<String>getInitParameterNames(){returnconfig.getInitParameterNames();}@OverridepublicServletContextgetServletContext(){returnconfig.getServletContext();}});init();}@Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{gitFilter.doFilter(req,res,newFilterChain(){@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException{((HttpServletResponse)response).sendError(SC_NOT_FOUND);}});}@Overridepublicvoiddestroy(){gitFilter.destroy();}}