/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.actions; import com.eviware.soapui.impl.wsdl.support.CompressionSupport; import com.eviware.soapui.model.settings.Settings; import com.eviware.soapui.settings.HttpSettings; import com.eviware.soapui.support.components.SimpleForm; import com.eviware.soapui.support.types.StringToStringMap; import java.util.TreeMap; /** * Preferences class for HttpSettings * * @author ole.matzura */ public class HttpPrefs implements Prefs { public static final String AUTHENTICATE_PREEMPTIVELY = "Authenticate Preemptively"; public static final String EXPECT_CONTINUE = "Expect Continue"; public static final String INCLUDE_REQUEST_IN_TIME_TAKEN = "Include request in time taken"; public static final String INCLUDE_RESPONSE_IN_TIME_TAKEN = "Include response in time taken"; public static final String REQUEST_COMPRESSION = "Request compression"; public static final String RESPONSE_COMPRESSION = "Response compression"; public static final String CLOSE_CONNECTIONS_AFTER_REQUEST = "Close connections after request"; public static final String USER_AGENT_HEADER = "User-Agent Header"; public static final String SOCKET_TIMEOUT = "Socket Timeout"; public static final String MAX_RESPONSE_SIZE = "Max response size"; public static final String ENCODED_URLS = "Pre-encoded Endpoints"; public static final String MAX_CONNECTIONS_PER_HOST = "Max Connections Per Host"; public static final String MAX_TOTAL_CONNECTIONS = "Max Total Connections"; public static final String BIND_ADDRESS = "Bind Address"; public static final String LEAVE_MOCKENGINE = "Leave MockEngine"; public static final String CHUNKING_THRESHOLD = "Chunking Threshold"; public static final String HTTP_VERSION = "HTTP Version"; public static final String ENABLE_MOCK_WIRE_LOG = "Enable Mock HTTP Log"; public static final String DISABLE_RESPONSE_DECOMPRESSION = "Disable Response Decompression"; public static final String FORWARD_SLASHES = "Normalize Forward Slashes"; private static TreeMap<String, String> compressionAlgs = new TreeMap<String, String>(); static { compressionAlgs.put("None", "None"); compressionAlgs.put(CompressionSupport.ALG_GZIP, "GZIP"); compressionAlgs.put(CompressionSupport.ALG_DEFLATE, "DEFLATE"); } private SimpleForm httpForm; private final String title; public HttpPrefs(String title) { this.title = title; } public SimpleForm getForm() { if (httpForm == null) { httpForm = new SimpleForm(); httpForm.addSpace(5); httpForm.appendComboBox(HttpPrefs.HTTP_VERSION, new String[]{HttpSettings.HTTP_VERSION_1_1, HttpSettings.HTTP_VERSION_1_0}, "Select HTTP Version to use"); httpForm.appendTextField(HttpPrefs.USER_AGENT_HEADER, "User-Agent HTTP header to send, blank will send default"); httpForm.appendComboBox(HttpPrefs.REQUEST_COMPRESSION, compressionAlgs); httpForm.appendCheckBox(HttpPrefs.RESPONSE_COMPRESSION, "Accept compressed responses from hosts", true); httpForm.appendCheckBox(HttpPrefs.DISABLE_RESPONSE_DECOMPRESSION, "Disable decompression of compressed responses", true); httpForm.appendCheckBox(HttpPrefs.CLOSE_CONNECTIONS_AFTER_REQUEST, "Closes the HTTP connection after each HTTP request", true); httpForm.appendTextField(HttpPrefs.CHUNKING_THRESHOLD, "Uses content-chunking for requests larger than threshold, blank to disable"); httpForm.appendCheckBox(HttpPrefs.AUTHENTICATE_PREEMPTIVELY, "Adds authentication information to outgoing request", true); httpForm.appendCheckBox(HttpPrefs.EXPECT_CONTINUE, "Activates 'Expect: 100-Continue' handshake for the entity enclosing methods", true); httpForm.appendCheckBox(HttpPrefs.ENCODED_URLS, "URI contains encoded endpoints, don't try to re-encode", true); httpForm.appendCheckBox(HttpPrefs.FORWARD_SLASHES, "Replaces duplicate forward slashes in HTTP request endpoints with a single slash", false); httpForm.appendTextField(HttpPrefs.BIND_ADDRESS, "Default local address to bind to when sending requests"); httpForm.appendSeparator(); httpForm.appendCheckBox(HttpPrefs.INCLUDE_REQUEST_IN_TIME_TAKEN, "Includes the time it took to write the request in time-taken", true); httpForm.appendCheckBox(HttpPrefs.INCLUDE_RESPONSE_IN_TIME_TAKEN, "Includes the time it took to read the entire response in time-taken", true); httpForm.appendTextField(HttpPrefs.SOCKET_TIMEOUT, "Socket timeout in milliseconds"); httpForm.appendTextField(HttpPrefs.MAX_RESPONSE_SIZE, "Maximum size to read from response (0 = no limit)"); httpForm.appendTextField(HttpPrefs.MAX_CONNECTIONS_PER_HOST, "Maximum number of Connections Per Host"); httpForm.appendTextField(HttpPrefs.MAX_TOTAL_CONNECTIONS, "Maximum number of Total Connections"); httpForm.appendSeparator(); httpForm.appendCheckBox(HttpPrefs.LEAVE_MOCKENGINE, "Leave MockEngine running when stopping MockServices", false); httpForm.appendCheckBox(HttpPrefs.ENABLE_MOCK_WIRE_LOG, "Logs wire content of all mock requests", false); httpForm.addSpace(5); } return httpForm; } public void getFormValues(Settings settings) { StringToStringMap httpValues = new StringToStringMap(); httpForm.getValues(httpValues); storeValues(httpValues, settings); } public void storeValues(StringToStringMap httpValues, Settings settings) { settings.setString(HttpSettings.HTTP_VERSION, httpValues.get(HTTP_VERSION)); settings.setString(HttpSettings.CHUNKING_THRESHOLD, httpValues.get(CHUNKING_THRESHOLD)); settings.setString(HttpSettings.USER_AGENT, httpValues.get(USER_AGENT_HEADER)); settings.setString(HttpSettings.REQUEST_COMPRESSION, httpValues.get(REQUEST_COMPRESSION)); settings.setString(HttpSettings.RESPONSE_COMPRESSION, httpValues.get(RESPONSE_COMPRESSION)); settings.setString(HttpSettings.EXPECT_CONTINUE, httpValues.get(EXPECT_CONTINUE)); settings .setString(HttpSettings.DISABLE_RESPONSE_DECOMPRESSION, httpValues.get(DISABLE_RESPONSE_DECOMPRESSION)); settings.setString(HttpSettings.CLOSE_CONNECTIONS, httpValues.get(CLOSE_CONNECTIONS_AFTER_REQUEST)); settings.setString(HttpSettings.AUTHENTICATE_PREEMPTIVELY, httpValues.get(AUTHENTICATE_PREEMPTIVELY)); settings.setString(HttpSettings.SOCKET_TIMEOUT, httpValues.get(SOCKET_TIMEOUT)); settings.setString(HttpSettings.ENCODED_URLS, httpValues.get(ENCODED_URLS)); settings.setString(HttpSettings.FORWARD_SLASHES, httpValues.get(FORWARD_SLASHES)); settings.setString(HttpSettings.MAX_RESPONSE_SIZE, httpValues.get(MAX_RESPONSE_SIZE)); settings.setString(HttpSettings.INCLUDE_REQUEST_IN_TIME_TAKEN, httpValues.get(INCLUDE_REQUEST_IN_TIME_TAKEN)); settings .setString(HttpSettings.INCLUDE_RESPONSE_IN_TIME_TAKEN, httpValues.get(INCLUDE_RESPONSE_IN_TIME_TAKEN)); settings.setString(HttpSettings.MAX_CONNECTIONS_PER_HOST, httpValues.get(MAX_CONNECTIONS_PER_HOST)); settings.setString(HttpSettings.MAX_TOTAL_CONNECTIONS, httpValues.get(MAX_TOTAL_CONNECTIONS)); settings.setString(HttpSettings.BIND_ADDRESS, httpValues.get(BIND_ADDRESS)); settings.setString(HttpSettings.LEAVE_MOCKENGINE, httpValues.get(LEAVE_MOCKENGINE)); settings.setString(HttpSettings.ENABLE_MOCK_WIRE_LOG, httpValues.get(ENABLE_MOCK_WIRE_LOG)); } public void setFormValues(Settings settings) { getForm().setValues(getValues(settings)); } public StringToStringMap getValues(Settings settings) { StringToStringMap httpValues = new StringToStringMap(); httpValues.put(HTTP_VERSION, settings.getString(HttpSettings.HTTP_VERSION, HttpSettings.HTTP_VERSION_1_1)); httpValues.put(CHUNKING_THRESHOLD, settings.getString(HttpSettings.CHUNKING_THRESHOLD, null)); httpValues.put(USER_AGENT_HEADER, settings.getString(HttpSettings.USER_AGENT, null)); httpValues.put(REQUEST_COMPRESSION, compressionAlgs.get(settings.getString(HttpSettings.REQUEST_COMPRESSION, "None"))); httpValues.put(RESPONSE_COMPRESSION, settings.getString(HttpSettings.RESPONSE_COMPRESSION, null)); httpValues.put(DISABLE_RESPONSE_DECOMPRESSION, settings.getString(HttpSettings.DISABLE_RESPONSE_DECOMPRESSION, null)); httpValues.put(EXPECT_CONTINUE, settings.getString(HttpSettings.EXPECT_CONTINUE, null)); httpValues.put(CLOSE_CONNECTIONS_AFTER_REQUEST, settings.getString(HttpSettings.CLOSE_CONNECTIONS, null)); httpValues.put(AUTHENTICATE_PREEMPTIVELY, settings.getString(HttpSettings.AUTHENTICATE_PREEMPTIVELY, null)); httpValues.put(INCLUDE_REQUEST_IN_TIME_TAKEN, settings.getString(HttpSettings.INCLUDE_REQUEST_IN_TIME_TAKEN, null)); httpValues.put(INCLUDE_RESPONSE_IN_TIME_TAKEN, settings.getString(HttpSettings.INCLUDE_RESPONSE_IN_TIME_TAKEN, null)); httpValues.put(SOCKET_TIMEOUT, settings.getString(HttpSettings.SOCKET_TIMEOUT, null)); httpValues.put(ENCODED_URLS, settings.getString(HttpSettings.ENCODED_URLS, null)); httpValues.put(MAX_RESPONSE_SIZE, settings.getString(HttpSettings.MAX_RESPONSE_SIZE, "0")); httpValues.put(MAX_CONNECTIONS_PER_HOST, settings.getString(HttpSettings.MAX_CONNECTIONS_PER_HOST, "500")); httpValues.put(MAX_TOTAL_CONNECTIONS, settings.getString(HttpSettings.MAX_TOTAL_CONNECTIONS, "2000")); httpValues.put(BIND_ADDRESS, settings.getString(HttpSettings.BIND_ADDRESS, "")); httpValues.put(FORWARD_SLASHES, settings.getString(HttpSettings.FORWARD_SLASHES, "")); httpValues.put(LEAVE_MOCKENGINE, settings.getString(HttpSettings.LEAVE_MOCKENGINE, null)); httpValues.put(ENABLE_MOCK_WIRE_LOG, settings.getString(HttpSettings.ENABLE_MOCK_WIRE_LOG, null)); return httpValues; } public String getTitle() { return title; } }