You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Radu Cotescu (Jira)" <ji...@apache.org> on 2020/09/29 14:56:00 UTC

[jira] [Closed] (SLING-9696) HTL does not correctly cast the "false" string to Boolean

     [ https://issues.apache.org/jira/browse/SLING-9696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Radu Cotescu closed SLING-9696.
-------------------------------

> HTL does not correctly cast the "false" string to Boolean
> ---------------------------------------------------------
>
>                 Key: SLING-9696
>                 URL: https://issues.apache.org/jira/browse/SLING-9696
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>    Affects Versions: Scripting Sightly Engine 1.0.0, Scripting HTL Engine 1.0.20, Scripting HTL Engine 1.1.0-1.4.0, Scripting HTL Engine 1.2.0-1.4.0, Scripting HTL Engine 1.3.0-1.4.0, Scripting HTL Engine 1.4.0-1.4.0
>            Reporter: Radu Cotescu
>            Assignee: Radu Cotescu
>            Priority: Major
>             Fix For: HTL Maven Plugin 2.0.2-1.4.0, Scripting HTL Runtime 1.2.4-1.4.0, Scripting HTL Engine 1.4.4-1.4.0, Scripting HTL Java Compiler 1.2.2-1.4.0, Scripting HTL Compiler 1.2.8-1.4.0, Scripting HTL Testing 1.0.24-1.4.0
>
>
> The HTL engine implementation from Apache Sling seems to have never correctly casted the "false" string to boolean. The HTL specification [0] mentions the following:
> {noformat}
> These expressions evaluate to false:
> * false
> * 0 (zero)
> * '' or "" (empty string)
> * [] (empty iterable)
> These evaluate to true:
> * "false" (non-empty string)
> * [0] (non-empty iterable)
> {noformat}
> However, all implementations have returned the Boolean {{false}} for any casing of the string "false".
> A change like this has the potential to break the functionality of existing HTL code, relying on the fact that the string "false" (irrespective of its casing) returns the Boolean {{false}}, however the implementation should obey the specification. Therefore I think the fix should be behind a configuration flag, which by default allows the engine to continue working with the wrong behaviour. Deployers can then decide via configuration if they would like to switch the engine to the correct behaviour.
>  
> [0] - [https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md#115-casting]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)