package org.springframework.ldap.core;
import javax.naming.Binding;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import java.util.List;
public interface LdapOperations {
// <T> T executeReadWrite(ContextExecutor<T> ce) throws NamingException;
void search(Name base, String filter, SearchControls controls, NameClassPairCallbackHandler handler)
throws NamingException;
void search(String base, String filter, SearchControls controls, NameClassPairCallbackHandler handler)
throws NamingException;
void search(Name base, String filter, SearchControls controls, NameClassPairCallbackHandler handler,
DirContextProcessor processor) throws NamingException;
<T> List<T> search(String base, String filter, SearchControls controls, AttributesMapper<T> mapper,
DirContextProcessor processor) throws NamingException;
<T> List<T> search(Name base, String filter, SearchControls controls, AttributesMapper<T> mapper,
DirContextProcessor processor) throws NamingException;
<T> List<T> search(String base, String filter, SearchControls controls, ContextMapper<T> mapper, DirContextProcessor processor)
throws NamingException;
<T> List<T> search(Name base, String filter, SearchControls controls, ContextMapper<T> mapper, DirContextProcessor processor)
throws NamingException;
void search(String base, String filter, SearchControls controls, NameClassPairCallbackHandler handler,
DirContextProcessor processor) throws NamingException;
void search(Name base, String filter, int searchScope, boolean returningObjFlag,
NameClassPairCallbackHandler handler) throws NamingException;
void search(String base, String filter, int searchScope, boolean returningObjFlag,
NameClassPairCallbackHandler handler) throws NamingException;
void search(Name base, String filter, NameClassPairCallbackHandler handler) throws NamingException;
void search(String base, String filter, NameClassPairCallbackHandler handler) throws NamingException;
<T> List<T> search(Name base, String filter, int searchScope, String[] attrs, AttributesMapper<T> mapper)
throws NamingException;
<T> List<T> search(String base, String filter, int searchScope, String[] attrs, AttributesMapper<T> mapper)
throws NamingException;
<T> List<T> search(Name base, String filter, int searchScope, AttributesMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, int searchScope, AttributesMapper<T> mapper) throws NamingException;
<T> List<T> search(Name base, String filter, AttributesMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, AttributesMapper<T> mapper) throws NamingException;
<T> List<T> search(Name base, String filter, int searchScope, String[] attrs, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, int searchScope, String[] attrs, ContextMapper<T> mapper)
throws NamingException;
<T> List<T> search(Name base, String filter, int searchScope, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, int searchScope, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(Name base, String filter, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, SearchControls controls, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(Name base, String filter, SearchControls controls, ContextMapper<T> mapper) throws NamingException;
<T> List<T> search(String base, String filter, SearchControls controls, AttributesMapper<T> mapper) throws NamingException;
<T> List<T> search(Name base, String filter, SearchControls controls, AttributesMapper<T> mapper) throws NamingException;
void list(String base, NameClassPairCallbackHandler handler) throws NamingException;
void list(Name base, NameClassPairCallbackHandler handler) throws NamingException;
<T> List<T> list(String base, NameClassPairMapper<T> mapper) throws NamingException;
<T> List<T> list(Name base, NameClassPairMapper<T> mapper) throws NamingException;
List<String> list(String base) throws NamingException;
List<String> list(Name base) throws NamingException;
void listBindings(final String base, NameClassPairCallbackHandler handler) throws NamingException;
void listBindings(final Name base, NameClassPairCallbackHandler handler) throws NamingException;
<T> List<T> listBindings(String base, NameClassPairMapper<T> mapper) throws NamingException;
<T> List<T> listBindings(Name base, NameClassPairMapper<T> mapper) throws NamingException;
List<String> listBindings(final String base) throws NamingException;
List<String> listBindings(final Name base) throws NamingException;
<T> List<T> listBindings(String base, ContextMapper<T> mapper) throws NamingException;
<T> List<T> listBindings(Name base, ContextMapper<T> mapper) throws NamingException;
Object lookup(Name dn) throws NamingException;
Object lookup(String dn) throws NamingException;
<T> T lookup(String dn, AttributesMapper<T> mapper) throws NamingException;
<T> T lookup(String dn, ContextMapper<T> mapper) throws NamingException;
<T> T lookup(String dn, String[] attributes, AttributesMapper<T> mapper) throws NamingException;
<T> T lookup(String dn, String[] attributes, ContextMapper<T> mapper) throws NamingException;
// void modifyAttributes(String dn, ModificationItem[] mods) throws NamingException;
//
// void bind(Name dn, Object obj, Attributes attributes) throws NamingException;
//
// void bind(String dn, Object obj, Attributes attributes) throws NamingException;
//
// void unbind(Name dn) throws NamingException;
//
// void unbind(String dn) throws NamingException;
//
// void unbind(String dn, boolean recursive) throws NamingException;
//
// void rebind(String dn, Object obj, Attributes attributes) throws NamingException;
//
// void rename(final String oldDn, final String newDn) throws NamingException;
//
// DirContextOperations lookupContext(String dn) throws NamingException, ClassCastException;
// boolean authenticate(String base, String filter, String password);
//
// boolean authenticate(String base, String filter, String password, AuthenticatedLdapEntryContextCallback callback);
//
//
// boolean authenticate(String base, String filter, String password,
// AuthenticatedLdapEntryContextCallback callback,
// AuthenticationErrorCallback errorCallback);
//
// boolean authenticate(String base, String filter, String password,
// AuthenticationErrorCallback errorCallback);
<T> T searchForObject(String base, String filter, SearchControls searchControls, ContextMapper<T> mapper);
<T> T searchForObject(String base, String filter, ContextMapper<T> mapper);
}