private void doContent()

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);
        }
    }