FLUID-4187: Provide support for IoC-driven "options chewing", allowing options structures to be supplied to a component in a format matching an outdated API

Metadata

Source
FLUID-4187
Type
New Feature
Priority
Major
Status
Closed
Resolution
Fixed
Assignee
Justin Obara
Reporter
Antranig Basman
Created
2011-04-18T18:45:01.193-0400
Updated
2015-04-05T15:42:34.331-0400
Versions
  1. 1.3.1
Fixed Versions
  1. 1.5
Component
  1. IoC System

Description

This was supplied in an ad hoc "monkey patching" form for the 1.3.1 release. For 1.4 we require to be able to do this in an IoC-driven way, allowing the reimplemented version of the Uploader component to accept options which are in the format used for previous releases. This feature implementation needs to interact in a detailed way with both the IoC and options merging systems. In particular, the options to be transformed in the merge chain are all of those EXCEPT for the component's own defaults, which are presumably supplied by the same implementor as the implementation. Options supplied directly by the user and contributed via demands blocks potentially need to be transformed. Also, the resolution of the required version number needs to be IoC driven - it should be possible to achieve the effect of "scoping" the directive for options transformation using the possibilities available for IoC scopes. This requires an improvement to the IoC system itself in the form of "tag groups" - it should be possible to direct that a group of tag names (type names) form part of a mutually exclusive group for resolution purposes, with the first one seen able to pre-empt resolution of the others - this will prevent indeterminism in the case that multiple version directives are seen in the same scope.

Comments

  • Harris Wong commented 2011-05-30T15:54:28.754-0400

    Related to json2 removal. https://github.com/fluid-project/infusion/commit/3e45b80f11b88b3b42982c50f23c7eafa3d1244a

  • Antranig Basman commented 2013-05-25T04:54:32.296-0400

    Some basic support was delivered for this in the 1.4 release, with successive improvements continuing to the point of FLUID-4330 where we now have a system where the "transformOptions" block can be both IoC and options-delivered - current showcase implementation is in UploaderCompatibilityTests.js . The system referred to as "tag groups" was implemented as FLUID-4917 under the name of "demands block horizons"