LDAPJDK 4.1

netscape.ldap
Class LDAPExtendedOperation

java.lang.Object
  |
  +--netscape.ldap.LDAPExtendedOperation

public class LDAPExtendedOperation
extends java.lang.Object
implements java.io.Serializable

Version 3 of the LDAP protocol include the means to define additional operations ("extended operations") beyond the standard LDAP operations. An LDAP v3 client can send an extended operation request, identifying the operation by its unique object ID (OID). The server receives the request and if OID corresponds to an operation supported by the server, the server procoess the request and sends an extended operation response back to the client.

Objects of this class can be used to represent extended operation requests (sent by your client) or extended operation responses (returned by an LDAP v3 server).

To determine which extended operations are supported by a server, you need to search for the root DSE (DSA-specific entry, where DSA is another term for "LDAP server") and find the values of the supportedExtension attribute. This attribute contains the object IDs (OIDs) of the extended operations supported by this server.

The following section of code demonstrates how to get the list of the extended operations supported by an LDAP server.

 public static void main( String[] args )
 {
   LDAPConnection ld = new LDAPConnection();
   try {
     String MY_HOST = "localhost";
     int MY_PORT = 389;
     ld.connect( MY_HOST, MY_PORT );
     try {
       ld.authenticate( 3, "cn=Directory Manager", "23skidoo" );
     } catch( LDAPException e ) {
       System.out.println( "LDAP server does not support v3." );
       ld.disconnect();
       System.exit(1);
     }
     String MY_FILT = "(objectclass=*)";
     String MY_BASE = "";
     String getAttrs[] = { "supportedExtension" };
     LDAPSearchResults res = ld.search( MY_BASE,
       LDAPConnection.SCOPE_BASE, MY_FILT, getAttrs, false );
     while ( res.hasMoreElements() ) {
       LDAPEntry findEntry = (LDAPEntry)res.nextElement();
       LDAPAttributeSet findAttrs = findEntry.getAttributeSet();
       Enumeration enumAttrs = findAttrs.getAttributes();
         while ( enumAttrs.hasMoreElements() ) {
           LDAPAttribute anAttr = (LDAPAttribute)enumAttrs.nextElement();
           String attrName = anAttr.getName();
           System.out.println( attrName );
           Enumeration enumVals = anAttr.getStringValues();
           while ( enumVals.hasMoreElements() ) {
             String aVal = ( String )enumVals.nextElement();
             System.out.println( "\t" + aVal );
           }
         }
      }
   }
   catch( LDAPException e ) {
     System.out.println( "Error: " + e.toString() );
   }
   try {
     ld.disconnect();
   }
   catch( LDAPException e ) {
     System.exit(1);
   }
   System.exit(0);
 }
 

If you compile and run this example against an LDAP server that supports v3 of the protocol, you might receive the following results:

 supportedextension
   1.2.3.4
 

For more information on LDAP controls, see the Internet-Draft on the LDAP v3 protocol. (Note that this internet draft is still a work in progress. You can find the latest draft at the ASID home page.

See Also:
LDAPConnection.extendedOperation(netscape.ldap.LDAPExtendedOperation), LDAPConnection.search(java.lang.String, int, java.lang.String, java.lang.String[], boolean), Serialized Form

Constructor Summary
LDAPExtendedOperation(java.lang.String oid, byte[] vals)
          Construct an object
 
Method Summary
 java.lang.String getID()
          Get the identifier for this operation.
 byte[] getValue()
          Get the data for this operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LDAPExtendedOperation

public LDAPExtendedOperation(java.lang.String oid,
                             byte[] vals)
Construct an object
Parameters:
oid - identifier for the particular operation
vals - operation-specific data
Method Detail

getID

public java.lang.String getID()
Get the identifier for this operation.
Returns:
oid identifier for the particular operation.

getValue

public byte[] getValue()
Get the data for this operation.
Returns:
vals operation-specific data.

LDAPJDK 4.1