in archiva-repository-api/src/main/java/org/apache/archiva/repository/impl/RepositoryServlet.java [140:187]
private void doContent(final RepositoryManager repositoryManager, final ResourceContext context, final HttpServletRequest req, final HttpServletResponse resp)
throws IOException
{
if ("PUT".equals(req.getMethod()))
{
repositoryManager.write(context, req.getInputStream());
return;
}
final List<Status> results = repositoryManager.stat(context);
if (!results.isEmpty())
{
final boolean withBody = !"HEAD".equals(req.getMethod());
final Status status = results.get(0);
if (Status.ResourceType.Collection.equals(status.getResourceType()))
{
//If does not end with slash we should redirect
if (!req.getRequestURI().endsWith("/" ))
{
resp.sendRedirect(req.getRequestURI() + "/");
return;
}
Status collectionStatus = results.get(0);
resp.setDateHeader(LAST_MODIFIED, collectionStatus.getLastModified());
resp.setStatus(HttpServletResponse.SC_OK);
IndexWriter.write(results, context, resp, withBody);
}
else
{
resp.setStatus(HttpServletResponse.SC_OK);
resp.setContentLength((int)status.getContentLength());
resp.setContentType(status.getContentType());
resp.setDateHeader(LAST_MODIFIED, status.getLastModified());
if (withBody)
{
repositoryManager.read(context, resp.getOutputStream());
}
}
}
else
{
resp.sendError(HttpServletResponse.SC_NOT_FOUND);
}
}