Package org.springframework.ldap.control
Class AbstractFallbackRequestAndResponseControlDirContextProcessor
java.lang.Object
org.springframework.ldap.control.AbstractRequestControlDirContextProcessor
org.springframework.ldap.control.AbstractFallbackRequestAndResponseControlDirContextProcessor
- All Implemented Interfaces:
DirContextProcessor
- Direct Known Subclasses:
PagedResultsDirContextProcessor,SortControlDirContextProcessor,VirtualListViewControlDirContextProcessor
public abstract class AbstractFallbackRequestAndResponseControlDirContextProcessor
extends AbstractRequestControlDirContextProcessor
Convenient base class useful when implementing a standard DirContextProcessor
which has a request control and a response control. It handles the loading of
the control classes, using fallback implementations specified by the subclass
if necessary. It handles the request control constructor invocation; it only
needs the constructor arguments to be provided. It also handles most of the
work in the post processing of the response control, only delegating to a
template method for the actual value retrieval. In short, it makes it easy to
implement a custom DirContextProcessor.
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();
}
}
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected Stringprotected Stringprotected Stringprotected Stringprotected Class<?>protected Class<?>Fields inherited from class org.springframework.ldap.control.AbstractRequestControlDirContextProcessor
log -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateRequestControl(Class<?>[] paramTypes, Object[] params) Creates a request control using the constructor parameters given inparams.protected abstract voidhandleResponse(Object control) protected ObjectinvokeMethod(String method, Class<?> clazz, Object control) Utility method for invoking a method on a Control.protected voidvoidpostProcess(DirContext ctx) Perform post-processing on the suppliedDirContext.voidsetCritical(boolean critical) Set whether this control should be indicated as critical.voidsetRequestControlClass(Class<?> requestControlClass) voidsetResponseControlClass(Class<?> responseControlClass) Set the class of the expected ResponseControl for the sorted result response.Methods inherited from class org.springframework.ldap.control.AbstractRequestControlDirContextProcessor
createRequestControl, isReplaceSameControlEnabled, preProcess, setReplaceSameControlEnabled
-
Field Details
-
responseControlClass
-
requestControlClass
-
critical
protected boolean critical -
defaultRequestControl
-
defaultResponseControl
-
fallbackRequestControl
-
fallbackResponseControl
-
-
Constructor Details
-
AbstractFallbackRequestAndResponseControlDirContextProcessor
public AbstractFallbackRequestAndResponseControlDirContextProcessor()
-
-
Method Details
-
loadControlClasses
protected void loadControlClasses() -
setResponseControlClass
Set the class of the expected ResponseControl for the sorted result response.- Parameters:
responseControlClass- Class of the expected response control.
-
setRequestControlClass
-
invokeMethod
Utility method for invoking a method on a Control.- Parameters:
method- name of method to invokeclazz- Class of the object that the method should be invoked oncontrol- Instance that the method should be invoked on- Returns:
- the invocation result, if any
-
createRequestControl
Creates a request control using the constructor parameters given inparams.- Parameters:
paramTypes- Types of the constructor parametersparams- Actual constructor parameters- Returns:
- Control to be used by the DirContextProcessor
-
postProcess
Description copied from interface:DirContextProcessorPerform post-processing on the suppliedDirContext.- Parameters:
ctx- theDirContextinstance.- Throws:
NamingException- if thrown by the underlying operation.
-
setCritical
public void setCritical(boolean critical) Set whether this control should be indicated as critical.- Parameters:
critical- whether the control is critical.- Since:
- 2.0
-
handleResponse
-