public abstract class AbstractFallbackRequestAndResponseControlDirContextProcessor extends AbstractRequestControlDirContextProcessor
public class SortControlDirContextProcessor extends AbstractFallbackRequestAndResponseControlDirContextProcessor {
String sortKey;
private boolean sorted = false;
private int resultCode = -1;
public SortControlDirContextProcessor(String sortKey) {
this.sortKey = sortKey;
defaultRequestControl = "javax.naming.ldap.SortControl";
defaultResponseControl = "com.sun.jndi.ldap.ctl.SortControl";
fallbackRequestControl = "javax.naming.ldap.SortResponseControl";
fallbackResponseControl = "com.sun.jndi.ldap.ctl.SortResponseControl";
loadControlClasses();
}
public boolean isSorted() {
return sorted;
}
public int getResultCode() {
return resultCode;
}
public Control createRequestControl() {
return super.createRequestControl(new Class[] { String[].class, boolean.class }, new Object[] {
new String[] { sortKey }, Boolean.valueOf(critical) });
}
protected void handleResponse(Object control) {
Boolean result = (Boolean) invokeMethod("isSorted", responseControlClass, control);
this.sorted = result.booleanValue();
Integer code = (Integer) invokeMethod("getResultCode", responseControlClass, control);
resultCode = code.intValue();
}
}
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
critical |
protected java.lang.String |
defaultRequestControl |
protected java.lang.String |
defaultResponseControl |
protected java.lang.String |
fallbackRequestControl |
protected java.lang.String |
fallbackResponseControl |
protected java.lang.Class |
requestControlClass |
protected java.lang.Class |
responseControlClass |
log| Constructor and Description |
|---|
AbstractFallbackRequestAndResponseControlDirContextProcessor() |
| Modifier and Type | Method and Description |
|---|---|
javax.naming.ldap.Control |
createRequestControl(java.lang.Class[] paramTypes,
java.lang.Object[] params)
Creates a request control using the constructor parameters given in
params. |
protected abstract void |
handleResponse(java.lang.Object control) |
protected java.lang.Object |
invokeMethod(java.lang.String method,
java.lang.Class clazz,
java.lang.Object control)
Utility method for invoking a method on a Control.
|
protected void |
loadControlClasses() |
void |
postProcess(javax.naming.directory.DirContext ctx)
Perform post-processing on the supplied
DirContext. |
void |
setRequestControlClass(java.lang.Class requestControlClass) |
void |
setResponseControlClass(java.lang.Class responseControlClass)
Set the class of the expected ResponseControl for the sorted result
response.
|
createRequestControl, isReplaceSameControlEnabled, preProcess, setReplaceSameControlEnabledprotected java.lang.Class responseControlClass
protected java.lang.Class requestControlClass
protected boolean critical
protected java.lang.String defaultRequestControl
protected java.lang.String defaultResponseControl
protected java.lang.String fallbackRequestControl
protected java.lang.String fallbackResponseControl
public AbstractFallbackRequestAndResponseControlDirContextProcessor()
protected void loadControlClasses()
public void setResponseControlClass(java.lang.Class responseControlClass)
responseControlClass - Class of the expected response control.public void setRequestControlClass(java.lang.Class requestControlClass)
protected java.lang.Object invokeMethod(java.lang.String method,
java.lang.Class clazz,
java.lang.Object control)
method - name of method to invokeclazz - Class of the object that the method should be invoked oncontrol - Instance that the method should be invoked onpublic javax.naming.ldap.Control createRequestControl(java.lang.Class[] paramTypes,
java.lang.Object[] params)
params.paramTypes - Types of the constructor parametersparams - Actual constructor parameterspublic void postProcess(javax.naming.directory.DirContext ctx)
throws javax.naming.NamingException
DirContextProcessorDirContext.ctx - the DirContext instance.javax.naming.NamingException - if thrown by the underlying operation.protected abstract void handleResponse(java.lang.Object control)