001/** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.oozie.util; 019 020import org.apache.hadoop.conf.Configuration; 021import org.apache.oozie.service.Services; 022import org.apache.oozie.servlet.ServicesLoader; 023 024/** 025 * 026 */ 027public class ConfigUtils { 028 private final static XLog LOG = XLog.getLog(ConfigUtils.class); 029 030 /** 031 * Fetches a property using both a deprecated name and the new name. The deprecated property 032 * has precedence over the new name. If the deprecated name is used a warning is written to 033 * the log. 034 * 035 * @param conf configuration object. 036 * @param newName new property name. 037 * @param oldName deprecated property name. 038 * @param defaultValue default value. 039 * @return the property value, or the default value if not found under the deprecated name and the new name. 040 */ 041 public static String getWithDeprecatedCheck(Configuration conf, String newName, String oldName, 042 String defaultValue) { 043 String value = conf.get(oldName, null); 044 if (value == null) { 045 value = conf.get(newName, defaultValue); 046 } 047 else { 048 LOG.warn("Using a deprecated configuration property [{0}], should use [{1}]. " + 049 "Please delete the deprecated property in order for the new property to take effect.", 050 oldName, newName); 051 } 052 return value; 053 } 054 055 /** 056 * Fetches a property using both a deprecated name and the new name. The deprecated property 057 * has precedence over the new name. If the deprecated name is used a warning is written to 058 * the log. 059 * 060 * @param conf configuration object. 061 * @param newName new property name. 062 * @param oldName deprecated property name. 063 * @param defaultValue default value. 064 * @return the property value, or the default value if not found under the deprecated name and the new name. 065 */ 066 public static boolean getWithDeprecatedCheck(Configuration conf, String newName, String oldName, 067 boolean defaultValue) { 068 String value = getWithDeprecatedCheck(conf, newName, oldName, Boolean.toString(defaultValue)); 069 return Boolean.parseBoolean(value); 070 } 071 072 /** 073 * Returns the HTTP or HTTPS URL for this Oozie server 074 * (http://HOSTNAME:HTTP_PORT/oozie or https://HOSTNAME:HTTPS_PORT/oozie) 075 * 076 * @param secure true to return the HTTPS URL or false to return the HTTP URL 077 * @return the HTTP or HTTPS URL for this Oozie server 078 */ 079 public static String getOozieURL(boolean secure) { 080 StringBuilder sb = new StringBuilder(); 081 if (secure) { 082 sb.append("https://"); 083 } 084 else { 085 sb.append("http://"); 086 } 087 sb.append(Services.get().getConf().get("oozie.http.hostname")); 088 sb.append(":"); 089 if (secure) { 090 sb.append(Services.get().getConf().get("oozie.https.port")); 091 } 092 else { 093 sb.append(Services.get().getConf().get("oozie.http.port")); 094 } 095 sb.append("/oozie"); 096 return sb.toString(); 097 } 098 099 /** 100 * Returns the HTTP or HTTPS URL for this Oozie server depending on which is actually configured 101 * 102 * @return the HTTP or HTTPS URL for this Oozie server 103 */ 104 public static String getOozieEffectiveUrl() { 105 return getOozieURL(ServicesLoader.isSSLEnabled()); 106 } 107}