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

📄 mappingreader.java

📁 定要上载质量高而定要上载质量高而定要上载质量高而定要上载质量高而定要上载质量高而
💻 JAVA
字号:
/*
 * Created on Jun 24, 2005
 */
package org.flexdock.docking.adapter;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
 * @author Christopher Butler
 * @deprecated This class will become package-private.
 */
public class MappingReader {
    private static Log log = LogFactory.getLog(MappingReader.class);

    public static final String ADAPTER_KEY = "adapter";

    public static final String CLASS_KEY = "class";

    public static final String METHOD_KEY = "method";

    public static final String FLEXDOCK_KEY = "flexdock";

    public static final String CLIENT_KEY = "client";

    public AdapterMapping[] readMappings(Document mappingDoc) {
        if (mappingDoc == null)
            return new AdapterMapping[0];

        NodeList nodes = mappingDoc.getElementsByTagName(ADAPTER_KEY);
        ArrayList mappings = new ArrayList(nodes.getLength());

        for (int i = 0; i < nodes.getLength(); i++) {
            Element elem = (Element) nodes.item(i);
            String className = elem.getAttribute(CLASS_KEY);
            if (className != null) {
                AdapterMapping mapping = createMapping(elem);
                mapping.setClassName(className);
                mappings.add(mapping);
            }
        }

        return (AdapterMapping[]) mappings.toArray(new AdapterMapping[0]);
    }

    private AdapterMapping createMapping(Element adapterElem) {
        NodeList nodes = adapterElem.getElementsByTagName(METHOD_KEY);
        String className = adapterElem.getAttribute(CLASS_KEY);
        Properties p = new Properties();
        
        for (int i = 0, len = nodes.getLength(); i < len; i++) {
            Element elem = (Element) nodes.item(i);
            String key = elem.getAttribute(FLEXDOCK_KEY);
            String value = elem.getAttribute(CLIENT_KEY);
            if (key != null && value != null)
                p.setProperty(key, value);
        }

        return createMapping(p);
    }

    private AdapterMapping createMapping(Properties props) {
        Method[] setters = AdapterMapping.class.getMethods();
        AdapterMapping mapping = new AdapterMapping();

        for (int i = 0; i < setters.length; i++) {
            String methodName = setters[i].getName();
            if (!methodName.startsWith("set"))
                continue;

            String key = Character.toLowerCase(methodName.charAt(3))
                    + methodName.substring(4);
            String clientMethod = props.getProperty(key);
            if (clientMethod == null)
                continue;

            Method setter = setters[i];
            try {
                setter.invoke(mapping, new Object[] { clientMethod });
            } catch (Exception e) {
                log.warn(e.getMessage(), e);
            }
        }

        return mapping;
    }
}

⌨️ 快捷键说明

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