A lot of permissions operations are done based on context – so it makes sense to index by context when looking up permissions – the same way a lot of permissions plugins Bukkitside did a Map<String/World/, Map<String, Boolean>>.
That saves the issue of making permissions plugins create a PermissionAssignment implementation that every single permission assignment has to be wrapped with.
That makes sense, but doesn’t this or the whole SubjectData still take away a lot of freedom on the implementation?
E.g: if i want to store my permissions in an Mysql-table and manage them through a webinterface, i have to query everything out the table and order it into different maps based on the context.
And that misses the whole “meant to represent what’s ‘in the file’, rather than the higher-level query methods” thing, doesn’t it?
Edit: Also, if i call the “GetALLtheStuff” method, i am most likely not trying to get a permission, based on a context? Or why would there be a getPermissions(Set<Context>) method?