Uploaded image for project: 'Pluto'
  1. Pluto
  2. PLUTO-591

HttpServletPortletResponseWrapper incorrectly assumes MimeResponse.getPortletOutputStream() is upcastable to ServletOutputStream

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 2.0.2
    • Component/s: portlet container
    • Labels:
      None

      Description

      Reported by Rossen Stoyanchev on pluto-user@:

      Hi, I am attempting to use Sun's jsf-portlet integration with Pluto 2.0. I get the following:

      Caused by: java.lang.ClassCastException: com.sun.faces.portlet.ByteArrayWebOutputStream cannot be cast to javax.servlet.ServletOutputStream
      at org.apache.pluto.container.impl.HttpServletPortletResponseWrapper.getOutputStream(HttpServletPortletResponseWrapper.java:234)
      at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:792)
      at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:339)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
      at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
      at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
      at org.apache.pluto.container.impl.PortletRequestDispatcherImpl.doDispatch(PortletRequestDispatcherImpl.java:174)
      at org.apache.pluto.container.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:227)
      at com.sun.faces.portlet.ExternalContextImpl.dispatch(ExternalContextImpl.java:147)
      at org.springframework.faces.webflow.ExternalContextWrapper.dispatch(ExternalContextWrapper.java:25)
      at com.sun.faces.portlet.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:371)
      at com.sun.faces.portlet.ViewHandlerImpl.renderView(ViewHandlerImpl.java:235)
      at org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:91)
      at org.springframework.faces.webflow.JsfView.render(JsfView.java:89)
      at org.springframework.webflow.engine.ViewState.render(ViewState.java:282)
      at org.springframework.webflow.engine.ViewState.doEnter(ViewState.java:186)
      at org.springframework.webflow.engine.State.enter(State.java:194)
      at org.springframework.webflow.engine.Flow.start(Flow.java:535)
      at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:364)
      at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:222)
      ... 69 more

      The JavaDocs for javax.portlet.MimeResponse indicates the getPortletOutputStream() method return value is of type java.io.OutputStream. Hence the cast to javax.servlet.ServletOutputStream in HttpServletPortletResponseWrapper seems dodgy. Can you confirm if this is indeed an issue with Pluto's implementation or not?

      Thanks,
      Rossen

        Activity

        Hide
        adouma Ate Douma added a comment -

        Fix committed.

        Show
        adouma Ate Douma added a comment - Fix committed.
        Hide
        adouma Ate Douma added a comment -

        Fix validated and confirmed working by Rossen.

        Show
        adouma Ate Douma added a comment - Fix validated and confirmed working by Rossen.

          People

          • Assignee:
            adouma Ate Douma
            Reporter:
            adouma Ate Douma
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development