Listing 4: Update.java — Modifies an object in the directory

package jndisamples;

import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;

public class Update {
  public static void main(String[] args) {
    try{
      InitialDirContext root =
        login("127.0.0.1", "cn=mseaver,ou=HR,o=SLC",
              "password");

      DirContext ctx = 
        (DirContext)root.lookup("cn=mseaver,ou=HR,o=SLC");
      ModificationItem[] mods = new ModificationItem[3];
      Attribute oldName = new BasicAttribute("givenName",
                                             "James");
      Attribute newName = new BasicAttribute("givenName",
                                             "Jimmy");
      Attribute newFull =
        new BasicAttribute("fullName", "Michael Jimmy Seaver");
      mods[0] =
        new ModificationItem(DirContext.REMOVE_ATTRIBUTE,
                             oldName);
      mods[1] =
        new ModificationItem(DirContext.ADD_ATTRIBUTE, newName);
      mods[2] =
        new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
                             newFull);
      ctx.modifyAttributes("", mods);
      System.out.println("Modification Successful");
      root.close();

    }catch(NamingException ex){
      System.out.println("Error: " + ex);
    }
  }

  private static InitialDirContext
  login(String ipaddr, String user, String password)
      throws NamingException{
    Hashtable environment = new Hashtable();
    environment.put(Context.INITIAL_CONTEXT_FACTORY, 
                    "com.sun.jndi.ldap.LdapCtxFactory");
    environment.put(Context.PROVIDER_URL,
                    "ldap://" + ipaddr + ":389");
    environment.put(Context.SECURITY_PRINCIPAL, user);
    environment.put(Context.SECURITY_CREDENTIALS, password);
    environment.put(Context.SECURITY_AUTHENTICATION, "simple");

    InitialDirContext root = new InitialDirContext(environment);
    System.out.println("Successfully Logged-In");

    return root;
  }
}

/* Output:
Successfully Logged-In
Modification Successful
*/
— End of Listing —