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
 
 -