Modifier | Constructor and Description |
---|---|
protected |
ControlFactory()
创建控件工厂的一个新实例。
|
public abstract Control getControlInstance(Control ctl) throws NamingException
本厂是由服务提供者用来返回控件,它读取LDAP协议作为控制类专业。如果没有这个机制,提供程序将返回只包含在误码率编码格式中的数据的控件。
通常情况下,ctl是一个“基本”控制含有BER编码的数据。工厂是用来创建一个专门的控制实现,通常是通过解码的的的的比特率编码的数据,提供的方法来访问该数据在一个类型的安全和友好的方式。
例如,一个工厂可以使用BER编码的基本控制数据并返回一个virtuallistreplycontrol实例。
如果这个工厂不能创建一个使用提供的参数的控件,则该控件将返回空值。工厂应该只抛出一个例外,如果它是肯定的,它是唯一的工厂,没有其他控制工厂应尝试。这可能发生,例如,如果在控制系统数据不匹配是一个给定的OID控制预期。由于该方法抛出NamingException,其他内部产生的异常应传播必须包裹在NamingException。
ctl
-一个非空的控制。
NamingException
-如果
ctl包含无效数据,防止它被用来创建一个控制。工厂应该抛出一个异常,如果它知道如何生产控制(通过OID标识)但不能因为,例如误码数据无效。
public static Control getControlInstance(Control ctl, Context ctx, Hashtable<?,?> env) throws NamingException
下面的规则用于创建控件:
ctl
。如果在创建控件时遇到异常,则向调用方传递异常。请注意,一个控件工厂必须是公共的,必须有一个不接受参数的公共构造函数。
ctl
OID和误码率的数据非零的控制对象。
ctx
-可能的空背景的控制被创建。如果为空,没有这样的信息是可用的。
env
-上下文可能的空环境。这是用来发现的
LdapContext.CONTROL_FACTORIES属性的值。
ctl
创建了一个控制对象;或
ctl
如果控制对象不能使用上述算法创建的。
NamingException
-如果在尝试建立控制对象遇到的是一个命名的例外。如果一个工厂访问了抛出异常,则将其传播到调用方。如果加载和实例化对象的类工厂时遇到了一个错误,唯一的例外是包裹在一个
NamingException然后重抛出。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.