JavaTM 2 Platform
Std. Ed. v1.3

javax.naming.ldap
Class ControlFactory

java.lang.Object
  |
  +--javax.naming.ldap.ControlFactory

public abstract class ControlFactory
extends Object

This abstract class represents a factory for creating LDAPv3 controls. LDAPv3 controls are defined in RFC 2251.

When a service provider receives a response control, it uses control factories to return the specific/appropriate control class implementation.

Since:
1.3
See Also:
Control

Constructor Summary
protected ControlFactory()
           
 
Method Summary
abstract  Control getControlInstance(Control ctl)
          Creates a control using this control factory.
static Control getControlInstance(Control ctl, Context ctx, Hashtable env)
          Creates a control using known control factories.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ControlFactory

protected ControlFactory()
Method Detail

getControlInstance

public abstract Control getControlInstance(Control ctl)
                                    throws NamingException
Creates a control using this control factory.

The factory is used by the service provider to return controls that it reads from the LDAP protocol as specialized control classes. Without this mechanism, the provider would be returning controls that only contained data in BER encoded format.

Typically, ctl is a "basic" control containing BER encoded data. The factory is used to create a specialized control implementation, usually by decoding the BER encoded data, that provides methods to access that data in a type-safe and friendly manner.

For example, a factory might use the BER encoded data in basic control and return an instance of a VirtualListReplyControl.

If this factory cannot create a control using the argument supplied, it should return null. A factory should only throw an exception if it is sure that it is the only intended factory and that no other control factories should be tried. This might happen, for example, if the BER data in the control does not match what is expected of a control with the given OID. Since this method throws NamingException, any other internally generated exception that should be propagated must be wrapped inside a NamingException.

Parameters:
ctl - A non-null control.
Returns:
A possibly null Control.
Throws:
NamingException - If ctl contains invalid data that prevents it from being used to create a control. A factory should only thrown an exception if it knows how to produce the control (identified by the OID) but is unable to because of, for example invalid BER data.

getControlInstance

public static Control getControlInstance(Control ctl,
                                         Context ctx,
                                         Hashtable env)
                                  throws NamingException
Creates a control using known control factories.

The following rule is used to create the control:


JavaTM 2 Platform
Std. Ed. v1.3

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.