Home » openjdk-7 » javax » naming » ldap » [javadoc | source]
abstract public class: ControlFactory [javadoc | source]
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.

 protected ControlFactory() 
Method from javax.naming.ldap.ControlFactory Summary:
getControlInstance,   getControlInstance
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from javax.naming.ldap.ControlFactory Detail:
 abstract public 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.

 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:

    • Use the control factories specified in the LdapContext.CONTROL_FACTORIES property of the environment, and of the provider resource file associated with ctx, in that order. The value of this property is a colon-separated list of factory class names that are tried in order, and the first one that succeeds in creating the control is the one used. If none of the factories can be loaded, return ctl. If an exception is encountered while creating the control, the exception is passed up to the caller.

    Note that a control factory must be public and must have a public constructor that accepts no arguments.