2  * Copyright 2016 Huawei Technologies Co., Ltd.
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.onap.vfc.nfvo.vnfm.gvnfm.jujuvnfmadapter.common.restclient;
 
  19 import java.io.BufferedReader;
 
  21 import java.io.FileReader;
 
  22 import java.io.IOException;
 
  24 import org.slf4j.Logger;
 
  25 import org.slf4j.LoggerFactory;
 
  27 import net.sf.json.JSONObject;
 
  30  * Rest client options.<br/>
 
  35  * @version 28-May-2016
 
  37 public class RestfulConfigure {
 
  39     private static final Logger LOG = LoggerFactory.getLogger(RestfulConfigure.class);
 
  41     private RestfulOptions options = null;
 
  46      * Use the default path initialization http Rest options.
 
  51     public RestfulConfigure() {
 
  52         final String config = "/etc/conf/restclient.json";
 
  53         final String approot = SystemEnvVariablesFactory.getInstance().getAppRoot();
 
  54         final StringBuilder extendSetting = new StringBuilder();
 
  57             extendSetting.append(approot);
 
  58             extendSetting.append(config);
 
  60             extendSetting.append(System.getProperty("user.dir"));
 
  61             extendSetting.append(config);
 
  64         final String configfile = extendSetting.toString();
 
  65         initRestConf(configfile);
 
  71      * Use the specified file to initialize http Rest options.
 
  77     public RestfulConfigure(final String configfile) {
 
  78         initRestConf(configfile);
 
  81     public RestfulOptions getOptions() {
 
  85     private void initRestConf(final String configfile) {
 
  86         options = getDefaultOptions();
 
  88         final JSONObject obj = loadJsonFromFile(configfile);
 
  90             if(obj.has(RestfulClientConst.SERVER_KEY_NAME)) {
 
  91                 final JSONObject server = obj.getJSONObject(RestfulClientConst.SERVER_KEY_NAME);
 
  92                 setStringOption(server, RestfulClientConst.HOST_KEY_NAME);
 
  93                 setIntOption(server, RestfulClientConst.PORT_KEY_NAME);
 
  95             setIntOption(obj, RestfulClientConst.CONN_TIMEOUT_KEY_NAME);
 
  96             setIntOption(obj, RestfulClientConst.THREAD_KEY_NAME);
 
  97             setIntOption(obj, RestfulClientConst.IDLE_TIMEOUT_KEY_NAME);
 
  98             setIntOption(obj, RestfulClientConst.TIMEOUT_KEY_NAME);
 
  99             setIntOption(obj, RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME);
 
 100             setIntOption(obj, RestfulClientConst.MAX_RESPONSE_HEADER_SIZE);
 
 101             setIntOption(obj, RestfulClientConst.MAX_REQUEST_HEADER_SIZE);
 
 103             LOG.error("failed to load json from " + configfile);
 
 107     private void setStringOption(final JSONObject json, final String key) {
 
 109             options.setOption(key, json.getString(key));
 
 113     private void setIntOption(final JSONObject json, final String key) {
 
 115             options.setOption(key, json.getInt(key));
 
 119     private RestfulOptions getDefaultOptions() {
 
 120         options = new RestfulOptions();
 
 121         options.setOption(RestfulClientConst.CONN_TIMEOUT_KEY_NAME, 3000);
 
 122         options.setOption(RestfulClientConst.THREAD_KEY_NAME, 200);
 
 123         options.setOption(RestfulClientConst.IDLE_TIMEOUT_KEY_NAME, 30000);
 
 124         options.setOption(RestfulClientConst.TIMEOUT_KEY_NAME, 30000);
 
 125         options.setOption(RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME, 50);
 
 126         options.setOption(RestfulClientConst.MAX_RESPONSE_HEADER_SIZE, 20 * 1024);
 
 127         options.setOption(RestfulClientConst.MAX_REQUEST_HEADER_SIZE, 20 * 1024);
 
 131     private JSONObject loadJsonFromFile(final String filePath) {
 
 132         final File file = new File(filePath);
 
 133         if((!file.exists()) || (!file.isFile())) {
 
 134             LOG.error(filePath + "isn't exist.");
 
 137         BufferedReader reader = null;
 
 138         final StringBuilder jsonstr = new StringBuilder();
 
 139         JSONObject jo = null;
 
 141             reader = new BufferedReader(new FileReader(file));
 
 142             final ReaderHelper rHelpper = new ReaderHelper(reader);
 
 143             String tempString = null;
 
 144             while((tempString = rHelpper.getLine()) != null) {
 
 145                 jsonstr.append(tempString);
 
 147             jo = JSONObject.fromObject(jsonstr.toString());
 
 148         } catch(final IOException e) {
 
 149             LOG.error("load file exception:" + e);
 
 154                 } catch(final IOException e) {
 
 155                     LOG.error("close error.", e);