Uploaded image for project: 'RichFaces'
  1. RichFaces
  2. RF-12235

Do not overwrite encodeBegin/encodeEnd when extending RendererBase

    Details

    • Type: Enhancement
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 4.2.1.Final
    • Fix Version/s: 4.3.0.M1
    • Component/s: cdk
    • Labels:
      None

      Description

      cc:implementation (resp. cdk:body) generates encodeEnd(...) (resp. encodeBegin() method of renderer.

      It overrides the implementation in predecessors of the renderer like RendererBase.

      We can just generate doEncodeEnd and doEncodeBegin methods instead of decodeEnd encodeEnd, which will allow to do not override methods like preEncodeEnd which allows to write generic implementation.

      There could be detection in place which would detect if predecessor is RendererBase.

      14:55:05 <paul_dijou> I was thinking about having hooks in the renderer
      14:55:25 <paul_dijou> Right now, when you use a template.xhtml, it will override encodeBegin and encodeEnd
      14:55:32 <bleathem> https://github.com/richfaces/components/blob/develop/common/ui/src/main/java/org/richfaces/renderkit/RendererBase.java
      14:55:39 <bleathem> has the hooks doDecode and doEncode
      14:55:51 <bleathem> so you can still use the template
      14:56:17 <bleathem> and hook into the decoding/encoding
      14:56:17 <paul_dijou> Oh good
      14:56:39 <paul_dijou> Hmmm
      14:56:50 <bleathem> ... if we keep this up, I'll just copy and paste the IRC minutes into the wiki, and we'll have the whole thing documented ;)
      14:56:51 <paul_dijou> But if the template override encodeEnd
      14:57:00 <paul_dijou> Who will call doEncodeEnd ?
      14:57:30 <paul_dijou> +1
      14:57:42 <gastaldi> sorry guys
      14:57:50 <lfryc> hmm, as Paul says, CDK generates encodeEnd
      14:57:51 <bleathem> hmm, does the template generate encodeEnd, or doEndoceEnd?
      14:57:57 <paul_dijou> encodeEnd
      14:58:02 <bleathem> ah
      14:58:11 <bleathem> then we lose the encode hooks
      14:58:12 <lfryc> https://gist.github.com/2568559
      14:58:19 <bleathem> (we still have the decode hooks)
      14:58:37 <paul_dijou> And btw, if no cdk:body in the template
      14:58:40 <lfryc> if you don't overwrite cdk:body :-)
      14:58:44 <paul_dijou> It will not write encodeStart at all
      14:58:53 <paul_dijou> So parent will still write it's encodeStart
      14:58:58 <paul_dijou> But no longuer encodeEnd
      14:59:04 <lfryc> we could let CDK behave more smart...
      14:59:11 <paul_dijou> That was the problem that lfryc solved about icons
      14:59:12 <lfryc> it could check the renderer base
      14:59:21 <lfryc> and detect if it is RendererBase class
      14:59:30 <lfryc> then it would use doDecode, doEncode instead
      14:59:52 <bleathem> or, just call out to doDecode, doEncode in it's generated methods
      15:00:12 <lfryc> then you couldn't live without RendererBase from RichFaces
      15:00:27 <lfryc> I'm having concerns about backward compatibility
      15:00:30 <bleathem> well you could, in the same way you could live without CDK templates
      

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                lfryc Lukáš Fryč
                Reporter:
                lfryc Lukáš Fryč
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: