Example usage for org.apache.wicket.request IRequestCycle getResponse

List of usage examples for org.apache.wicket.request IRequestCycle getResponse

Introduction

In this page you can find the example usage for org.apache.wicket.request IRequestCycle getResponse.

Prototype

Response getResponse();

Source Link

Document

Get the active response at the request cycle.

Usage

From source file:com.apachecon.memories.link.ImageLink.java

License:Apache License

public void onClick() {
    RequestCycle.get().scheduleRequestHandlerAfterCurrent(new IRequestHandler() {

        @Override/*from ww  w  .jav a 2  s .c  om*/
        public void respond(IRequestCycle requestCycle) {
            WebResponse response = (WebResponse) requestCycle.getResponse();
            response.setContentType(getModelObject().getContentType());

            try {
                InputStream is = getModelObject().getInputStream();

                byte[] buffer = new byte[512];
                int length = 0;
                while ((length = is.read(buffer)) > 0) {
                    response.write(buffer, 0, length);
                }
                response.flush();

                is.close();
            } catch (Exception e) {
                response.flush();
            }
        }

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

        }
    });
}

From source file:com.conwax.ajax.SimpleAjaxRequestTarget.java

License:Apache License

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

    response.reset();//from   ww  w. jav  a2  s.  com
    // Make sure it is not cached by a client
    response.disableCaching();

    if (component.getRenderBodyOnly() == true) {
        throw new IllegalStateException(
                "Ajax render cannot be called on component that has setRenderBodyOnly enabled. Component: "
                        + component.toString());
    }

    component.setOutputMarkupId(true);

    // Initialize temporary variables
    final Page page = component.findParent(Page.class);
    if (page == null) {
        // dont throw an exception but just ignore this component,
        // somehow
        // it got removed from the page.
        LOG.debug("component: " + component + " with markupid: " + component.getMarkupId()
                + " not rendered because it was already removed from page");
        return;
    }

    page.startComponentRender(component);

    try {
        component.prepareForRender();

        // render any associated headers of the component
        // forget about Header Contribs
        // writeHeaderContribution(response, component);
    } catch (RuntimeException e) {
        try {
            component.afterRender();
        } catch (RuntimeException e2) {
            // ignore this one could be a result off.
        }
        throw e;
    }

    try {
        component.render();
    } catch (RuntimeException e) {
        response.reset();
        throw e;
    }

    page.endComponentRender(component);

}

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

License:Apache License

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

    if (params.get("r").isEmpty()) {
        error(getString("gb.repositoryNotSpecified"));
        redirectToInterceptPage(new RepositoriesPage());
    }//w  w w .  j a v  a2  s. c  o  m

    getRequestCycle().scheduleRequestHandlerAfterCurrent(new IRequestHandler() {

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

            final String repositoryName = WicketUtils.getRepositoryName(params);
            RepositoryModel repository = app().repositories().getRepositoryModel(repositoryName);
            String objectId = WicketUtils.getObject(params).toLowerCase();
            if (objectId.endsWith(".json")) {
                objectId = objectId.substring(0, objectId.length() - ".json".length());
            }
            long id = Long.parseLong(objectId);
            TicketModel ticket = app().tickets().getTicket(repository, id);

            String content = TicketSerializer.serialize(ticket);
            contentType = "application/json; 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);
            }
        }

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

        }
    });
}

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());
    }/*  ww w .  java 2  s  . c om*/

    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:com.googlecode.wicket.jquery.ui.calendar.CalendarModelBehavior.java

License:Apache License

/**
 * Gets the new {@link IRequestHandler} that will respond the list of {@link CalendarEvent} in a json format
 *
 * @return the {@link IRequestHandler}/*  w ww . j  av a 2  s.  c o  m*/
 */
private IRequestHandler newRequestHandler() {
    return new IRequestHandler() {
        @Override
        public void respond(final IRequestCycle requestCycle) {
            WebResponse response = (WebResponse) requestCycle.getResponse();

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("text/json; charset=" + encoding);
            response.disableCaching();

            if (model != null) {
                List<? extends CalendarEvent> list = model.getObject(); // calls load()

                if (list != null) {
                    StringBuilder builder = new StringBuilder("[ ");

                    int count = 0;
                    for (CalendarEvent event : list) {
                        if (model instanceof ICalendarVisitor) {
                            event.accept((ICalendarVisitor) model); //last chance to set options
                        }

                        if (count++ > 0) {
                            builder.append(", ");
                        }
                        builder.append(event.toString());
                    }

                    builder.append(" ]");

                    LOG.debug(builder.toString());
                    response.write(builder);
                }
            }
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
        }
    };
}

From source file:com.googlecode.wicket.jquery.ui.form.autocomplete.AutoCompleteSourceBehavior.java

License:Apache License

/**
 * Gets a new {@link IRequestHandler} that will call {@link #getChoices(String)} and will build be JSON response corresponding to the specified 'input' argument.
 * @param input user input/*  w w w .  j a  va2  s.  c  o m*/
 * @return a new {@link IRequestHandler}
 */
private IRequestHandler newRequestHandler(final String input) {
    return new IRequestHandler() {
        @Override
        public void respond(final IRequestCycle requestCycle) {
            WebResponse response = (WebResponse) requestCycle.getResponse();

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("text/json; charset=" + encoding);
            response.disableCaching();

            List<T> choices = AutoCompleteSourceBehavior.this.getChoices(input);
            List<String> properties = AutoCompleteSourceBehavior.this.getProperties();

            if (choices != null) {
                StringBuilder builder = new StringBuilder("[ ");

                int index = 0;
                for (T choice : choices) {
                    if (index++ > 0) {
                        builder.append(", ");
                    }

                    builder.append("{ ");
                    builder.append(Options.QUOTE).append("id").append(Options.QUOTE).append(": ")
                            .append(Options.QUOTE).append(Integer.toString(index))
                            .append(Options.QUOTE); /* id is a reserved word */
                    builder.append(", ");
                    builder.append(Options.QUOTE).append("value").append(Options.QUOTE).append(": ")
                            .append(Options.QUOTE).append(renderer.getText(choice))
                            .append(Options.QUOTE); /* value is a reserved word */

                    if (properties != null) {
                        for (String property : properties) {
                            builder.append(", ");
                            builder.append(Options.QUOTE).append(property).append(Options.QUOTE).append(": ")
                                    .append(Options.QUOTE).append(renderer.getText(choice, property))
                                    .append(Options.QUOTE);
                        }
                    }

                    builder.append(" }");
                }

                builder.append(" ]");

                response.write(builder);
            }
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
        }
    };
}

From source file:com.googlecode.wicket.jquery.ui.kendo.datatable.DataSourceBehavior.java

License:Apache License

/**
 * Gets the new {@link IRequestHandler} that will respond the data in a json format
 *
 * @param first the first row number//w ww . ja  va2  s  . co  m
 * @param count the count of rows
 * @return a new {@link IRequestHandler}
 */
private IRequestHandler newRequestHandler(final int first, final int count) {
    return new IRequestHandler() {
        @Override
        public void respond(final IRequestCycle requestCycle) {
            WebResponse response = (WebResponse) requestCycle.getResponse();

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("text/json; charset=" + encoding);
            response.disableCaching();

            final long size = provider.size();
            final Iterator<? extends T> iterator = provider.iterator(first, count);

            // builds JSON result //
            StringBuilder builder = new StringBuilder();

            builder.append("{ ");
            builder.append(Options.QUOTE).append("__count").append(Options.QUOTE).append(": ").append(size)
                    .append(", ");
            builder.append(Options.QUOTE).append("results").append(Options.QUOTE).append(": ");
            builder.append("[ ");

            for (int index = 0; iterator.hasNext(); index++) {
                if (index > 0) {
                    builder.append(", ");
                }

                builder.append(DataSourceBehavior.this.newJsonRow(iterator.next()));
            }

            builder.append(" ] }");

            response.write(builder);
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
        }
    };
}

From source file:com.googlecode.wicket.kendo.ui.behavior.ChoiceModelBehavior.java

License:Apache License

/**
 * Get a new {@link IRequestHandler}//from   ww w  . ja  v  a 2s .  c  o  m
 * @return a new {@link IRequestHandler}
 */
protected IRequestHandler newRequestHandler() {
    return new IRequestHandler() {

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

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("application/json; charset=" + encoding);
            response.disableCaching();

            List<T> list = ChoiceModelBehavior.this.getChoices();

            if (list != null) {
                int count = 0;
                StringBuilder builder = new StringBuilder("[");

                for (T object : list) {
                    if (count++ > 0) {
                        builder.append(",");
                    }

                    builder.append(ChoiceModelBehavior.this.renderer.toJson(object));
                }

                builder.append("]");

                response.write(builder);
            }
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
            // noop
        }
    };
}

From source file:com.googlecode.wicket.kendo.ui.datatable.DataProviderBehavior.java

License:Apache License

/**
 * Gets the new {@link IRequestHandler} that will respond the data in a json format
 *
 * @param first the first row number/*from   w  ww .  jav a  2s  . c  om*/
 * @param count the count of rows
 * @return a new {@code IRequestHandler}
 */
private IRequestHandler newRequestHandler(final int first, final int count) {
    return new IRequestHandler() {

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

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("application/json; charset=" + encoding);
            response.disableCaching();

            final long size = provider.size();
            final Iterator<? extends T> iterator = provider.iterator(first, count);

            // builds JSON result //
            StringBuilder builder = new StringBuilder();

            builder.append("{ ");
            BuilderUtils.append(builder, "__count", size);
            builder.append(", ");
            builder.append(Options.QUOTE).append("results").append(Options.QUOTE).append(": ");
            builder.append("[ ");

            if (iterator != null) {
                for (int index = 0; iterator.hasNext(); index++) {
                    if (index > 0) {
                        builder.append(", ");
                    }

                    builder.append(DataProviderBehavior.this.newJsonRow(iterator.next()));
                }
            }

            builder.append(" ] }");

            response.write(builder);
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
            provider.detach();
        }
    };
}

From source file:com.googlecode.wicket.kendo.ui.datatable.DataSourceBehavior.java

License:Apache License

/**
 * Gets the new {@link IRequestHandler} that will respond the data in a json format
 *
 * @param first the first row number/*from   w  ww .j  a  va2  s  . co m*/
 * @param count the count of rows
 * @return a new {@link IRequestHandler}
 */
private IRequestHandler newRequestHandler(final int first, final int count) {
    return new IRequestHandler() {

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

            final String encoding = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
            response.setContentType("text/json; charset=" + encoding);
            response.disableCaching();

            final long size = provider.size();
            final Iterator<? extends T> iterator = provider.iterator(first, count);

            // builds JSON result //
            StringBuilder builder = new StringBuilder();

            builder.append("{ ");
            builder.append(Options.QUOTE).append("__count").append(Options.QUOTE).append(": ").append(size)
                    .append(", ");
            builder.append(Options.QUOTE).append("results").append(Options.QUOTE).append(": ");
            builder.append("[ ");

            for (int index = 0; iterator.hasNext(); index++) {
                if (index > 0) {
                    builder.append(", ");
                }

                builder.append(DataSourceBehavior.this.newJsonRow(iterator.next()));
            }

            builder.append(" ] }");

            response.write(builder);
        }

        @Override
        public void detach(final IRequestCycle requestCycle) {
            provider.detach();
        }
    };
}