// Copyright 2012 Citrix Systems, Inc. Licensed under the // Apache License, Version 2.0 (the "License"); you may not use this // file except in compliance with the License. Citrix Systems, Inc. // reserves all rights not expressly granted by the License. // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.utils; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; import org.apache.log4j.Logger; public class PropertiesUtil { /** * Searches the class path and local paths to find the config file. * @param path path to find. if it starts with / then it's absolute path. * @return File or null if not found at all. */ public static File findConfigFile(String path) { ClassLoader cl = PropertiesUtil.class.getClassLoader(); URL url = cl.getResource(path); if (url != null) { return new File(url.getFile()); } url = ClassLoader.getSystemResource(path); if (url != null) { return new File(url.getFile()); } File file = new File(path); if (file.exists()) { return file; } String newPath = "conf" + (path.startsWith(File.separator) ? "" : "/") + path; url = ClassLoader.getSystemResource(newPath); if (url != null) { return new File(url.getFile()); } url = cl.getResource(newPath); if (url != null) { return new File(url.getFile()); } newPath = "conf" + (path.startsWith(File.separator) ? "" : File.separator) + path; file = new File(newPath); if (file.exists()) { return file; } newPath = System.getenv("CATALINA_HOME"); if (newPath == null) { newPath = System.getenv("CATALINA_BASE"); } if (newPath == null) { newPath = System.getProperty("catalina.home"); } if (newPath == null) { return null; } file = new File(newPath + File.separator + "conf" + File.separator + path); if (file.exists()) { return file; } return null; } public static Map<String, Object> toMap(Properties props) { Set<String> names = props.stringPropertyNames(); HashMap<String, Object> map = new HashMap<String, Object>(names.size()); for (String name : names) { map.put(name, props.getProperty(name)); } return map; } /* * Returns an InputStream for the given resource * This is needed to read the files within a jar in classpath. */ public static InputStream openStreamFromURL(String path){ ClassLoader cl = PropertiesUtil.class.getClassLoader(); URL url = cl.getResource(path); if (url != null) { try{ InputStream stream = url.openStream(); return stream; } catch (IOException ioex) { return null; } } return null; } }