/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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 org.apache.synapse.transport.nhttp.debug; import org.apache.synapse.transport.nhttp.NHttpConfiguration; import java.util.ArrayList; import java.util.List; /** * */ public class NhttpConnectionDebugConfig { private static final String KEY_VALUE_SEPARATOR_PROPERTY = "nhttp.debug.key.value.separator"; private static final String FIELD_SEPARATOR_PROPERTY = "nhttp.debug.field.separator"; private static final String STATEMENT_SEPARATOR_PROPERTY = "nhttp.debug.statement.separator"; // "all" | "none" | "foo,bar" private static final String HEADER_INFO_PROPERTY = "nhttp.debug.headers"; private static final String HEADER_INFO_ALL = "all"; private static final String HEADER_INFO_NONE = "none"; private static final String DEFAULT_KEY_VALUE_SEPARATOR = "="; private static final String DEFAULT_FIELD_SEPARATOR = ", "; private static final String DEFAULT_STATEMENT_SEPARATOR = "\n"; private String keyValueSeparator; private String fieldSeparator; private String statementSeparator; private List<String> headers; private boolean noHeaders = false; private boolean allHeaders = true; private static NhttpConnectionDebugConfig _instance; private NhttpConnectionDebugConfig() { this.keyValueSeparator = NHttpConfiguration.getInstance().getStringValue( KEY_VALUE_SEPARATOR_PROPERTY, DEFAULT_KEY_VALUE_SEPARATOR); this.fieldSeparator = NHttpConfiguration.getInstance().getStringValue( FIELD_SEPARATOR_PROPERTY, DEFAULT_FIELD_SEPARATOR); this.statementSeparator = NHttpConfiguration.getInstance().getStringValue( STATEMENT_SEPARATOR_PROPERTY, DEFAULT_STATEMENT_SEPARATOR); String headerSet = NHttpConfiguration.getInstance().getStringValue( HEADER_INFO_PROPERTY, HEADER_INFO_ALL); if (HEADER_INFO_NONE.equals(headerSet)) { this.noHeaders = true; } else if (HEADER_INFO_ALL.equals(headerSet)) { this.allHeaders = true; } else { String[] headerNames = headerSet.split(","); this.headers = new ArrayList<String>(); for (String headerName : headerNames) { this.headers.add(headerName.trim()); } } } public static NhttpConnectionDebugConfig getInstance() { if (_instance == null) { _instance = new NhttpConnectionDebugConfig(); } return _instance; } public String getKeyValueSeparator() { return keyValueSeparator; } public String getFieldSeparator() { return fieldSeparator; } public String getStatementSeparator() { return statementSeparator; } public List<String> getHeaders() { return headers; } public boolean isNoHeaders() { return noHeaders; } public boolean isAllHeaders() { return allHeaders; } }