用于在Java中的LDAP目录的Upsert

我正试图使用​​Novell JLDAP库执行Upsert,不幸的是,我无法找到此示例。目前,我必须:用于在Java中的LDAP目录的Upsert

public EObject put(EObject eObject){ 

Subject s = (Subject) eObject;

//Query and grab attributes from subject

LDAPAttributes attr = resultsToAttributes(getLDAPConnection().get(s));

//No modification needed - return

if(s.getAttributes().equals(attr)){

return eObject;

} else {

//Keys:

//REPLACE,ADD,DELETE, depending on which attributes are present in the maps, I choose the operation which will be used

Map<String,LDAPAttribute> operationalMap = figureOutWhichAttributesArePresent(c.getAttributes(),attr);

//Add the Modifcations to a modification array

ArrayList<LDAPModification> modList = new ArrayList<LDAPModification>();

for(Entry entry: operationalMap.getEntrySet()){

//Specify whether it is an update, delete, or insert here. (entry.getKey());

modList.add(new LDAPModification(entry.getKey(),entry.getValue());

}

//commit

connection.modify("directorypathhere",modList.toArray(new LDAPModification[modList.size()]));

}

我宁愿不必先查询客户,这也会导致通过主题的属性循环。是否有人知道JNDI或其他库是否能够执行更新/插入而不对LDAP运行多条语句?

回答:

Petesh是正确的 - 在Novell库(以及UnboundId库)中实现了抽象。我能够使用Modify.REPLACE参数为每个进入的属性“上插”值,对于空值传入null。这有效地创建,更新和删除了属性,而不必先解析它们。

回答:

在LDAP中,通过LDIF文件,失败将是一个具有两个步骤的事件。删除并添加一个值。这是由一条线上的单个短划线表示的,在删除和添加之间。

我不知道你会怎么做这个库。我会尝试modList.remove,然后modList.add一个接一个,看看是否有效。

以上是 用于在Java中的LDAP目录的Upsert 的全部内容, 来源链接: utcz.com/qa/265333.html

回到顶部