001: /*
002: * $Id: SecurityConfigUtil.java,v 1.1 2003/08/15 20:23:20 ajzeneski Exp $
003: *
004: * Copyright (c) 2002 The Open For Business Project and repected authors.
005: * Permission is hereby granted, free of charge, to any person obtaining a
006: * copy of this software and associated documentation files (the "Software"),
007: * to deal in the Software without restriction, including without limitation
008: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
009: * and/or sell copies of the Software, and to permit persons to whom the
010: * Software is furnished to do so, subject to the following conditions:
011: *
012: * The above copyright notice and this permission notice shall be included
013: * in all copies or substantial portions of the Software.
014: *
015: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
016: * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
017: * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
018: * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
019: * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
020: * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
021: * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
022: */
023: package org.ofbiz.base.config;
024:
025: import java.util.*;
026: import org.w3c.dom.*;
027: import org.ofbiz.base.util.*;
028:
029: /**
030: * <code>SecurityConfigUtil</code>
031: *
032: * This class allows the loading of a security implementation by a security context name.
033: * The security context name has to be specified in security.properties by the property name:
034: * security.context=
035: *
036: * The setup of custom security implementations can be customized in the security.xml file.
037: *
038: * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a>
039: * @version $Revision: 1.1 $
040: */
041: public class SecurityConfigUtil {
042:
043: public static final String module = SecurityConfigUtil.class
044: .getName();
045:
046: /** The security config filename */
047: public static final String SECURITY_CONFIG_XML_FILENAME = "security.xml";
048:
049: protected static Map securityInfos = new HashMap();
050:
051: /**
052: * Returns the XmlRootElement for the security config
053: *
054: * @return
055: * @throws GenericConfigException
056: */
057: public static Element getXmlRootElement()
058: throws GenericConfigException {
059: return ResourceLoader
060: .getXmlRootElement(SecurityConfigUtil.SECURITY_CONFIG_XML_FILENAME);
061: }
062:
063: /**
064: * Returns the XmlDocument for the security config
065: *
066: * @return
067: * @throws GenericConfigException
068: */
069: public static Document getXmlDocument()
070: throws GenericConfigException {
071: return ResourceLoader
072: .getXmlDocument(SecurityConfigUtil.SECURITY_CONFIG_XML_FILENAME);
073: }
074:
075: static {
076: try {
077: initialize(getXmlRootElement());
078: } catch (Exception e) {
079: Debug.logError(e, "Error loading Security config XML file "
080: + SECURITY_CONFIG_XML_FILENAME, module);
081: }
082: }
083:
084: /**
085: * Initializes the security configuration
086: *
087: * @param rootElement
088: * @throws GenericConfigException
089: */
090: public static void initialize(Element rootElement)
091: throws GenericConfigException {
092: List childElements = null;
093: Iterator elementIter = null;
094:
095: // security-config - securityInfos
096: childElements = UtilXml.childElementList(rootElement,
097: "security");
098: elementIter = childElements.iterator();
099: while (elementIter.hasNext()) {
100: Element curElement = (Element) elementIter.next();
101: SecurityConfigUtil.SecurityInfo securityInfo = new SecurityConfigUtil.SecurityInfo(
102: curElement);
103:
104: if (Debug.verboseOn())
105: Debug.logVerbose(
106: "LOADED SECURITY CONFIG FROM XML - NAME: "
107: + securityInfo.name + " ClassName: "
108: + securityInfo.className, module);
109: SecurityConfigUtil.securityInfos.put(securityInfo.name,
110: securityInfo);
111: }
112: }
113:
114: /**
115: * Returns the security config for a given name
116: *
117: * @param name
118: * @return
119: */
120: public static SecurityConfigUtil.SecurityInfo getSecurityInfo(
121: String name) {
122: return (SecurityConfigUtil.SecurityInfo) securityInfos
123: .get(name);
124: }
125:
126: /**
127: * <code>SecurityInfo</code>
128: */
129: public static class SecurityInfo {
130: public String name;
131: public String className;
132:
133: /**
134: * Creates a SecurityInfo for a given element
135: *
136: * @param element
137: */
138: public SecurityInfo(Element element) {
139: this .name = element.getAttribute("name");
140: this .className = element.getAttribute("class");
141: }
142: }
143: }
|