summaryrefslogtreecommitdiffstats
path: root/ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java
diff options
context:
space:
mode:
authorDavid Boreham <dboreham@redhat.com>2005-04-27 16:19:28 +0000
committerDavid Boreham <dboreham@redhat.com>2005-04-27 16:19:28 +0000
commitd25731e8a08a6da9fe6290f00bafd3600246f3c4 (patch)
tree1fcfb7e9df262e4fce835ae2ed9fe4fc22aacf03 /ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java
parent474810959a403f00b4249ce4281d78a152af4b20 (diff)
downloadds-d25731e8a08a6da9fe6290f00bafd3600246f3c4.tar.gz
ds-d25731e8a08a6da9fe6290f00bafd3600246f3c4.tar.xz
ds-d25731e8a08a6da9fe6290f00bafd3600246f3c4.zip
Fix handling of group membership, fix installer GUID, fix handling of entry description
Diffstat (limited to 'ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java')
-rw-r--r--ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java48
1 files changed, 41 insertions, 7 deletions
diff --git a/ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java b/ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java
index 3580f923..a5ac5a6b 100644
--- a/ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java
+++ b/ldap/servers/ntds/apacheds/org/apache/ldap/server/NetAPIPartition.java
@@ -78,7 +78,7 @@ import org.bpi.jnetman.*;
public class NetAPIPartition implements ContextPartition {
static {
- System.loadLibrary("jnetman");
+ System.loadLibrary("jnetman");
System.out.println("dll loaded");
}
@@ -208,7 +208,7 @@ public class NetAPIPartition implements ContextPartition {
}
if(normName.toString().compareToIgnoreCase(suffix) == 0) {
- // Gets us past the CoreContestFactory.startUpAppPartitions
+ // Gets us past the CoreContextFactory.startUpAppPartitions
}
else if((normName.toString().toLowerCase().endsWith(container + "," + suffix)) &&
(normName.toString().toLowerCase().startsWith(new String("sAMAccountName").toLowerCase()))) {
@@ -223,6 +223,10 @@ public class NetAPIPartition implements ContextPartition {
}
else if(attribute.contains("group")) {
attribute = entry.get("groupType");
+ if(attribute == null) {
+ throw new NamingException("Missing groupType");
+ }
+
if(((new Integer((String)attribute.get())).intValue() & GLOBAL_FLAG) == GLOBAL_FLAG) {
group.NewGroup(rdn);
modNTGroupAttributes(group, modItems);
@@ -633,7 +637,7 @@ public class NetAPIPartition implements ContextPartition {
result = true;
}
- // Ae exception raised in searchAccounts is treated as a false hasEntry result
+ // An exception raised in searchAccounts is treated as a false hasEntry result
try {
if(searchAccounts(name, new Properties(), new PresenceNode(null), new SearchControls(), new BasicAttribute(null)) > 0) {
result = true;
@@ -1172,6 +1176,10 @@ public class NetAPIPartition implements ContextPartition {
attribute.add(new Long(GLOBAL_FLAG).toString());
attributes.put(attribute);
+ attribute = new BasicAttribute("description");
+ attribute.add(group.GetComment());
+ attributes.put(attribute);
+
attribute = new BasicAttribute("member");
result = group.LoadUsers();
if(result != 0) {
@@ -1224,6 +1232,10 @@ public class NetAPIPartition implements ContextPartition {
attribute.add(new Long(DOMAINLOCAL_FLAG).toString());
attributes.put(attribute);
+ attribute = new BasicAttribute("description");
+ attribute.add(localGroup.GetComment());
+ attributes.put(attribute);
+
attribute = new BasicAttribute("member");
result = localGroup.LoadUsers();
if(result != 0) {
@@ -1469,13 +1481,24 @@ public class NetAPIPartition implements ContextPartition {
private void modNTGroupAttributes(NTGroup group, ModificationItem[] mods) throws NamingException {
for(int i = 0; i < mods.length; i++) {
- if(mods[i].getAttribute().getID().compareToIgnoreCase("member") == 0) {
+ if(mods[i].getAttribute().getID().compareToIgnoreCase("description") == 0) {
+ if(mods[i].getModificationOp() == DirContext.ADD_ATTRIBUTE) {
+ group.SetComment((String)mods[i].getAttribute().get());
+ }
+ else if(mods[i].getModificationOp() == DirContext.REMOVE_ATTRIBUTE) {
+ group.SetComment("");
+ }
+ else if(mods[i].getModificationOp() == DirContext.REPLACE_ATTRIBUTE) {
+ group.SetComment((String)mods[i].getAttribute().get());
+ }
+ }
+ else if(mods[i].getAttribute().getID().compareToIgnoreCase("member") == 0) {
String tempName;
if(mods[i].getModificationOp() == DirContext.ADD_ATTRIBUTE) {
for(int j = 0; j < mods[i].getAttribute().size(); j++) {
tempName = getRDN((String)mods[i].getAttribute().get(j));
- group.AddUser((String)mods[i].getAttribute().get(j));
+ group.AddUser(tempName);
}
}
else if(mods[i].getModificationOp() == DirContext.REMOVE_ATTRIBUTE) {
@@ -1515,13 +1538,24 @@ public class NetAPIPartition implements ContextPartition {
private void modNTLocalGroupAttributes(NTLocalGroup localGroup, ModificationItem[] mods) throws NamingException {
for(int i = 0; i < mods.length; i++) {
- if(mods[i].getAttribute().getID().compareToIgnoreCase("member") == 0) {
+ if(mods[i].getAttribute().getID().compareToIgnoreCase("description") == 0) {
+ if(mods[i].getModificationOp() == DirContext.ADD_ATTRIBUTE) {
+ localGroup.SetComment((String)mods[i].getAttribute().get());
+ }
+ else if(mods[i].getModificationOp() == DirContext.REMOVE_ATTRIBUTE) {
+ localGroup.SetComment("");
+ }
+ else if(mods[i].getModificationOp() == DirContext.REPLACE_ATTRIBUTE) {
+ localGroup.SetComment((String)mods[i].getAttribute().get());
+ }
+ }
+ else if(mods[i].getAttribute().getID().compareToIgnoreCase("member") == 0) {
String tempName;
if(mods[i].getModificationOp() == DirContext.ADD_ATTRIBUTE) {
for(int j = 0; j < mods[i].getAttribute().size(); j++) {
tempName = getRDN((String)mods[i].getAttribute().get(j));
- localGroup.AddUser((String)mods[i].getAttribute().get(j));
+ localGroup.AddUser(tempName);
}
}
else if(mods[i].getModificationOp() == DirContext.REMOVE_ATTRIBUTE) {