Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中LDAP目录的Upsert_Java_Ldap_Upsert - Fatal编程技术网

Java中LDAP目录的Upsert

Java中LDAP目录的Upsert,java,ldap,upsert,Java,Ldap,Upsert,我试图使用Novell JLDAP库执行Upsert,不幸的是,我很难找到这样的示例。目前,我必须: public EObject put(EObject eObject){ Subject s = (Subject) eObject; //Query and grab attributes from subject LDAPAttributes attr = resultsToAttributes(getLDAPConnection().get(s)); //No modificatio

我试图使用Novell JLDAP库执行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()]));
}
公共EObject put(EObject EObject){
主题s=(主题)对象;
//从主题中查询和获取属性
LDAPAttributes attr=ResultsToAttribute(getLDAPConnection().get(s));
//无需修改-返回
如果(s.getAttributes().equals(attr)){
返回对象;
}否则{
//关键点:
//替换、添加、删除,根据贴图中存在的属性,我选择将使用的操作
Map operationalMap=计算哪些属性存在(c.getAttributes(),attr);
//将修改添加到修改数组中
ArrayList modList=新建ArrayList();
for(条目:operationalMap.getEntrySet()){
//在此处指定是更新、删除还是插入。(entry.getKey());
add(新的LDAPModification(entry.getKey(),entry.getValue());
}
//承诺
modify(“directorypathere”,modList.toArray(新的ldapmodify[modList.size()]);
}

我希望不必首先查询客户,这也会导致循环遍历主题的属性。是否有人知道JNDI或其他库是否能够在不针对LDAP运行多个语句的情况下执行更新/插入?

在LDAP中,通过LDIF文件,一个异常将是一个包含两个步骤的单个事件。a移除和一个值的加法。这由一行上的一个破折号表示,在删除和加法之间


我不知道你会如何在这个库中实现它。我会尝试modList.remove,然后modList.add,然后一个接一个地添加,看看是否有效。

在LDAP中,通过LDIF文件,一个颠覆将是一个包含两个步骤的单一事件。一个值的删除和添加。这由一行上的一个破折号表示,在删除和添加之间


我不知道你会如何在这个库中实现它。我会尝试modList.remove,然后modList.add一个接一个,看看是否有效。

Petesh是正确的-抽象是在Novell库(以及未绑定的库)中实现的。我能够“upsert”值,为传入的每个属性使用Modify.REPLACE参数,为空值传递null。这有效地创建、更新和删除了属性,而无需首先解析它们。

Petesh是正确的-抽象是在Novell库(以及未绑定的库)中实现的。我能够“upsert”为每个传入的属性使用Modify.REPLACE参数,为空值传递null。这有效地创建、更新和删除了属性,而无需首先解析它们。

您发现了这个线程吗?我认为LDAP协议本身没有组合更新/插入的概念,因此图书馆只是一个猪的口红,你发现了这个线索吗?我不认为LDAP协议本身有一个组合的更新/插入的概念,所以图书馆所做的只是一个猪的口红。