ParameterControls.java
- package org.jbehave.core.steps;
- import java.util.Map;
- import java.util.Map.Entry;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.builder.ToStringBuilder;
- import org.apache.commons.lang3.builder.ToStringStyle;
- public class ParameterControls {
- public static final String DEFAULT_NAME_DELIMITER_LEFT = "<";
- public static final String DEFAULT_NAME_DELIMITER_RIGHT = ">";
- private String nameDelimiterLeft;
- private String nameDelimiterRight;
- private boolean delimiterNamedParameters;
-
- public ParameterControls() {
- this(DEFAULT_NAME_DELIMITER_LEFT, DEFAULT_NAME_DELIMITER_RIGHT, true);
- }
- public ParameterControls(String nameDelimiterLeft, String nameDelimiterRight, boolean delimiterNamedParameters) {
- this.nameDelimiterLeft = nameDelimiterLeft;
- this.nameDelimiterRight = nameDelimiterRight;
- this.delimiterNamedParameters = delimiterNamedParameters;
- }
- public String nameDelimiterLeft() {
- return nameDelimiterLeft;
- }
- public String nameDelimiterRight() {
- return nameDelimiterRight;
- }
- public boolean delimiterNamedParameters() {
- return delimiterNamedParameters;
- }
-
- public ParameterControls useNameDelimiterLeft(String nameDelimiterLeft) {
- this.nameDelimiterLeft = nameDelimiterLeft;
- return this;
- }
- public ParameterControls useNameDelimiterRight(String nameDelimiterRight) {
- this.nameDelimiterRight = nameDelimiterRight;
- return this;
- }
- public ParameterControls useDelimiterNamedParameters(boolean delimiterNamedParameters) {
- this.delimiterNamedParameters = delimiterNamedParameters;
- return this;
- }
- private String createDelimitedName(String name) {
- return nameDelimiterLeft + name + nameDelimiterRight;
- }
- public String replaceAllDelimitedNames(String text, String name, String value) {
- String delimitedName = createDelimitedName(name);
- if (value != null) {
- return StringUtils.replace(text, delimitedName, value);
- } else if (text.equals(delimitedName)) {
- return null;
- }
- throw new IllegalArgumentException(
- "Unable to replace \"" + delimitedName + "\" in text \"" + text + "\" with \"null\" value");
- }
- public String replaceAllDelimitedNames(String text, Map<String, String> namedParameters) {
- String textWithReplacedDelimitedNames = text;
- for (Entry<String, String> parameter : namedParameters.entrySet()) {
- textWithReplacedDelimitedNames = replaceAllDelimitedNames(textWithReplacedDelimitedNames,
- parameter.getKey(), parameter.getValue());
- }
- return textWithReplacedDelimitedNames;
- }
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
- }
- }