1 package org
.argeo
.osgi
.useradmin
;
3 import java
.util
.ArrayList
;
6 import javax
.naming
.NamingEnumeration
;
7 import javax
.naming
.directory
.Attribute
;
8 import javax
.naming
.directory
.Attributes
;
9 import javax
.naming
.ldap
.LdapName
;
11 import org
.osgi
.service
.useradmin
.Group
;
12 import org
.osgi
.service
.useradmin
.Role
;
14 public class LdifGroup
extends LdifUser
implements Group
{
16 List
<Role
> directMembers
= null;
18 public LdifGroup(LdapName dn
, Attributes attributes
) {
19 super(dn
, attributes
);
23 public boolean addMember(Role role
) {
24 throw new UnsupportedOperationException();
28 public boolean addRequiredMember(Role role
) {
29 throw new UnsupportedOperationException();
33 public boolean removeMember(Role role
) {
34 throw new UnsupportedOperationException();
38 public Role
[] getMembers() {
39 if (directMembers
!= null)
40 return directMembers
.toArray(new Role
[directMembers
.size()]);
42 throw new ArgeoUserAdminException("Members have not been loaded.");
44 // Attribute memberAttribute = getAttributes().get("member");
45 // if (memberAttribute == null)
46 // return new Role[0];
48 // List<Role> roles = new ArrayList<Role>();
49 // NamingEnumeration values = memberAttribute.getAll();
50 // while (values.hasMore()) {
51 // LdapName dn = new LdapName(values.next().toString());
52 // roles.add(new LdifUser(dn, null));
54 // return roles.toArray(new Role[roles.size()]);
55 // } catch (Exception e) {
56 // throw new ArgeoUserAdminException("Cannot get members", e);
60 void loadMembers(LdifUserAdmin userAdmin
) {
61 directMembers
= new ArrayList
<Role
>();
62 for (LdapName ldapName
: getMemberNames()) {
64 if (userAdmin
.groups
.containsKey(ldapName
))
65 role
= userAdmin
.groups
.get(ldapName
);
66 else if (userAdmin
.users
.containsKey(ldapName
))
67 role
= userAdmin
.users
.get(ldapName
);
69 throw new ArgeoUserAdminException("No roel found for "
71 role
.directMemberOf
.add(this);
72 directMembers
.add(role
);
76 List
<LdapName
> getMemberNames() {
77 Attribute memberAttribute
= getAttributes().get("member");
78 if (memberAttribute
== null)
79 return new ArrayList
<LdapName
>();
81 List
<LdapName
> roles
= new ArrayList
<LdapName
>();
82 NamingEnumeration
<?
> values
= memberAttribute
.getAll();
83 while (values
.hasMore()) {
84 LdapName dn
= new LdapName(values
.next().toString());
88 } catch (Exception e
) {
89 throw new ArgeoUserAdminException("Cannot get members", e
);
94 public Role
[] getRequiredMembers() {
95 throw new UnsupportedOperationException();
99 public int getType() {