Uploaded image for project: 'java.data'
  1. JDATA-10

from-java on an object with Boolean attribute = false returns "bad" Booleans

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Labels:
    • Environment:

      java version "1.8.0_161"
      Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
      Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

      clojure 1.9.0
      org.clojure/java.data "0.1.1"

      Description

      Calling from-java on an object that as a Boolean attribute that is false can return boxed Booleans that are not Boolean/FALSE.
      This results in a boolean that is equal to false, but results in the true path of if.

      (def bool (:absolute (from-java (URI. ""))))
      
      bool 
      => false
      (= bool false)
      => true
      (if bool true false)
      => false
      

      This leads to really confusing behavior.
      As clojure won't change the behavior of if (https://dev.clojure.org/jira/browse/CLJ-1718) and we don't control the construction of the boolean, I think from-java should be aware of this problem and fix it.

      This could be fixed by adding an extra method for Boolean that reconstructs the Boolean in the right way, though I'm not sure what the best way would look like.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              Anonymous
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated: