Example usage for org.apache.wicket.request.http WebResponse setContentLength

List of usage examples for org.apache.wicket.request.http WebResponse setContentLength

Introduction

In this page you can find the example usage for org.apache.wicket.request.http WebResponse setContentLength.

Prototype

public abstract void setContentLength(final long length);

Source Link

Document

Set the content length on the response, if appropriate in the subclass.

Usage

From source file:com.gitblit.wicket.pages.RawPage.java

License:Apache License

public RawPage(final PageParameters params) {
    super(params);

    if (params.get("r").isEmpty()) {
        error(getString("gb.repositoryNotSpecified"));
        redirectToInterceptPage(new RepositoriesPage());
    }/*from w  ww . java2s .co  m*/

    getRequestCycle().scheduleRequestHandlerAfterCurrent(new IRequestHandler() {

        @Override
        public void respond(IRequestCycle requestCycle) {
            WebResponse response = (WebResponse) requestCycle.getResponse();

            final String repositoryName = WicketUtils.getRepositoryName(params);
            final String objectId = WicketUtils.getObject(params);
            final String blobPath = WicketUtils.getPath(params);

            String[] encodings = getEncodings();
            GitBlitWebSession session = GitBlitWebSession.get();
            UserModel user = session.getUser();

            RepositoryModel model = app().repositories().getRepositoryModel(user, repositoryName);
            if (model == null) {
                // user does not have permission
                error(getString("gb.canNotLoadRepository") + " " + repositoryName);
                redirectToInterceptPage(new RepositoriesPage());
                return;
            }

            Repository r = app().repositories().getRepository(repositoryName);
            if (r == null) {
                error(getString("gb.canNotLoadRepository") + " " + repositoryName);
                redirectToInterceptPage(new RepositoriesPage());
                return;
            }

            if (StringUtils.isEmpty(blobPath)) {
                // objectid referenced raw view
                byte[] binary = JGitUtils.getByteContent(r, objectId);
                if (binary == null) {
                    final String objectNotFound = MessageFormat
                            .format("Raw page failed to find object {0} in {1}", objectId, repositoryName);
                    logger.error(objectNotFound);
                    throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND, objectNotFound);
                }
                contentType = "application/octet-stream";
                response.setContentType(contentType);
                response.setContentLength(binary.length);
                try {
                    response.getOutputStream().write(binary);
                } catch (Exception e) {
                    logger.error("Failed to write binary response", e);
                }
            } else {
                // standard raw blob view
                RevCommit commit = JGitUtils.getCommit(r, objectId);
                if (commit == null) {
                    final String commitNotFound = MessageFormat
                            .format("Raw page failed to find commit {0} in {1}", objectId, repositoryName);
                    logger.error(commitNotFound);
                    throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND, commitNotFound);
                }

                String filename = blobPath;
                if (blobPath.indexOf('/') > -1) {
                    filename = blobPath.substring(blobPath.lastIndexOf('/') + 1);
                }

                String extension = null;
                if (blobPath.lastIndexOf('.') > -1) {
                    extension = blobPath.substring(blobPath.lastIndexOf('.') + 1);
                }

                // Map the extensions to types
                Map<String, Integer> map = new HashMap<String, Integer>();
                for (String ext : app().settings().getStrings(Keys.web.imageExtensions)) {
                    map.put(ext.toLowerCase(), 2);
                }
                for (String ext : app().settings().getStrings(Keys.web.binaryExtensions)) {
                    map.put(ext.toLowerCase(), 3);
                }

                final String blobNotFound = MessageFormat.format(
                        "Raw page failed to find blob {0} in {1} @ {2}", blobPath, repositoryName, objectId);

                if (extension != null) {
                    int type = 0;
                    if (map.containsKey(extension)) {
                        type = map.get(extension);
                    }
                    switch (type) {
                    case 2:
                        // image blobs
                        byte[] image = JGitUtils.getByteContent(r, commit.getTree(), blobPath, true);
                        if (image == null) {
                            logger.error(blobNotFound);
                            throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                                    blobNotFound);
                        }
                        contentType = "image/" + extension.toLowerCase();
                        response.setContentType(contentType);
                        response.setContentLength(image.length);
                        try {
                            response.getOutputStream().write(image);
                        } catch (IOException e) {
                            logger.error("Failed to write image response", e);
                        }
                        break;
                    case 3:
                        // binary blobs (download)
                        byte[] binary = JGitUtils.getByteContent(r, commit.getTree(), blobPath, true);
                        if (binary == null) {
                            logger.error(blobNotFound);
                            throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                                    blobNotFound);
                        }
                        contentType = "application/octet-stream";
                        response.setContentLength(binary.length);
                        response.setContentType(contentType);

                        try {
                            String userAgent = GitBlitRequestUtils.getServletRequest().getHeader("User-Agent");

                            if (userAgent != null && userAgent.indexOf("MSIE 5.5") > -1) {
                                response.setHeader("Content-Disposition",
                                        "filename=\"" + URLEncoder.encode(filename, Constants.ENCODING) + "\"");
                            } else if (userAgent != null && userAgent.indexOf("MSIE") > -1) {
                                response.setHeader("Content-Disposition", "attachment; filename=\""
                                        + URLEncoder.encode(filename, Constants.ENCODING) + "\"");
                            } else {
                                response.setHeader("Content-Disposition", "attachment; filename=\""
                                        + new String(filename.getBytes(Constants.ENCODING), "latin1") + "\"");
                            }
                        } catch (UnsupportedEncodingException e) {
                            response.setHeader("Content-Disposition",
                                    "attachment; filename=\"" + filename + "\"");
                        }

                        try {
                            response.getOutputStream().write(binary);
                        } catch (IOException e) {
                            logger.error("Failed to write binary response", e);
                        }
                        break;
                    default:
                        // plain text
                        String content = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings);
                        if (content == null) {
                            logger.error(blobNotFound);
                            throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                                    blobNotFound);
                        }
                        contentType = "text/plain; charset=UTF-8";
                        response.setContentType(contentType);
                        try {
                            response.getOutputStream().write(content.getBytes("UTF-8"));
                        } catch (Exception e) {
                            logger.error("Failed to write text response", e);
                        }
                    }

                } else {
                    // plain text
                    String content = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings);
                    if (content == null) {
                        logger.error(blobNotFound);
                        throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                                blobNotFound);
                    }
                    contentType = "text/plain; charset=UTF-8";
                    response.setContentType(contentType);
                    try {
                        response.getOutputStream().write(content.getBytes("UTF-8"));
                    } catch (Exception e) {
                        logger.error("Failed to write text response", e);
                    }
                }
            }
            r.close();
        }

        @Override
        public void detach(IRequestCycle requestCycle) {
            // TODO Auto-generated method stub

        }

    });

}

From source file:org.brixcms.plugin.site.resource.ResourceNodeHandler.java

License:Apache License

@Override
public void respond(IRequestCycle requestCycle) {
    boolean save = (this.save != null) ? this.save
            : Strings.isTrue(RequestCycle.get().getRequest().getRequestParameters()
                    .getParameterValue(SAVE_PARAMETER).toString());

    BrixFileNode node = (BrixFileNode) this.node.getObject();

    if (!SitePlugin.get().canViewNode(node, Action.Context.PRESENTATION)) {
        throw Brix.get().getForbiddenException();
    }/*w  w  w.  j av  a2s . c  om*/

    WebResponse response = (WebResponse) RequestCycle.get().getResponse();

    response.setContentType(node.getMimeType());

    Date lastModified = node.getLastModified();
    response.setLastModifiedTime(Time.valueOf(lastModified));

    try {
        final HttpServletRequest r = (HttpServletRequest) requestCycle.getRequest().getContainerRequest();
        String since = r.getHeader("If-Modified-Since");
        if (!save && since != null) {
            Date d = new Date(r.getDateHeader("If-Modified-Since"));

            // the weird toString comparison is to prevent comparing
            // milliseconds
            if (d.after(lastModified) || d.toString().equals(lastModified.toString())) {
                response.setContentLength(node.getContentLength());
                response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                return;
            }
        }
        String fileName = node.getName();
        long length = node.getContentLength();
        HttpServletResponse httpServletResponse = (HttpServletResponse) response.getContainerResponse();
        InputStream stream = node.getDataAsStream();

        new Streamer(length, stream, fileName, save, r, httpServletResponse).stream();
    } catch (Exception e) {
        log.error("Error writing resource data to content", e);
    }
}

From source file:org.sakaiproject.sitestats.tool.wicket.pages.ReportDataPage.java

License:Educational Community License

protected void exportXls() {
    String fileName = getExportFileName();
    byte[] hssfWorkbookBytes = Locator.getFacade().getReportManager().getReportAsExcel(report, fileName);

    RequestCycle.get().scheduleRequestHandlerAfterCurrent(new EmptyRequestHandler());
    WebResponse response = (WebResponse) getResponse();
    response.setContentType("application/vnd.ms-excel");
    response.setAttachmentHeader(fileName + ".xls");
    response.setHeader("Cache-Control", "max-age=0");
    response.setContentLength(hssfWorkbookBytes.length);
    OutputStream out = null;/*from  w w  w.j  a v a2 s.c o m*/
    try {
        out = response.getOutputStream();
        out.write(hssfWorkbookBytes);
        out.flush();
    } catch (IOException e) {
        LOG.error(e);
    } finally {
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {
            LOG.error(e);
        }
    }
}

From source file:org.sakaiproject.sitestats.tool.wicket.pages.ReportDataPage.java

License:Educational Community License

protected void exportCsv() {
    String fileName = getExportFileName();
    String csvString = Locator.getFacade().getReportManager().getReportAsCsv(report);

    RequestCycle.get().scheduleRequestHandlerAfterCurrent(new EmptyRequestHandler());
    WebResponse response = (WebResponse) getResponse();
    response.setContentType("text/comma-separated-values");
    response.setAttachmentHeader(fileName + ".csv");
    response.setHeader("Cache-Control", "max-age=0");
    response.setContentLength(csvString.length());
    OutputStream out = null;/*from   w ww .j  a v  a  2 s . co  m*/
    try {
        out = response.getOutputStream();
        out.write(csvString.getBytes());
        out.flush();
    } catch (IOException e) {
        LOG.error(e);
    } finally {
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {
            LOG.error(e);
        }
    }
}

From source file:org.sakaiproject.sitestats.tool.wicket.pages.ReportDataPage.java

License:Educational Community License

protected void exportPdf() {
    String fileName = getExportFileName();
    byte[] pdf = Locator.getFacade().getReportManager().getReportAsPDF(report);

    RequestCycle.get().scheduleRequestHandlerAfterCurrent(new EmptyRequestHandler());
    WebResponse response = (WebResponse) getResponse();
    response.setContentType("application/pdf");
    response.setAttachmentHeader(fileName + ".pdf");
    response.setHeader("Cache-Control", "max-age=0");
    response.setContentLength(pdf.length);
    OutputStream out = null;//w  w w  .  ja  v a  2 s .c  om
    try {
        out = response.getOutputStream();
        out.write(pdf);
        out.flush();
    } catch (IOException e) {
        LOG.error(e);
    } finally {
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {
            LOG.error(e);
        }
    }
}