⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldaphandler.java

📁 jConfig,JAVA读取XML的开源项目
💻 JAVA
字号:
/*
 * LDAPHandler.java
 *
 * Created on 8. Dezember 2002, 23:44
 */

package org.jconfig.handler;

//import java.util.Vector;
//import java.util.HashMap;
import java.io.InputStream;
import java.util.Hashtable;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

import org.jconfig.Configuration;
import org.jconfig.ConfigurationManagerException;
import org.jconfig.DefaultConfiguration;
import org.jconfig.error.ErrorReporter;
import org.jconfig.parser.ConfigurationParser;

/**
 *
 * @author  Administrator
 */
public class LDAPHandler implements ConfigurationHandler {
    
    private String baseDN;
    
    public LDAPHandler() {
    }
    
    /** This method should read the configuration and then
     * set the categories and properties.
     * @throws ConfigurationManagerException
     */
    public Configuration load(String configurationName) throws ConfigurationManagerException {    
        InitialDirContext ctx = getContext();
        if ( ctx == null ) {
            throw new ConfigurationManagerException("There is no connection to the LDAP server");
        }
        Configuration config = new DefaultConfiguration(null);
        getCategories(ctx,config);
        getAllProperties(ctx,config);
        return config;
    }
    
    private void getCategories(InitialDirContext ctx,Configuration config) {
        try {
            SearchControls sctrl = new SearchControls();
            String filter = "(&(objectclass=organizationalUnit)(ou=*))";                        
            NamingEnumeration enm = ctx.search(baseDN, filter, sctrl);
            while (enm.hasMore()) {
                SearchResult sr = (SearchResult) enm.next();                
                config.setCategory(sr.getName());                
            }

        } catch (Exception e) {   
        	ErrorReporter.getErrorHandler().reportError(e.getLocalizedMessage(), e);
        }
    }

    private void getAllProperties(InitialDirContext ctx,Configuration config) {
    }

    /** This method should store all categories and properties.
     * @throws ConfigurationManagerException
     */
    public void store() throws ConfigurationManagerException {
        throw new RuntimeException("not yet implemented");
    }
    
    private InitialDirContext getContext() {
        Properties props = new Properties();
        try {
            InputStream is = getClass().getClassLoader().getResourceAsStream("ldap.properties");
            if ( is == null ) {
                return null;
            }
            props.load(is);
            Hashtable env = new Hashtable();
            // alle n鰐igen Parameter in die Hashtable eintragen. Die Werte kommen aus der config.xml
            env.put(Context.INITIAL_CONTEXT_FACTORY, props.getProperty("Context", ""));
            env.put(Context.PROVIDER_URL, props.getProperty("Host", ""));
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
            env.put(Context.SECURITY_PRINCIPAL, props.getProperty("RootDN", ""));
            env.put(Context.SECURITY_CREDENTIALS, props.getProperty("Password", ""));
            baseDN = props.getProperty("BaseDN","");
            return new InitialDirContext(env);
        }
        catch (Exception e) {
        	ErrorReporter.getErrorHandler().reportError(e.getLocalizedMessage(), e);
            return null;
        }
    }
    
    /** This method should store all categories and properties.
     * @throws ConfigurationManagerException
     */
    public void store(Configuration configuration) throws ConfigurationManagerException {
    	throw new RuntimeException("not yet implemented");
    }
	
	public Configuration load(String configurationName, ConfigurationParser parser) throws ConfigurationManagerException {
		throw new ConfigurationManagerException("Using a specific parser with this handler is not supported");
	}
        
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -