You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/02/11 06:20:05 UTC
[text] [TEXT-113] Add an interpolator string lookup. Deprecate some
ctors. Access package private lookup classes through a factory.
Repository: commons-text
Updated Branches:
refs/heads/master 4f28f3795 -> a8824266f
[TEXT-113] Add an interpolator string lookup. Deprecate some ctors.
Access package private lookup classes through a factory.
Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/a8824266
Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/a8824266
Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/a8824266
Branch: refs/heads/master
Commit: a8824266fa5f37d9f0f9da0780af32be67d12910
Parents: 4f28f37
Author: Gary Gregory <ga...@gmail.com>
Authored: Sat Feb 10 23:20:01 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Sat Feb 10 23:20:01 2018 -0700
----------------------------------------------------------------------
.../org/apache/commons/text/StrSubstitutor.java | 108 ++++++++++++++++++-
.../commons/text/lookup/DateStringLookup.java | 4 +-
.../lookup/EnvironmentVariableStringLookup.java | 4 +-
.../text/lookup/InterpolatorStringLookup.java | 6 +-
.../text/lookup/JavaPlatformStringLookup.java | 4 +-
.../commons/text/lookup/MapStringLookup.java | 17 ++-
.../commons/text/lookup/NullStringLookup.java | 4 +-
.../text/lookup/ResourceBundleStringLookup.java | 4 +-
.../text/lookup/StringLookupFactory.java | 80 ++++++++++++++
.../text/lookup/SystemPropertyStringLookup.java | 4 +-
.../apache/commons/text/StrSubstitutorTest.java | 45 ++++++++
...titutorWithInterpolatorStringLookupTest.java | 47 ++++++++
.../lookup/InterpolatorStringLookupTest.java | 2 +-
.../text/lookup/MapStringLookupTest.java | 2 +-
.../StrSubstitutorWithInterpolatorTest.java | 47 --------
15 files changed, 308 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/StrSubstitutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/StrSubstitutor.java b/src/main/java/org/apache/commons/text/StrSubstitutor.java
index 453c06e..08d132a 100644
--- a/src/main/java/org/apache/commons/text/StrSubstitutor.java
+++ b/src/main/java/org/apache/commons/text/StrSubstitutor.java
@@ -24,6 +24,8 @@ import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.Validate;
+import org.apache.commons.text.lookup.StringLookup;
+import org.apache.commons.text.lookup.StringLookupFactory;
/**
* Substitutes variables within a string by values.
@@ -167,7 +169,7 @@ public class StrSubstitutor {
/**
* Variable resolution is delegated to an implementor of VariableResolver.
*/
- private StrLookup<?> variableResolver;
+ private StringLookup variableResolver;
/**
* The flag whether substitution in variable names is enabled.
@@ -248,7 +250,7 @@ public class StrSubstitutor {
* @return the result of the replace operation
*/
public static String replaceSystemProperties(final Object source) {
- return new StrSubstitutor(StrLookup.systemPropertiesLookup()).replace(source);
+ return new StrSubstitutor(StringLookupFactory.INSTANCE.systemPropertyStringLookup()).replace(source);
}
//-----------------------------------------------------------------------
@@ -319,7 +321,9 @@ public class StrSubstitutor {
* Creates a new instance and initializes it.
*
* @param variableResolver the variable resolver, may be null
+ * @deprecated Use the StringLookup version of this constructor.
*/
+ @Deprecated
public StrSubstitutor(final StrLookup<?> variableResolver) {
this(variableResolver, DEFAULT_PREFIX, DEFAULT_SUFFIX, DEFAULT_ESCAPE);
}
@@ -332,7 +336,9 @@ public class StrSubstitutor {
* @param suffix the suffix for variables, not null
* @param escape the escape character
* @throws IllegalArgumentException if the prefix or suffix is null
+ * @deprecated Use the StringLookup version of this constructor.
*/
+ @Deprecated
public StrSubstitutor(final StrLookup<?> variableResolver, final String prefix, final String suffix,
final char escape) {
this.setVariableResolver(variableResolver);
@@ -351,7 +357,9 @@ public class StrSubstitutor {
* @param escape the escape character
* @param valueDelimiter the variable default value delimiter string, may be null
* @throws IllegalArgumentException if the prefix or suffix is null
+ * @deprecated Use the StringLookup version of this constructor.
*/
+ @Deprecated
public StrSubstitutor(final StrLookup<?> variableResolver, final String prefix, final String suffix,
final char escape, final String valueDelimiter) {
this.setVariableResolver(variableResolver);
@@ -369,7 +377,9 @@ public class StrSubstitutor {
* @param suffixMatcher the suffix for variables, not null
* @param escape the escape character
* @throws IllegalArgumentException if the prefix or suffix is null
+ * @deprecated Use the StringLookup version of this constructor.
*/
+ @Deprecated
public StrSubstitutor(
final StrLookup<?> variableResolver, final StrMatcher prefixMatcher, final StrMatcher suffixMatcher,
final char escape) {
@@ -385,7 +395,9 @@ public class StrSubstitutor {
* @param escape the escape character
* @param valueDelimiterMatcher the variable default value delimiter matcher, may be null
* @throws IllegalArgumentException if the prefix or suffix is null
+ * @deprecated Use the StringLookup version of this constructor.
*/
+ @Deprecated
public StrSubstitutor(
final StrLookup<?> variableResolver, final StrMatcher prefixMatcher, final StrMatcher suffixMatcher,
final char escape, final StrMatcher valueDelimiterMatcher) {
@@ -396,6 +408,87 @@ public class StrSubstitutor {
this.setValueDelimiterMatcher(valueDelimiterMatcher);
}
+ /**
+ * Creates a new instance and initializes it.
+ *
+ * @param variableResolver the variable resolver, may be null
+ */
+ public StrSubstitutor(final StringLookup variableResolver) {
+ this(variableResolver, DEFAULT_PREFIX, DEFAULT_SUFFIX, DEFAULT_ESCAPE);
+ }
+
+ /**
+ * Creates a new instance and initializes it.
+ *
+ * @param variableResolver the variable resolver, may be null
+ * @param prefix the prefix for variables, not null
+ * @param suffix the suffix for variables, not null
+ * @param escape the escape character
+ * @throws IllegalArgumentException if the prefix or suffix is null
+ */
+ public StrSubstitutor(final StringLookup variableResolver, final String prefix, final String suffix,
+ final char escape) {
+ this.setVariableResolver(variableResolver);
+ this.setVariablePrefix(prefix);
+ this.setVariableSuffix(suffix);
+ this.setEscapeChar(escape);
+ this.setValueDelimiterMatcher(DEFAULT_VALUE_DELIMITER);
+ }
+
+ /**
+ * Creates a new instance and initializes it.
+ *
+ * @param variableResolver the variable resolver, may be null
+ * @param prefix the prefix for variables, not null
+ * @param suffix the suffix for variables, not null
+ * @param escape the escape character
+ * @param valueDelimiter the variable default value delimiter string, may be null
+ * @throws IllegalArgumentException if the prefix or suffix is null
+ */
+ public StrSubstitutor(final StringLookup variableResolver, final String prefix, final String suffix,
+ final char escape, final String valueDelimiter) {
+ this.setVariableResolver(variableResolver);
+ this.setVariablePrefix(prefix);
+ this.setVariableSuffix(suffix);
+ this.setEscapeChar(escape);
+ this.setValueDelimiter(valueDelimiter);
+ }
+
+ /**
+ * Creates a new instance and initializes it.
+ *
+ * @param variableResolver the variable resolver, may be null
+ * @param prefixMatcher the prefix for variables, not null
+ * @param suffixMatcher the suffix for variables, not null
+ * @param escape the escape character
+ * @throws IllegalArgumentException if the prefix or suffix is null
+ */
+ public StrSubstitutor(
+ final StringLookup variableResolver, final StrMatcher prefixMatcher, final StrMatcher suffixMatcher,
+ final char escape) {
+ this(variableResolver, prefixMatcher, suffixMatcher, escape, DEFAULT_VALUE_DELIMITER);
+ }
+
+ /**
+ * Creates a new instance and initializes it.
+ *
+ * @param variableResolver the variable resolver, may be null
+ * @param prefixMatcher the prefix for variables, not null
+ * @param suffixMatcher the suffix for variables, not null
+ * @param escape the escape character
+ * @param valueDelimiterMatcher the variable default value delimiter matcher, may be null
+ * @throws IllegalArgumentException if the prefix or suffix is null
+ */
+ public StrSubstitutor(
+ final StringLookup variableResolver, final StrMatcher prefixMatcher, final StrMatcher suffixMatcher,
+ final char escape, final StrMatcher valueDelimiterMatcher) {
+ this.setVariableResolver(variableResolver);
+ this.setVariablePrefixMatcher(prefixMatcher);
+ this.setVariableSuffixMatcher(suffixMatcher);
+ this.setEscapeChar(escape);
+ this.setValueDelimiterMatcher(valueDelimiterMatcher);
+ }
+
//-----------------------------------------------------------------------
/**
* Replaces all the occurrences of variables with their matching values
@@ -1174,7 +1267,7 @@ public class StrSubstitutor {
* @return the VariableResolver
*/
public StrLookup<?> getVariableResolver() {
- return this.variableResolver;
+ return (StrLookup<?>) this.variableResolver;
}
/**
@@ -1186,6 +1279,15 @@ public class StrSubstitutor {
this.variableResolver = variableResolver;
}
+ /**
+ * Sets the VariableResolver that is used to lookup variables.
+ *
+ * @param variableResolver the VariableResolver
+ */
+ public void setVariableResolver(final StringLookup variableResolver) {
+ this.variableResolver = variableResolver;
+ }
+
// Substitution support in variable names
//-----------------------------------------------------------------------
/**
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/DateStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/DateStringLookup.java b/src/main/java/org/apache/commons/text/lookup/DateStringLookup.java
index ee2a89d..d5cbf7d 100644
--- a/src/main/java/org/apache/commons/text/lookup/DateStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/DateStringLookup.java
@@ -23,12 +23,12 @@ import java.util.Date;
/**
* Formats the current date or the date in the LogEvent. The "key" is used as the format String.
*/
-public final class DateStringLookup extends AbstractStringLookup {
+final class DateStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final DateStringLookup INSTANCE = new DateStringLookup();
+ public static final StringLookup INSTANCE = new DateStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/EnvironmentVariableStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/EnvironmentVariableStringLookup.java b/src/main/java/org/apache/commons/text/lookup/EnvironmentVariableStringLookup.java
index 9f7a927..def095a 100644
--- a/src/main/java/org/apache/commons/text/lookup/EnvironmentVariableStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/EnvironmentVariableStringLookup.java
@@ -21,12 +21,12 @@ package org.apache.commons.text.lookup;
*
* @since 1.3
*/
-public final class EnvironmentVariableStringLookup extends AbstractStringLookup {
+final class EnvironmentVariableStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final EnvironmentVariableStringLookup INSTANCE = new EnvironmentVariableStringLookup();
+ public static final StringLookup INSTANCE = new EnvironmentVariableStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java b/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java
index 2ded621..b696dc3 100644
--- a/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java
@@ -23,7 +23,7 @@ import java.util.Map;
/**
* Proxies other {@link StringLookup}s using a keys within ${} markers using the format "${StringLookup:Key}".
*/
-public class InterpolatorStringLookup extends AbstractStringLookup {
+class InterpolatorStringLookup extends AbstractStringLookup {
/** Constant for the prefix separator. */
private static final char PREFIX_SEPARATOR = ':';
@@ -63,8 +63,8 @@ public class InterpolatorStringLookup extends AbstractStringLookup {
* @param defaultMap
* the default map for string lookups.
*/
- public InterpolatorStringLookup(final Map<String, String> defaultMap) {
- this(new MapStringLookup<>(defaultMap == null ? new HashMap<String, String>() : defaultMap));
+ public <V> InterpolatorStringLookup(final Map<String, V> defaultMap) {
+ this(MapStringLookup.on(defaultMap == null ? new HashMap<String, V>() : defaultMap));
// TODO: Use a service loader
stringLookupMap.put("sys", SystemPropertyStringLookup.INSTANCE);
stringLookupMap.put("env", EnvironmentVariableStringLookup.INSTANCE);
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java b/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
index f7ecee1..5dc5121 100644
--- a/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
@@ -23,12 +23,12 @@ import java.util.Locale;
*
* @since 1.3
*/
-public final class JavaPlatformStringLookup extends AbstractStringLookup {
+final class JavaPlatformStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final JavaPlatformStringLookup INSTANCE = new JavaPlatformStringLookup();
+ public static final StringLookup INSTANCE = new JavaPlatformStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/MapStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/MapStringLookup.java b/src/main/java/org/apache/commons/text/lookup/MapStringLookup.java
index 51a9c5b..2b0e9d9 100644
--- a/src/main/java/org/apache/commons/text/lookup/MapStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/MapStringLookup.java
@@ -29,6 +29,17 @@ import java.util.Map;
public final class MapStringLookup<V> implements StringLookup {
/**
+ * Creates a new instance backed by a Map. Used by the default lookup.
+ *
+ * @param map
+ * the map of keys to values, may be null.
+ * @return a new instance backed by the given map.
+ */
+ public static <T> MapStringLookup<T> on(final Map<String, T> map) {
+ return new MapStringLookup<>(map);
+ }
+
+ /**
* Map keys are variable names and value.
*/
private final Map<String, V> map;
@@ -37,9 +48,9 @@ public final class MapStringLookup<V> implements StringLookup {
* Creates a new instance backed by a Map. Used by the default lookup.
*
* @param map
- * the map of keys to values, may be null
+ * the map of keys to values, may be null.
*/
- public MapStringLookup(final Map<String, V> map) {
+ private MapStringLookup(final Map<String, V> map) {
this.map = map;
}
@@ -54,7 +65,7 @@ public final class MapStringLookup<V> implements StringLookup {
* </p>
*
* @param key
- * the key to be looked up, may be null
+ * the key to be looked up, may be null.
* @return the matching value, null if no match
*/
@Override
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/NullStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/NullStringLookup.java b/src/main/java/org/apache/commons/text/lookup/NullStringLookup.java
index 53e2fa7..3aee8a8 100644
--- a/src/main/java/org/apache/commons/text/lookup/NullStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/NullStringLookup.java
@@ -22,12 +22,12 @@ package org.apache.commons.text.lookup;
*
* @since 1.3
*/
-public final class NullStringLookup extends AbstractStringLookup {
+final class NullStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final NullStringLookup INSTANCE = new NullStringLookup();
+ public static final StringLookup INSTANCE = new NullStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/ResourceBundleStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/ResourceBundleStringLookup.java b/src/main/java/org/apache/commons/text/lookup/ResourceBundleStringLookup.java
index 7f31cd1..1662745 100644
--- a/src/main/java/org/apache/commons/text/lookup/ResourceBundleStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/ResourceBundleStringLookup.java
@@ -25,12 +25,12 @@ import java.util.ResourceBundle;
* @see ResourceBundle
* @since 1.3
*/
-public final class ResourceBundleStringLookup extends AbstractStringLookup {
+final class ResourceBundleStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final ResourceBundleStringLookup INSTANCE = new ResourceBundleStringLookup();
+ public static final StringLookup INSTANCE = new ResourceBundleStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
new file mode 100644
index 0000000..593822b
--- /dev/null
+++ b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
@@ -0,0 +1,80 @@
+/*
+ * 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.commons.text.lookup;
+
+import java.util.Map;
+
+/**
+ * Provides access to lookups defined in this package.
+ *
+ * @since 1.3
+ */
+public class StringLookupFactory {
+
+ /**
+ * Defines the singleton for this class.
+ */
+ public static final StringLookupFactory INSTANCE = new StringLookupFactory();
+
+ /**
+ * No need to build instances for now.
+ */
+ private StringLookupFactory() {
+ // empty
+ }
+
+ public StringLookup dateStringLookup() {
+ return DateStringLookup.INSTANCE;
+ }
+
+ public StringLookup environmentVariableStringLookup() {
+ return EnvironmentVariableStringLookup.INSTANCE;
+ }
+
+ public StringLookup interpolatorStringLookup() {
+ return new InterpolatorStringLookup();
+ }
+
+ public <V> StringLookup interpolatorStringLookup(final Map<String, V> map) {
+ return new InterpolatorStringLookup(map);
+ }
+
+ public StringLookup interpolatorStringLookup(final StringLookup defaultStringLookup) {
+ return new InterpolatorStringLookup(defaultStringLookup);
+ }
+
+ public StringLookup javaPlatformStringLookup() {
+ return JavaPlatformStringLookup.INSTANCE;
+ }
+
+ public <V> StringLookup mapStringLookup(final Map<String, V> map) {
+ return MapStringLookup.on(map);
+ }
+
+ public StringLookup nullStringLookup() {
+ return NullStringLookup.INSTANCE;
+ }
+
+ public StringLookup resourceBundleStringLookup() {
+ return ResourceBundleStringLookup.INSTANCE;
+ }
+
+ public StringLookup systemPropertyStringLookup() {
+ return SystemPropertyStringLookup.INSTANCE;
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/main/java/org/apache/commons/text/lookup/SystemPropertyStringLookup.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/lookup/SystemPropertyStringLookup.java b/src/main/java/org/apache/commons/text/lookup/SystemPropertyStringLookup.java
index 1856b09..8281008 100644
--- a/src/main/java/org/apache/commons/text/lookup/SystemPropertyStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/SystemPropertyStringLookup.java
@@ -21,12 +21,12 @@ package org.apache.commons.text.lookup;
*
* @since 1.3
*/
-public final class SystemPropertyStringLookup extends AbstractStringLookup {
+final class SystemPropertyStringLookup extends AbstractStringLookup {
/**
* Defines the singleton for this class.
*/
- public static final SystemPropertyStringLookup INSTANCE = new SystemPropertyStringLookup();
+ public static final StringLookup INSTANCE = new SystemPropertyStringLookup();
/**
* No need to build instances for now.
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/test/java/org/apache/commons/text/StrSubstitutorTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/StrSubstitutorTest.java b/src/test/java/org/apache/commons/text/StrSubstitutorTest.java
index 24c24a6..8cd435a 100644
--- a/src/test/java/org/apache/commons/text/StrSubstitutorTest.java
+++ b/src/test/java/org/apache/commons/text/StrSubstitutorTest.java
@@ -29,6 +29,9 @@ import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.commons.text.lookup.MapStringLookup;
+import org.apache.commons.text.lookup.StringLookup;
+import org.apache.commons.text.lookup.StringLookupFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -767,6 +770,19 @@ public class StrSubstitutorTest {
@Test
public void testReplaceInTakingTwoAndThreeIntsReturningFalse() {
final Map<String, Object> hashMap = new HashMap<>();
+ final MapStringLookup<Object> strLookupMapStrLookup = MapStringLookup.on(hashMap);
+ final StrMatcher strMatcher = StrMatcher.tabMatcher();
+ final StrSubstitutor strSubstitutor =
+ new StrSubstitutor(strLookupMapStrLookup, strMatcher, strMatcher, 'b', strMatcher);
+
+ assertFalse(strSubstitutor.replaceIn((StringBuilder) null, 1315, (-1369)));
+ assertEquals('b', strSubstitutor.getEscapeChar());
+ assertFalse(strSubstitutor.isPreserveEscapes());
+ }
+
+ @Test
+ public void testReplaceInTakingTwoAndThreeIntsReturningFalse_deprecated() {
+ final Map<String, Object> hashMap = new HashMap<>();
final StrLookup.MapStrLookup<Object> strLookupMapStrLookup = new StrLookup.MapStrLookup<>(hashMap);
final StrMatcher strMatcher = StrMatcher.tabMatcher();
final StrSubstitutor strSubstitutor =
@@ -779,6 +795,16 @@ public class StrSubstitutorTest {
@Test
public void testReplaceInTakingStringBuilderWithNonNull() {
+ final StringLookup strLookup = StringLookupFactory.INSTANCE.systemPropertyStringLookup();
+ final StrSubstitutor strSubstitutor = new StrSubstitutor(strLookup, "b<H", "b<H", '\'');
+ final StringBuilder stringBuilder = new StringBuilder((CharSequence) "b<H");
+
+ assertEquals('\'', strSubstitutor.getEscapeChar());
+ assertFalse(strSubstitutor.replaceIn(stringBuilder));
+ }
+
+ @Test
+ public void testReplaceInTakingStringBuilderWithNonNull_deprecated() {
final StrLookup<String> strLookup = StrLookup.systemPropertiesLookup();
final StrSubstitutor strSubstitutor = new StrSubstitutor(strLookup, "b<H", "b<H", '\'');
final StringBuilder stringBuilder = new StringBuilder((CharSequence) "b<H");
@@ -800,6 +826,16 @@ public class StrSubstitutorTest {
@Test
public void testCreatesStrSubstitutorTakingStrLookupAndCallsReplaceTakingTwoAndThreeInts() {
final Map<String, CharacterPredicates> map = new HashMap<>();
+ final MapStringLookup<CharacterPredicates> strLookupMapStrLookup = MapStringLookup.on(map);
+ final StrSubstitutor strSubstitutor = new StrSubstitutor(strLookupMapStrLookup);
+
+ assertNull(strSubstitutor.replace((CharSequence) null, 0, 0));
+ assertEquals('$', strSubstitutor.getEscapeChar());
+ }
+
+ @Test
+ public void testCreatesStrSubstitutorTakingStrLookupAndCallsReplaceTakingTwoAndThreeInts_deprecated() {
+ final Map<String, CharacterPredicates> map = new HashMap<>();
final StrLookup.MapStrLookup<CharacterPredicates> strLookupMapStrLookup = new StrLookup.MapStrLookup<>(map);
final StrSubstitutor strSubstitutor = new StrSubstitutor(strLookupMapStrLookup);
@@ -809,6 +845,15 @@ public class StrSubstitutorTest {
@Test
public void testReplaceTakingCharSequenceReturningNull() {
+ final StrSubstitutor strSubstitutor = new StrSubstitutor((StringLookup) null);
+
+ assertNull(strSubstitutor.replace((CharSequence) null));
+ assertFalse(strSubstitutor.isPreserveEscapes());
+ assertEquals('$', strSubstitutor.getEscapeChar());
+ }
+
+ @Test
+ public void testReplaceTakingCharSequenceReturningNull_deprecated() {
final StrSubstitutor strSubstitutor = new StrSubstitutor((StrLookup<?>) null);
assertNull(strSubstitutor.replace((CharSequence) null));
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/test/java/org/apache/commons/text/StrSubstitutorWithInterpolatorStringLookupTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/StrSubstitutorWithInterpolatorStringLookupTest.java b/src/test/java/org/apache/commons/text/StrSubstitutorWithInterpolatorStringLookupTest.java
new file mode 100644
index 0000000..d50d3b7
--- /dev/null
+++ b/src/test/java/org/apache/commons/text/StrSubstitutorWithInterpolatorStringLookupTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.commons.text;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.text.lookup.StringLookupFactory;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StrSubstitutorWithInterpolatorStringLookupTest {
+
+ @Test
+ public void testMapAndSystemProperty() {
+ final String key = "key";
+ final String value = "value";
+ final Map<String, String> map = new HashMap<>();
+ map.put(key, value);
+ final StrSubstitutor strSubst = new StrSubstitutor(StringLookupFactory.INSTANCE.interpolatorStringLookup(map));
+ final String spKey = "user.name";
+ Assert.assertEquals(System.getProperty(spKey), strSubst.replace("${sys:" + spKey + "}"));
+ Assert.assertEquals(value, strSubst.replace("${" + key + "}"));
+ }
+
+ @Test
+ public void testSystemProperty() {
+ final StrSubstitutor strSubst = new StrSubstitutor(StringLookupFactory.INSTANCE.interpolatorStringLookup());
+ final String spKey = "user.name";
+ Assert.assertEquals(System.getProperty(spKey), strSubst.replace("${sys:" + spKey + "}"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/test/java/org/apache/commons/text/lookup/InterpolatorStringLookupTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/lookup/InterpolatorStringLookupTest.java b/src/test/java/org/apache/commons/text/lookup/InterpolatorStringLookupTest.java
index f88bc9c..0a86d9c 100644
--- a/src/test/java/org/apache/commons/text/lookup/InterpolatorStringLookupTest.java
+++ b/src/test/java/org/apache/commons/text/lookup/InterpolatorStringLookupTest.java
@@ -66,7 +66,7 @@ public class InterpolatorStringLookupTest {
public void testLookup() {
final Map<String, String> map = new HashMap<>();
map.put(TESTKEY, TESTVAL);
- final StringLookup lookup = new InterpolatorStringLookup(new MapStringLookup<>(map));
+ final StringLookup lookup = new InterpolatorStringLookup(MapStringLookup.on(map));
String value = lookup.lookup(TESTKEY);
assertEquals(TESTVAL, value);
value = lookup.lookup("ctx:" + TESTKEY);
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/test/java/org/apache/commons/text/lookup/MapStringLookupTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/lookup/MapStringLookupTest.java b/src/test/java/org/apache/commons/text/lookup/MapStringLookupTest.java
index 664078b..5e7d1b7 100644
--- a/src/test/java/org/apache/commons/text/lookup/MapStringLookupTest.java
+++ b/src/test/java/org/apache/commons/text/lookup/MapStringLookupTest.java
@@ -31,7 +31,7 @@ public class MapStringLookupTest {
final String value = "value";
final Map<String, String> map = new HashMap<>();
map.put(key, value);
- Assert.assertEquals(value, new MapStringLookup<>(map).lookup(key));
+ Assert.assertEquals(value, MapStringLookup.on(map).lookup(key));
}
}
http://git-wip-us.apache.org/repos/asf/commons-text/blob/a8824266/src/test/java/org/apache/commons/text/lookup/StrSubstitutorWithInterpolatorTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/lookup/StrSubstitutorWithInterpolatorTest.java b/src/test/java/org/apache/commons/text/lookup/StrSubstitutorWithInterpolatorTest.java
deleted file mode 100644
index 893eb5f..0000000
--- a/src/test/java/org/apache/commons/text/lookup/StrSubstitutorWithInterpolatorTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.commons.text.lookup;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.text.StrSubstitutor;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class StrSubstitutorWithInterpolatorTest {
-
- @Test
- public void testMapAndSystemProperty() {
- final String key = "key";
- final String value = "value";
- final Map<String, String> map = new HashMap<>();
- map.put(key, value);
- final StrSubstitutor strSubst = new StrSubstitutor(new InterpolatorStringLookup(map));
- final String spKey = "user.name";
- Assert.assertEquals(System.getProperty(spKey), strSubst.replace("${sys:" + spKey + "}"));
- Assert.assertEquals(value, strSubst.replace("${" + key + "}"));
- }
-
- @Test
- public void testSystemProperty() {
- final StrSubstitutor strSubst = new StrSubstitutor(new InterpolatorStringLookup());
- final String spKey = "user.name";
- Assert.assertEquals(System.getProperty(spKey), strSubst.replace("${sys:" + spKey + "}"));
- }
-}