<<>> <> <> <> <<>> <> CHACLOps: PROGRAM 127 VERSION 1 = BEGIN DEPENDS UPON BulkData (0) VERSION 1, CHName (2) VERSION 0, CHOps (2) VERSION 3, Authentication (14) VERSION 2; <> OrganizationName: TYPE = CHName.OrganizationName; DomainName: TYPE = CHName.DomainName; ObjectName: TYPE = CHName.ObjectName; ThreePartName: TYPE = CHName.ThreePartName; Property: TYPE = CHOps.Property; Authenticator: TYPE = CHOps.Authenticator; AccessList: TYPE = { readAccess(0), administrators(2), selfControl(3) }; <> RetrievePropertyACL: PROCEDURE [name: ObjectName, property: Property, acl: AccessList, membership: BulkData.Sink, agent: Authenticator] RETURNS [distinguishedObject: ObjectName] REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError, WrongServer, ListNotFound] = 30; AddMemberToPropertyACL: PROCEDURE [name: ObjectName, property: Property, acl: AccessList, newMember: ThreePartName, agent: Authenticator] RETURNS [distinguishedObject: ObjectName] REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError, UpdateError, WrongServer, ListNotFound] = 31; DeleteMemberFromPropertyACL: PROCEDURE [name: ObjectName, property: Property, acl: AccessList, member: ThreePartName, agent: Authenticator] RETURNS [distinguishedObject: ObjectName] REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError, UpdateError, WrongServer, ListNotFound] = 32; IsInPropertyACL: PROCEDURE [name: ObjectName, property: Property, acl: AccessList, secondaryProperty: Property, member: ThreePartName, agent: Authenticator] RETURNS [inACL: BOOLEAN, distinguishedObject: ObjectName] REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError, WrongServer, ListNotFound] = 33; RetrieveDomainACL: PROCEDURE [domain: DomainName, acl: AccessList, membership: BulkData.Sink, agent: Authenticator] RETURNS [distinguishedObject: ObjectName] -- how can this be? REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer, ListNotFound] = 34; AddMemberToDomainACL: PROCEDURE [domain: DomainName, acl: AccessList, newMember: ThreePartName, agent: Authenticator] REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError, WrongServer, ListNotFound] = 35; DeleteMemberFromDomainACL: PROCEDURE [domain: DomainName, acl: AccessList, member: ThreePartName, agent: Authenticator] REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError, WrongServer, ListNotFound] = 36; IsInDomainACL: PROCEDURE [domain: DomainName, acl: AccessList, secondaryProperty: Property, member: ThreePartName, agent: Authenticator] RETURNS [inACL: BOOLEAN] REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer, ListNotFound] = 37; RetrieveOrganizationACL: PROCEDURE [organization: OrganizationName, acl: AccessList, membership: BulkData.Sink, agent: Authenticator] REPORTS [ArgumentError, AuthenticationError, CallError, ListNotFound] = 38; AddMemberToOrganizationACL: PROCEDURE [organization: OrganizationName, acl: AccessList, newMember: ThreePartName, agent: Authenticator] REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError, ListNotFound] = 39; DeleteMemberFromOrganizationACL: PROCEDURE [organization: OrganizationName, acl: AccessList, member: ThreePartName, agent: Authenticator] REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError, ListNotFound] = 40; IsInOrganizationACL: PROCEDURE [organization: OrganizationName, acl: AccessList, secondaryProperty: Property, member: ThreePartName, agent: Authenticator] RETURNS [inACL: BOOLEAN] REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError, ListNotFound] = 41; <> WhichArgument: TYPE = CHOps.WhichArgument; ArgumentError: ERROR [problem: ArgumentProblem, which: WhichArgument] = CHOps.ArgumentError; ArgumentProblem: TYPE = CHOps.ArgumentProblem; AuthenticationError: ERROR [problem: Authentication.Problem] = CHOps.AuthenticationError; CallError: ERROR [problem: CallProblem] = CHOps.CallError; CallProblem: TYPE = CHOps.CallProblem; PropertyError: ERROR [problem: PropertyProblem, distinguishedObject: ObjectName] = CHOps.PropertyError; PropertyProblem: TYPE = CHOps.PropertyProblem; UpdateError: ERROR [problem: UpdateProblem, found: BOOLEAN, which: WhichArgument, distinguishedObject: ObjectName] = CHOps.UpdateError; UpdateProblem: TYPE = CHOps.UpdateProblem; WrongServer: ERROR [hint: ObjectName] = CHOps.WrongServer; ListNotFound: ERROR = 7; -- This is a guess! (?) END.