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

📄 jahiausermanagerroutingservice.java

📁 java 写的一个新闻发布系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    if (curProviderEntry instanceof String) {                        String curProviderKey = (String) curProviderEntry;                        UserManagerProviderBean curProviderBean =                            (UserManagerProviderBean) providersTable.get(curProviderKey);                        JahiaUserManagerProvider curProviderInstance = curProviderBean.getInstance();                        if (curProviderInstance != null) {                            tmpProviderInstances.add(curProviderInstance);                        }                    }                }            }        }        if (tmpProviderInstances.size() == 0) {            tmpProviderInstances = new Vector();            Iterator providerIter = sortedProviders.iterator ();            while (providerIter.hasNext()) {                UserManagerProviderBean curBean = (UserManagerProviderBean) providerIter.next ();                JahiaUserManagerProvider curProvider = curBean.getInstance();                tmpProviderInstances.add(curProvider);            }        }        return tmpProviderInstances;    }    private boolean loadConfiguration(String configFileName)    throws JahiaException {        Document documentRoot = null;        try {            DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();            // dfactory.setValidating(true); // create only parsers that are validating            DocumentBuilder docBuilder = dfactory.newDocumentBuilder();            FileInputStream configStream = new FileInputStream(configFileName);            documentRoot = docBuilder.parse(configStream);            documentRoot.normalize(); // clean up DOM tree a little        } catch (Throwable t) {            throw new JahiaException ("JahiaUserManagerRoutingService.loadConfiguration",                                      "Exception while loading configuration",                                      JahiaException.CRITICAL,                                      JahiaException.CONFIG_ERROR,                                      t);        }        Element rootTag = documentRoot.getDocumentElement();        if (!rootTag.getTagName ().equals (JahiaUserManagerRoutingService.XML_ROOT_TAG)) {            throw new JahiaException("JahiaUserManagerRoutingService.loadConfiguration",                                     "Invalid root tag in configuration. Expected " + this.XML_ROOT_TAG + ", found " + rootTag.getTagName(),                                     JahiaException.CRITICAL,                                     JahiaException.CONFIG_ERROR);        }        this.providersTable = getProvidersFromDOM( rootTag );        sortedProviders.addAll (providersTable.values ());        this.criteriaList = getCriteriasFromDOM( rootTag );        return true;    }    private Map getProvidersFromDOM( Element rootElement )    throws JahiaException {        Map result = new InsertionSortedMap ();        // we have to do copies because we cannot do nested node list parsing...        NodeList providerElementList = rootElement.getElementsByTagName (                JahiaUserManagerRoutingService.XML_PROVIDER_ROOT_TAG);        Vector providerElements = new Vector();        for (int i = 0; i < providerElementList.getLength(); i++) {            providerElements.add((Element) providerElementList.item(i));        }        Enumeration providerEnum = providerElements.elements();        int providerCounter = 0;        while (providerEnum.hasMoreElements()) {            Element curProviderElement = (Element) providerEnum.nextElement();            UserManagerProviderBean providerBean = getProviderFromDOM (curProviderElement,                    providerCounter);            if (providerBean != null) {                if (providerBean.getIsDefault()) {                    /** @todo FIXME : this is a class variable set, not very                     *  elegant... how can we avoid this ?                     */                    this.defaultProviderInstance = providerBean.getInstance();                }                result.put(providerBean.getKey(), providerBean);            }            providerCounter++;        }        return result;    }    private Vector getCriteriasFromDOM( Element rootElement )    throws JahiaException {        Vector result = new Vector();        // we have to do copies because we cannot do nested node list parsing...        NodeList criteriaElementList = rootElement.getElementsByTagName (                JahiaUserManagerRoutingService.XML_CRITERIA_ROOT_TAG);        Vector criteriaElements = new Vector();        for (int i = 0; i < criteriaElementList.getLength(); i++) {            criteriaElements.add((Element) criteriaElementList.item(i));        }        Enumeration criteriaEnum = criteriaElements.elements();        while (criteriaEnum.hasMoreElements()) {            Element curCriteriaElement = (Element) criteriaEnum.nextElement();            RoutingCriteria curCriteria = getCriteriaFromDOM(curCriteriaElement);            if (curCriteria != null) {                result.add(curCriteria);            }        }        return result;    }    /**     * Returns a UserManagerProviderBean from a XML DOM. Format :     * <provider>     *   <key>jahia_db</key>     *   <class>org.jahia.services.usermanager.JahiaUserManagerDBProvider</class>     *   <title>Jahia User Manager Database Provider</title>     *   <description>     *     ...     *   </description>     *   <is-default>true</is-default>     * </provider>     *     * @param providerElement the Element containing the tag for a provider     * DOM.     *     * @return UserManagerProviderBean a bean constructed by loading the values     * from the XML DOM.     *     * @throws JahiaException     */    private UserManagerProviderBean getProviderFromDOM (Element providerElement,                                                        int providerCounter)    throws JahiaException {        if (!providerElement.getTagName ().equals (                JahiaUserManagerRoutingService.XML_PROVIDER_ROOT_TAG)) {            throw new JahiaException("JahiaUserManagerRoutingService.getProviderFromDOM",                                     "May not call getProviderFromDOM on elements other than " + this.XML_PROVIDER_ROOT_TAG,                                     JahiaException.CRITICAL,                                     JahiaException.CONFIG_ERROR);        }        UserManagerProviderBean result = null;        String key = getElementValue (JahiaUserManagerRoutingService.XML_PROVIDER_KEY_TAG,                providerElement);        String className = getElementValue (                JahiaUserManagerRoutingService.XML_PROVIDER_CLASS_TAG, providerElement);        String title = getElementValue (JahiaUserManagerRoutingService.XML_PROVIDER_TITLE_TAG,                providerElement);        String description = getElementValue (                JahiaUserManagerRoutingService.XML_PROVIDER_DESCRIPTION_TAG, providerElement);        String isDefaultStr = getElementValue (                JahiaUserManagerRoutingService.XML_PROVIDER_ISDEFAULT_TAG, providerElement);        boolean isDefault = ("true".equals(isDefaultStr));        boolean isReadOnly = false;        try {            // this tag is currently optional, so if we don't find it we set it to false by default            String isReadOnlyStr = getElementValue (                    JahiaUserManagerRoutingService.XML_PROVIDER_ISREADONLY_TAG,                    providerElement);            isReadOnly = ("true".equals(isReadOnlyStr));        } catch (JahiaException je) {            JahiaConsole.println("JahiaUserManagerRoutingService.getProviderFromDOM",                                 "Warning : error loading tag <" +                                 this.XML_PROVIDER_ISREADONLY_TAG +                                 ">. Please update your configuration file to include it !");            isReadOnly = false;        }        int priority = 99;        try {            String priorityStr = getElementValue (                    JahiaUserManagerRoutingService.XML_PROVIDER_PRIORITY_TAG, providerElement);            priority = Integer.parseInt (priorityStr);        } catch (Exception e) {            // optional parameter, ignore exception            priority = providerCounter;        }        result =                new UserManagerProviderBean (key, className, title, description, isDefault,                        isReadOnly, priority);        return result;    }    /**     * Returns a RoutingCriteria from a XML DOM. Format :     * <criteria>     *   <key>jahia_db_criteria</key>     *   <description>     *     ...     *   </description>     *   <condition propertyName="user.key" propertyValue="{jahia_db}*"/>     *   <condition ... />     *   <provider-destination>jahia_db</provider-destination>     * </criteria>     *     * @param criteriaElement the Element containing the tag for a criteria     * DOM.     *     * @return UserManagerProviderBean a bean constructed by loading the values     * from the XML DOM.     *     * @throws JahiaException     */    private RoutingCriteria getCriteriaFromDOM (Element criteriaElement)    throws JahiaException {        RoutingCriteria result = null;        if (!criteriaElement.getTagName ().equals (                JahiaUserManagerRoutingService.XML_CRITERIA_ROOT_TAG)) {            throw new JahiaException("JahiaUserManagerRoutingService.getProviderFromDOM",                                     "May not call getCriteriaFromDOM on elements other than " + this.XML_CRITERIA_ROOT_TAG,                                     JahiaException.CRITICAL,                                     JahiaException.CONFIG_ERROR);        }        String key = getElementValue (JahiaUserManagerRoutingService.XML_CRITERIA_KEY_TAG,                criteriaElement);        String description = getElementValue (                JahiaUserManagerRoutingService.XML_CRITERIA_DESCRIPTION_TAG, criteriaElement);        Properties conditions = getConditionsFromDOM (criteriaElement);        String providerDestination = getElementValue (                JahiaUserManagerRoutingService.XML_CRITERIA_DESTINATION_TAG, criteriaElement);        result = new RoutingCriteria(key, description, conditions, providerDestination);        return result;    }    private Properties getConditionsFromDOM (Element criteriaElement)    throws JahiaException {        Properties result = new Properties();        NodeList criteriaElementList = criteriaElement.getElementsByTagName (                JahiaUserManagerRoutingService.XML_CRITERIA_CONDITION_TAG);        for (int i = 0; i < criteriaElementList.getLength(); i++) {            Element curConditionElement = (Element) criteriaElementList.item(i);            NamedNodeMap attrib = curConditionElement.getAttributes();            Node propertyNameAttrib = attrib.getNamedItem (                    JahiaUserManagerRoutingService.XML_CRITERIA_CONDITION_PROPNAME_ATTR);            if (propertyNameAttrib == null) {                throw new JahiaException("JahiaUserManagerRoutingService.getConditionsFromDOM",                                         this.XML_CRITERIA_CONDITION_PROPNAME_ATTR + " attribute not found on tag " + curConditionElement.getTagName(),                                         JahiaException.CRITICAL,                                         JahiaException.CONFIG_ERROR);            }            String propertyName = propertyNameAttrib.getNodeValue();            Node propertyValueAttrib = attrib.getNamedItem (                    JahiaUserManagerRoutingService.XML_CRITERIA_CONDITION_PROPVALUE_ATTR);            if (propertyValueAttrib == null) {                throw new JahiaException("JahiaUserManagerRoutingService.getConditionsFromDOM",                                         this.XML_CRITERIA_CONDITION_PROPVALUE_ATTR + " attribute not found on tag " + curConditionElement.getTagName(),                                         JahiaException.CRITICAL,                                         JahiaException.CONFIG_ERROR);            }            String propertyValue = propertyValueAttrib.getNodeValue();            result.setProperty(propertyName, propertyValue);        }        return result;    }    private String getElementTextValue (Element rootElement)    throws JahiaException {        NodeList childNodes = rootElement.getChildNodes();        StringBuffer result = new StringBuffer();        for (int i = 0; i < childNodes.getLength(); i++) {            if (childNodes.item(i).getNodeType() == Node.TEXT_NODE) {                result.append(childNodes.item(i).getNodeValue());            } else {                throw new JahiaException("JahiaUserManagerRoutingService.getElementTextValue",                                         "Only text values are allowed in tag " + rootElement.getTagName(),                                         JahiaException.CRITICAL,                                         JahiaException.CONFIG_ERROR);            }        }        return result.toString();    }    private String getElementValue(String tagName, Element parentElement)    throws JahiaException {        NodeList foundElements = parentElement.getElementsByTagName(tagName);        if (foundElements.getLength() == 1) {            return getElementTextValue((Element)foundElements.item(0));        } else {            if (foundElements.getLength() != 0) {                throw new JahiaException("JahiaUserManagerRoutingService.getElementValue",                                         "Only one <" + tagName + "> is allowed in a <" + parentElement.getTagName() + "> tag.",                                         JahiaException.CRITICAL,                                         JahiaException.CONFIG_ERROR);            } else {                throw new JahiaException("JahiaUserManagerRoutingService.getElementValue",                                         "Couldn't find tag <" + tagName + "> in <" + parentElement.getTagName() + "> tag.",                                         JahiaException.CRITICAL,                                         JahiaException.CONFIG_ERROR);            }        }    }}

⌨️ 快捷键说明

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