Hi all,

I thought I'd break this out into a separate thread and we can discuss this issue in isolation.

User Centric (Intuitive) Representations
=======================================


I just talked to Ersin on IM. He clarified the differences between using a bit-list and a bstring. If we use a bstring then the user would have to enter long 25 + 1 (for B) character strings like '0100010111101010110111010B' to represent the various grants and denials (perms) associated with the ACIItem. The user would have to keep in mind the permission associated with every index. This would be really hard and not so user friendly. Keep in mind the way people will use this. They will perform modify operations where they add an aciItem attribute to an entry with the aciItem string. We cannot expect them to use this binary string representation.


A bit-list is a list of identifiers where order does not matter. The identifiers in this case are the names of the permissions. Here's an example that Ersin gave me online:


grantsAndDenials { grantBrowse, denyModify }


Now this is much more intuitive to human users than the following bstring representation for the same set of permissions in the bit-list above:


'0000000001000000010000000B'


I think it's a no brainer regarding what we want for the String representation of the ACIItem.


Runtime Machine Centric Representations
=========================================


Now is this representation the best for the machine? Probably not. Trustin will most likely prefer a BitSet or even a primitive int where the bits in the int are toggled to include the permission. I don't know which he will prefer and we'll leave it up to him.


However the human representation communicates this structure. The user can later modify this attribute to add or remove more permissions from the list. The parser takes this and converts it into the runtime representation by populating Trustin's beans for ACIItem and its elements.

Alex

Reply via email to