You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PortletDummyRequestHandler.java 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * Copyright 2000-2016 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.server.communication;
  17. import java.io.BufferedWriter;
  18. import java.io.IOException;
  19. import java.io.OutputStream;
  20. import java.io.OutputStreamWriter;
  21. import java.io.PrintWriter;
  22. import javax.portlet.PortletResponse;
  23. import javax.portlet.ResourceRequest;
  24. import javax.portlet.ResourceResponse;
  25. import com.vaadin.server.RequestHandler;
  26. import com.vaadin.server.VaadinPortletResponse;
  27. import com.vaadin.server.VaadinRequest;
  28. import com.vaadin.server.VaadinResponse;
  29. import com.vaadin.server.VaadinSession;
  30. /**
  31. * Request handler which provides a dummy HTML response to any resource request
  32. * with the resource id DUMMY.
  33. *
  34. * @author Vaadin Ltd
  35. * @since 7.1
  36. */
  37. public class PortletDummyRequestHandler implements RequestHandler {
  38. @Override
  39. public boolean handleRequest(VaadinSession session, VaadinRequest request,
  40. VaadinResponse response) throws IOException {
  41. if (!isDummyRequest(request)) {
  42. return false;
  43. }
  44. /*
  45. * This dummy page is used by action responses to redirect to, in order
  46. * to prevent the boot strap code from being rendered into strange
  47. * places such as iframes.
  48. */
  49. PortletResponse portletResponse = ((VaadinPortletResponse) response)
  50. .getPortletResponse();
  51. if (portletResponse instanceof ResourceResponse) {
  52. ((ResourceResponse) portletResponse).setContentType("text/html");
  53. }
  54. final OutputStream out = ((ResourceResponse) response)
  55. .getPortletOutputStream();
  56. try (PrintWriter outWriter = new PrintWriter(
  57. new BufferedWriter(new OutputStreamWriter(out, "UTF-8")))) {
  58. outWriter.print("<html><body>dummy page</body></html>");
  59. }
  60. return true;
  61. }
  62. public static boolean isDummyRequest(VaadinRequest request) {
  63. ResourceRequest resourceRequest = PortletUIInitHandler
  64. .getResourceRequest(request);
  65. if (resourceRequest == null) {
  66. return false;
  67. }
  68. return resourceRequest.getResourceID() != null
  69. && resourceRequest.getResourceID().equals("DUMMY");
  70. }
  71. }