📄 componentconfig.java
字号:
/* * $Id: ComponentConfig.java 5596 2005-08-26 01:36:06Z jaz $ * * Copyright (c) 2003-2005 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */package org.ofbiz.base.component;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.Collection;import java.util.Comparator;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.TreeMap;import javax.xml.parsers.ParserConfigurationException;import javolution.util.FastList;import javolution.util.FastMap;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilURL;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.UtilXml;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.xml.sax.SAXException;/** * ComponentConfig - Component configuration class for ofbiz-container.xml * * @author <a href="mailto:jonesde@ofbiz.org">David E. Jones</a> * @author <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version $Rev: 5596 $ * @since 3.0 */public class ComponentConfig { public static final String module = ComponentConfig.class.getName(); public static final String OFBIZ_COMPONENT_XML_FILENAME = "ofbiz-component.xml"; // this is not a UtilCache because reloading may cause problems protected static Map componentConfigs = FastMap.newInstance(); protected static Map serverWebApps = FastMap.newInstance(); public static ComponentConfig getComponentConfig(String globalName) throws ComponentException { // TODO: we need to look up the rootLocation from the container config, or this will blow up return getComponentConfig(globalName, null); } public static ComponentConfig getComponentConfig(String globalName, String rootLocation) throws ComponentException { ComponentConfig componentConfig = null; if (UtilValidate.isNotEmpty(globalName)) { componentConfig = (ComponentConfig) componentConfigs.get(globalName); } if (componentConfig == null) { if (rootLocation != null) { synchronized (ComponentConfig.class) { if (UtilValidate.isNotEmpty(globalName)) { componentConfig = (ComponentConfig) componentConfigs.get(globalName); } if (componentConfig == null) { componentConfig = new ComponentConfig(globalName, rootLocation); if (componentConfigs.containsKey(componentConfig.getGlobalName())) { Debug.logWarning("WARNING: Loading ofbiz-component using a global name that already exists, will over-write: " + componentConfig.getGlobalName(), module); } if (componentConfig.enabled()) { componentConfigs.put(componentConfig.getGlobalName(), componentConfig); } } } } else { throw new ComponentException("No component found named : " + globalName); } } return componentConfig; } public static Collection getAllComponents() { Collection values = componentConfigs.values(); if (values != null) { return values; } else { Debug.logWarning("No components were found, something is probably missing or incorrect in the component-load setup.", module); return FastList.newInstance(); } } public static List getAllClasspathInfos() { List classpaths = FastList.newInstance(); Iterator i = getAllComponents().iterator(); while (i.hasNext()) { ComponentConfig cc = (ComponentConfig) i.next(); classpaths.addAll(cc.getClasspathInfos()); } return classpaths; } public static List getAllEntityResourceInfos(String type) { List entityInfos = FastList.newInstance(); Iterator i = getAllComponents().iterator(); while (i.hasNext()) { ComponentConfig cc = (ComponentConfig) i.next(); List ccEntityInfoList = cc.getEntityResourceInfos(); if (UtilValidate.isEmpty(type)) { entityInfos.addAll(ccEntityInfoList); } else { Iterator ccEntityInfoIter = ccEntityInfoList.iterator(); while (ccEntityInfoIter.hasNext()) { EntityResourceInfo entityResourceInfo = (EntityResourceInfo) ccEntityInfoIter.next(); if (type.equals(entityResourceInfo.type)) { entityInfos.add(entityResourceInfo); } } } } return entityInfos; } public static List getAllServiceResourceInfos(String type) { List serviceInfos = FastList.newInstance(); Iterator i = getAllComponents().iterator(); while (i.hasNext()) { ComponentConfig cc = (ComponentConfig) i.next(); List ccServiceInfoList = cc.getServiceResourceInfos(); if (UtilValidate.isEmpty(type)) { serviceInfos.addAll(ccServiceInfoList); } else { Iterator ccServiceInfoIter = ccServiceInfoList.iterator(); while (ccServiceInfoIter.hasNext()) { ServiceResourceInfo serviceResourceInfo = (ServiceResourceInfo) ccServiceInfoIter.next(); if (type.equals(serviceResourceInfo.type)) { serviceInfos.add(serviceResourceInfo); } } } } return serviceInfos; } public static List getAllWebappResourceInfos() { List webappInfos = FastList.newInstance(); Iterator i = getAllComponents().iterator(); while (i.hasNext()) { ComponentConfig cc = (ComponentConfig) i.next(); webappInfos.addAll(cc.getWebappInfos()); } return webappInfos; } public static boolean isFileResourceLoader(String componentName, String resourceLoaderName) throws ComponentException { ComponentConfig cc = ComponentConfig.getComponentConfig(componentName); if (cc == null) { throw new ComponentException("Could not find component with name: " + componentName); } return cc.isFileResourceLoader(resourceLoaderName); } public static InputStream getStream(String componentName, String resourceLoaderName, String location) throws ComponentException { ComponentConfig cc = ComponentConfig.getComponentConfig(componentName); if (cc == null) { throw new ComponentException("Could not find component with name: " + componentName); } return cc.getStream(resourceLoaderName, location); } public static URL getURL(String componentName, String resourceLoaderName, String location) throws ComponentException { ComponentConfig cc = ComponentConfig.getComponentConfig(componentName); if (cc == null) { throw new ComponentException("Could not find component with name: " + componentName); } return cc.getURL(resourceLoaderName, location); } public static String getFullLocation(String componentName, String resourceLoaderName, String location) throws ComponentException { ComponentConfig cc = ComponentConfig.getComponentConfig(componentName); if (cc == null) { throw new ComponentException("Could not find component with name: " + componentName); } return cc.getFullLocation(resourceLoaderName, location); } public static String getRootLocation(String componentName) throws ComponentException { ComponentConfig cc = ComponentConfig.getComponentConfig(componentName); if (cc == null) { throw new ComponentException("Could not find component with name: " + componentName); } return cc.getRootLocation(); } public static List getAppBarWebInfos(String serverName) { return ComponentConfig.getAppBarWebInfos(serverName, null); } public static List getAppBarWebInfos(String serverName, Comparator comp) { List webInfos = (List) serverWebApps.get(serverName); if (webInfos == null) { synchronized (ComponentConfig.class) { if (webInfos == null) { Map tm = null; Iterator i = getAllComponents().iterator(); // use a TreeMap to sort the components alpha by title if (comp != null) { tm = new TreeMap(comp); } else { tm = new TreeMap(); } while (i.hasNext()) { ComponentConfig cc = (ComponentConfig) i.next(); Iterator wi = cc.getWebappInfos().iterator(); while (wi.hasNext()) { ComponentConfig.WebappInfo wInfo = (ComponentConfig.WebappInfo) wi.next(); if (serverName.equals(wInfo.server) && wInfo.appBarDisplay) { tm.put(wInfo.title, wInfo); } } } List webInfoList = FastList.newInstance(); webInfoList.addAll(tm.values()); serverWebApps.put(serverName, webInfoList); return webInfoList; } } } return webInfos; } public static WebappInfo getWebAppInfo(String serverName, String contextRoot) { ComponentConfig.WebappInfo info = null; if (serverName == null || contextRoot == null) { return info; } Iterator i = getAllComponents().iterator(); while (i.hasNext() && info == null) { ComponentConfig cc = (ComponentConfig) i.next(); Iterator wi = cc.getWebappInfos().iterator(); while (wi.hasNext()) { ComponentConfig.WebappInfo wInfo = (ComponentConfig.WebappInfo) wi.next(); if (serverName.equals(wInfo.server) && contextRoot.equals(wInfo.getContextRoot())) { info = wInfo; } } } return info; } // ========== component info fields ========== protected String globalName = null; protected String rootLocation = null; protected String componentName = null; protected boolean enabled = true; protected Map resourceLoaderInfos = FastMap.newInstance(); protected List classpathInfos = FastList.newInstance(); protected List entityResourceInfos = FastList.newInstance(); protected List serviceResourceInfos = FastList.newInstance(); protected List webappInfos = FastList.newInstance(); protected ComponentConfig() {} protected ComponentConfig(String globalName, String rootLocation) throws ComponentException { this.globalName = globalName; if (!rootLocation.endsWith("/")) { rootLocation = rootLocation + "/"; } this.rootLocation = rootLocation.replace('\\', '/'); File rootLocationDir = new File(rootLocation); if (rootLocationDir == null) { throw new ComponentException("The given component root location is does not exist: " + rootLocation); } if (!rootLocationDir.isDirectory()) { throw new ComponentException("The given component root location is not a directory: " + rootLocation); } String xmlFilename = rootLocation + "/" + OFBIZ_COMPONENT_XML_FILENAME; URL xmlUrl = UtilURL.fromFilename(xmlFilename); if (xmlUrl == null) { throw new ComponentException("Could not find the " + OFBIZ_COMPONENT_XML_FILENAME + " configuration file in the component root location: " + rootLocation); } Document ofbizComponentDocument = null; try { ofbizComponentDocument = UtilXml.readXmlDocument(xmlUrl, true); } catch (SAXException e) { throw new ComponentException("Error reading the component config file: " + xmlUrl, e); } catch (ParserConfigurationException e) { throw new ComponentException("Error reading the component config file: " + xmlUrl, e); } catch (IOException e) { throw new ComponentException("Error reading the component config file: " + xmlUrl, e); } Element ofbizComponentElement = ofbizComponentDocument.getDocumentElement(); this.componentName = ofbizComponentElement.getAttribute("name"); this.enabled = "true".equalsIgnoreCase(ofbizComponentElement.getAttribute("enabled")); if (UtilValidate.isEmpty(this.globalName)) { this.globalName = this.componentName; } Iterator elementIter = null; // resource-loader - resourceLoaderInfos elementIter = UtilXml.childElementList(ofbizComponentElement, "resource-loader").iterator(); while (elementIter.hasNext()) { Element curElement = (Element) elementIter.next(); ResourceLoaderInfo resourceLoaderInfo = new ResourceLoaderInfo(curElement); this.resourceLoaderInfos.put(resourceLoaderInfo.name, resourceLoaderInfo); } // classpath - classpathInfos
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -