Warning when setting the ACL via the SDK
Overview
In the native (or web) client if I attempt to set an invalid ACL on a Record I will get a warning, something like this:
So, I asked myself, why was I not getting the same warning from the SDK?
A riddle
When will the appropriate warning appear in rec.ErrorMessage below...
Record rec = new Record(db, "REC_2"); TrimAccessControlList acl = rec.AccessControlList; acl.SetAllInherited(); Console.WriteLine("A {0}", rec.ErrorMessage); rec.AccessControlList = acl; Console.WriteLine("B {0}", rec.ErrorMessage); rec.Verify(true); Console.WriteLine("C {0}", rec.ErrorMessage); rec.Save(); Console.WriteLine("D {0}", rec.ErrorMessage);
The only point at which a warning message will be present in rec.ErrorMessage is at 'B' above. Due to the vagaries of the SDK property handling (as described here) calling Verify (or Save() clears out the Error and ErrorMessage properties on the Record object.
The motto of the story
If you are interested in getting the warning from setting the ACL then check for it as soon as you set the AccessControlList property.
Written on June 5, 2017