/* * Copyright © 2015 Cask Data, Inc. * * Licensed 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 co.cask.cdap.gateway.handlers; import co.cask.cdap.common.conf.CConfiguration; import co.cask.cdap.proto.ConfigEntry; import com.google.common.collect.Lists; import com.google.inject.Inject; import org.apache.hadoop.conf.Configuration; import java.io.IOException; import java.io.StringWriter; import java.util.List; import java.util.Map; /** * Exposes {@link CConfiguration} and {@link Configuration}. */ public class ConfigService { private final CConfiguration cConf; private final Configuration hConf; @Inject public ConfigService(CConfiguration cConf, Configuration hConf) { this.cConf = cConf; this.hConf = hConf; } public List<ConfigEntry> getCConf() { return toConfigEntries(cConf); } public String getCConfXMLString() throws IOException { StringWriter stringWriter = new StringWriter(); cConf.writeXml(stringWriter); return stringWriter.toString(); } public List<ConfigEntry> getHConf() { return toConfigEntries(hConf); } public String getHConfXMLString() throws IOException { StringWriter stringWriter = new StringWriter(); hConf.writeXml(stringWriter); return stringWriter.toString(); } private String getFirstElement(String[] array) { if (array != null && array.length >= 1) { return array[0]; } else { return null; } } private List<ConfigEntry> toConfigEntries(Configuration configuration) { List<ConfigEntry> result = Lists.newArrayList(); for (Map.Entry<String, String> entry : configuration) { String source = getFirstElement(configuration.getPropertySources(entry.getKey())); result.add(new ConfigEntry(entry.getKey(), entry.getValue(), source)); } return result; } private List<ConfigEntry> toConfigEntries(CConfiguration configuration) { List<ConfigEntry> result = Lists.newArrayList(); for (Map.Entry<String, String> entry : configuration) { String source = getFirstElement(configuration.getPropertySources(entry.getKey())); result.add(new ConfigEntry(entry.getKey(), entry.getValue(), source)); } return result; } }