How to avoid RT::GroupMember?

The documentation for RT::GroupMember says:

RT::GroupMember should never be called directly. It should ONLY
only be accessed through the helper functions in RT::Group;

If you’re operating on an RT::GroupMember object yourself, you B
doing something wrong.

So if that is the case, how do I avoid using the MemberObj
function in the code below?

Get an RT::Group object

my $group = $self->TicketObj->AdminCc;

Get an RT::GroupMembers object

my $members = $group->MembersObj;

Loop through the RT::GroupMember

while(my $member = $members->Next) {

# Now I have an RT::GroupMember but I can't do this?
# How do I get around it?
my $principal = $member->MemberObj;

# do something with $principal

}

My code based on the above works but I don’t want
to abuse the API.

And another question. If I call:

$principal = $member->MemberObj;
$truth = $principal->IsGroup; #Sometimes true, sometimes false

If I call:

$principal = $member->GroupObj;
$truth = $principal->IsGroup; #Always true

Why does GroupObj always return a group (even when it is
a member) while MemberObj sometimes returns a group and
sometiems a member?

Once I get this figured out I’ll be sharing an ugly
hack with the RT community. :slight_smile:

Thanks!

-Todd

Why does GroupObj always return a group (even when it is
a member) while MemberObj sometimes returns a group and
sometiems a member?

I can answer this one at least. Because a group can be a member of
another group.

Andy Harrison
(full headers for details)