Example usage for org.apache.wicket.request IRequestHandler IRequestHandler

List of usage examples for org.apache.wicket.request IRequestHandler IRequestHandler

Introduction

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

Prototype

IRequestHandler

Source Link

Usage

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

License:Apache License

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

        @Override/*from  www. jav  a 2  s  .co m*/
        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.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());
    }/* ww w .j  a  va2s  .co 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());
    }/*from  www.j  a  v a  2  s.  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: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 w  w  .  j a v  a2 s . c om*/
 */
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  av a2 s . co 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/*from  w w  w.j a  v a 2s .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}/*  www  . j  a v  a 2 s . c  om*/
 * @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  ww w  .j a  v  a 2 s  .c  o  m
 * @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/*www  .j  a  v a 2s. c  om*/
 * @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();
        }
    };
}

From source file:de.inren.frontend.application.InRenApplication.java

License:Apache License

private IRequestMapper createImageURIRequestTargetUrlCodingStrategy() {

    IRequestMapper mapper = new IRequestMapper() {

        @Override// www  .j  a  va2s .  c  o  m
        public IRequestHandler mapRequest(Request request) {
            IRequestHandler handler = new IRequestHandler() {

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

                }

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

                }
            };
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public int getCompatibilityScore(Request request) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public Url mapHandler(IRequestHandler requestHandler) {
            // TODO Auto-generated method stub
            return null;
        }
    };
    return mapper;
}