protected void doPut()

in repository/service/src/main/java/org/apache/karaf/cave/repository/service/maven/MavenServlet.java [439:485]


    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (!authorize(request, response, uploadRole)) {
            return;
        }
        try {
            String path = request.getPathInfo();
            //Make sure path is valid
            if (path != null) {
                if (path.startsWith("/")) {
                    path = path.substring(1);
                }
            }
            if (path == null || path.isEmpty()) {
                response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                return;
            }

            boolean result;
            // handle move
            String location = request.getHeader(LOCATION_HEADER);
            if (location != null) {
                result = upload(new File(location), path, response);
            } else {
                Path dir = tmpFolder.toPath().resolve(UUID.randomUUID().toString());
                Path temp = dir.resolve(Paths.get(path).getFileName());
                Files.createDirectories(dir);
                try (OutputStream os = Files.newOutputStream(temp)) {
                    StreamUtils.copy(request.getInputStream(), os);
                }
                result = upload(temp.toFile(), path, response);
            }

            response.setStatus(result ? HttpServletResponse.SC_ACCEPTED : HttpServletResponse.SC_NOT_ACCEPTABLE);

        } catch (InvalidMavenArtifactRequest ex) {
            // must response with status and flush as Jetty may report org.eclipse.jetty.server.Response Committed before 401 null
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
            response.setContentLength(0);
            response.flushBuffer();
        } catch (Exception ex) {
            // must response with status and flush as Jetty may report org.eclipse.jetty.server.Response Committed before 401 null
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            response.setContentLength(0);
            response.flushBuffer();
        }

    }