javax.naming.ldap
Class ControlFactory

java.lang.Object sample code for java.lang.Object definition code for java.lang.Object 
  extended by javax.naming.ldap.ControlFactory

public abstract class ControlFactory
extends Object sample code for java.lang.Object definition code for java.lang.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 sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control

Constructor Summary
protected ControlFactory sample code for javax.naming.ldap.ControlFactory.ControlFactory() definition code for javax.naming.ldap.ControlFactory.ControlFactory() ()
           
 
Method Summary
abstract  Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control getControlInstance sample code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control) definition code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control) (Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  ctl)
          Creates a control using this control factory.
static Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control getControlInstance sample code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control, javax.naming.Context, java.util.Hashtable) definition code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control, javax.naming.Context, java.util.Hashtable) (Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  ctl, Context sample code for javax.naming.Context definition code for javax.naming.Context  ctx, Hashtable sample code for java.util.Hashtable definition code for java.util.Hashtable <?,?> env)
          Creates a control using known control factories.
 
Methods inherited from class java.lang.Object sample code for java.lang.Object definition code for java.lang.Object
clone sample code for java.lang.Object.clone() definition code for java.lang.Object.clone() , equals sample code for java.lang.Object.equals(java.lang.Object) definition code for java.lang.Object.equals(java.lang.Object) , finalize sample code for java.lang.Object.finalize() definition code for java.lang.Object.finalize() , getClass sample code for java.lang.Object.getClass() definition code for java.lang.Object.getClass() , hashCode sample code for java.lang.Object.hashCode() definition code for java.lang.Object.hashCode() , notify sample code for java.lang.Object.notify() definition code for java.lang.Object.notify() , notifyAll sample code for java.lang.Object.notifyAll() definition code for java.lang.Object.notifyAll() , toString sample code for java.lang.Object.toString() definition code for java.lang.Object.toString() , wait sample code for java.lang.Object.wait() definition code for java.lang.Object.wait() , wait sample code for java.lang.Object.wait(long) definition code for java.lang.Object.wait(long) , wait sample code for java.lang.Object.wait(long, int) definition code for java.lang.Object.wait(long, int)
 

Constructor Detail

ControlFactory sample code for javax.naming.ldap.ControlFactory() definition code for javax.naming.ldap.ControlFactory()

protected ControlFactory()
Method Detail

getControlInstance sample code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control) definition code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control)

public abstract Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  getControlInstance(Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  ctl)
                                    throws NamingException sample code for javax.naming.NamingException definition code for javax.naming.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 sample code for javax.naming.NamingException definition code for javax.naming.NamingException - If ctl contains invalid data that prevents it from being used to create a control. A factory should only throw 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 sample code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control, javax.naming.Context, java.util.Hashtable<?, ?>) definition code for javax.naming.ldap.ControlFactory.getControlInstance(javax.naming.ldap.Control, javax.naming.Context, java.util.Hashtable<?, ?>)

public static Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  getControlInstance(Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control  ctl,
                                         Context sample code for javax.naming.Context definition code for javax.naming.Context  ctx,
                                         Hashtable sample code for java.util.Hashtable definition code for java.util.Hashtable <?,?> env)
                                  throws NamingException sample code for javax.naming.NamingException definition code for javax.naming.NamingException 
Creates a control using known control factories.

The following rule is used to create the control:

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

Parameters:
ctl - The non-null control object containing the OID and BER data.
ctx - The possibly null context in which the control is being created. If null, no such information is available.
env - The possibly null environment of the context. This is used to find the value of the LdapContext.CONTROL_FACTORIES property.
Returns:
A control object created using ctl; or ctl if a control object cannot be created using the algorithm described above.
Throws:
NamingException sample code for javax.naming.NamingException definition code for javax.naming.NamingException - if a naming exception was encountered while attempting to create the control object. If one of the factories accessed throws an exception, it is propagated up to the caller. If an error was encountered while loading and instantiating the factory and object classes, the exception is wrapped inside a NamingException and then rethrown.