/** * Copyright 2005-2016 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version * 2.0 (the "License"); you may not use this file except in compliance * with 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. */ package io.fabric8.utils; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; /** * Helper methods for extracting values form a Properties object */ public class PropertiesHelper { public static Long getLong(Properties properties, String key) { return getLong(properties, key, null); } public static Long getLong(Properties properties, String key, Long defaultValue) { Object value = properties.get(key); if (value instanceof String) { return Long.parseLong(value.toString()); } else if (value instanceof Long) { return (Long) value; } else if (value instanceof Number) { Number number = (Number)value; return number.longValue(); } return defaultValue; } public static long getLongValue(Properties properties, String key, long defaultValue) { return getLong(properties, key, defaultValue); } public static long getLongValue(Map<String, String> map, String key, long defaultValue) { Properties properties = new Properties(); properties.putAll(map); return getLong(properties, key, defaultValue); } public static Integer getInteger(Properties properties, String key) { return getInteger(properties, key, null); } public static Integer getInteger(Properties properties, String key, Integer defaultValue) { Object value = properties.get(key); if (value instanceof String) { return Integer.parseInt(value.toString()); } else if (value instanceof Long) { return (Integer) value; } else if (value instanceof Number) { Number number = (Number)value; return number.intValue(); } return defaultValue; } public static int getIntegerValue(Properties properties, String key, int defaultValue) { return getInteger(properties, key, defaultValue); } public static int getIntegerValue(Map<String, String> map, String key, int defaultValue) { Properties properties = new Properties(); properties.putAll(map); return getInteger(properties, key, defaultValue); } /** * Returns the map of entries in the properties object which have keys starting with the given prefix, removing the prefix * from the returned map. */ public static Map<String, String> findPropertiesWithPrefix(Properties properties, String prefix) { return findPropertiesWithPrefix(properties, prefix, Functions.<String>noop()); } /** * Returns the map of entries in the properties object which have keys starting with the given prefix, removing the prefix * from the returned map. * * Keys are also transformed using the given keyTransformer if specified. */ public static Map<String, String> findPropertiesWithPrefix(Properties properties, String prefix, Function<String,String> keyTransformer) { Map<String, String> answer = new HashMap<>(); Set<Map.Entry<Object, Object>> entries = properties.entrySet(); for (Map.Entry<Object, Object> entry : entries) { Object value = entry.getValue(); Object key = entry.getKey(); if (key instanceof String && value != null) { String keyText = key.toString(); if (keyText.startsWith(prefix)) { String newKey = keyText.substring(prefix.length()); if (keyTransformer != null) { newKey = keyTransformer.apply(newKey); } answer.put(newKey, value.toString()); } } } return answer; } /** * Returns a Map for the given Properties object */ public static Map<String, String> toMap(Properties properties) { Map<String, String> answer = new HashMap<>(); if (properties != null) { Set<Map.Entry<Object, Object>> entries = properties.entrySet(); for (Map.Entry<Object, Object> entry : entries) { Object value = entry.getValue(); Object key = entry.getKey(); if (key != null && value != null) { answer.put(key.toString(), value.toString()); } } } return answer; } }