FLUID-2980: Renderer decorators can only be attached to one node at a time

Metadata

Source
FLUID-2980
Type
Bug
Priority
Critical
Status
Closed
Resolution
Fixed
Assignee
Colin Clark
Reporter
Anastasia Cheetham
Created
2009-07-03T10:12:02.000-0400
Updated
2009-10-04T23:38:26.000-0400
Versions
  1. 1.1
  2. 1.1.1
Fixed Versions
  1. 1.1.2
Component
  1. Renderer

Description

Right now, the process of adding a decorator to a node will only add the decorator to one node at a time.

Comments

  • Justin Obara commented 2009-09-22T08:33:22.000-0400

    I'm noticing that only the first use of the fluid decorator, in a component tree, will render a fluid component

    Attempting to have multiple sibling nodes in a component tree call the fluid decorator, will result in only the first one actually rendering out the component.

  • Justin Obara commented 2009-09-22T08:33:43.000-0400

    Bug Parade Infusion 1.1.2

  • Antranig Basman commented 2009-10-01T01:03:41.000-0400

    I made a test case for this issue, but cannot so far make it fail - could you supply more details of a failing case?
    Cheers,
    antranig.

  • Antranig Basman commented 2009-10-01T14:14:39.000-0400

    Fixed at revision 8193 with the following comment:

    FLUID-2980, FLUID-2962: Fixes and test case for multiple decorator issue. This was actually caused by failure of re-entrancy in the renderer, which was being invoked recursively in the case where the fluid decorator designated a component which itself invoked the renderer. Establishing reentrancy for the renderer actually puts this work also under the heading of FLUID-2962 which required to enable the renderer for multi-threaded access for use on the server-side, which work had been incomplete but seen as lower priority for this release until now. This reorganisation creates a new top-level API fluid.renderer which follows the "that-ist" convention that is now standard for the framework, but which had not been in place when the renderer was initially designed. The original low-level API fluid.renderTemplates is preserved for backwards compatibility, but should be deprecated in a future release - in this implementation, it forwards to an invocation of the that-ist API which can be "stealthed" for this release but which should be advertised in future ones. The fluid.renderTemplates API does not provide any mechanism for decorators to be honoured - but it never did in any case, so this behaviour remains consistent. More thought and design is needed over future releases to create a family of strategies for honouring decorators, which will become very important as they begin to be used more cooperatively between client and server with the implementation of Kettle.

  • Michelle D'Souza commented 2009-10-02T15:39:35.000-0400

    I've reviewed this fix as well as I can. It was a bit difficult given the amount of change in the file. I have tested the renderer demos and ran the tests and all of that is fine.