/** PUT request handler */ @RestMethod(name="PUT", path="/*", guards=AdminGuard.class) public Object doPut(RestRequest req) throws Exception { if (! allowPuts) throw new RestException(SC_METHOD_NOT_ALLOWED, "PUT not enabled"); File f = new File(rootDir.getAbsolutePath() + req.getPathInfo()); String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length()); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f)); IOPipe.create(req.getInputStream(), bos).closeOut().run(); if (req.getContentType().contains("html")) return new Redirect(parentSubPath); return "File added"; }
@Override /* ResponseHandler */ public boolean handle(RestRequest req, RestResponse res, Object output) throws IOException, RestException { if (output instanceof Reader) { Writer w = res.getNegotiatedWriter(); IOPipe.create(output, w).closeOut().run(); return true; } return false; } }
@Override /* ResponseHandler */ public boolean handle(RestRequest req, RestResponse res, Object output) throws IOException, RestException { if (output instanceof InputStream) { res.setHeader("Content-Type", res.getContentType()); OutputStream os = res.getNegotiatedOutputStream(); IOPipe.create(output, os).closeOut().run(); return true; } return false; } }
/** * [POST /upload] - Upload a file as a multipart form post. * Shows how to use the Apache Commons ServletFileUpload class for handling multi-part form posts. */ @RestMethod(name="POST", path="/upload", matchers=TempDirResource.MultipartFormDataMatcher.class) public Redirect uploadFile(RestRequest req) throws Exception { ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iter = upload.getItemIterator(req); while (iter.hasNext()) { FileItemStream item = iter.next(); if (item.getFieldName().equals("contents")) { //$NON-NLS-1$ File f = new File(getRootDir(), item.getName()); IOPipe.create(item.openStream(), new FileOutputStream(f)).closeOut().run(); } } return new Redirect(); // Redirect to the servlet root. }
IOPipe.create(in, out).closeOut().run(); assertTrue(in.closed); assertTrue(out.closed); IOPipe.create(in2, out2).closeOut().run(); assertTrue(in2.closed); assertTrue(out2.closed); IOPipe.create(in, out2).closeOut().run(); assertTrue(in.closed); assertTrue(out2.closed); IOPipe.create(in2, out).closeOut().run(); assertTrue(in2.closed); assertTrue(out.closed);