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 2020/06/27 14:53:36 UTC
[commons-text] branch master updated: Replace internal
Base64DecoderStringLookup and Base64EncoderStringLookup with a
FunctionStringLookup. Checkstyle.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push:
new 758bb88 Replace internal Base64DecoderStringLookup and Base64EncoderStringLookup with a FunctionStringLookup. Checkstyle.
758bb88 is described below
commit 758bb8804bbca4a8961819fa57e49958b7e3033b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Jun 27 10:53:27 2020 -0400
Replace internal Base64DecoderStringLookup and Base64EncoderStringLookup
with a FunctionStringLookup.
Checkstyle.
---
.../text/lookup/Base64DecoderStringLookup.java | 69 ------------------
.../text/lookup/Base64EncoderStringLookup.java | 69 ------------------
.../commons/text/lookup/StringLookupFactory.java | 81 ++++++++++++++++++++--
.../text/lookup/Base64DecoderStringLookupTest.java | 6 +-
.../text/lookup/Base64EncoderStringLookupTest.java | 6 +-
.../text/lookup/StringLookupFactoryTest.java | 6 +-
6 files changed, 84 insertions(+), 153 deletions(-)
diff --git a/src/main/java/org/apache/commons/text/lookup/Base64DecoderStringLookup.java b/src/main/java/org/apache/commons/text/lookup/Base64DecoderStringLookup.java
deleted file mode 100644
index 26a05d5..0000000
--- a/src/main/java/org/apache/commons/text/lookup/Base64DecoderStringLookup.java
+++ /dev/null
@@ -1,69 +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.nio.charset.StandardCharsets;
-import java.util.Base64;
-
-import org.apache.commons.text.StringSubstitutor;
-
-/**
- * Decodes Base64 Strings.
- * <p>
- * Using a {@link StringLookup} from the {@link StringLookupFactory}:
- * </p>
- *
- * <pre>
- * StringLookupFactory.INSTANCE.base64DecoderStringLookup().lookup("SGVsbG9Xb3JsZCE=");
- * </pre>
- * <p>
- * Using a {@link StringSubstitutor}:
- * </p>
- *
- * <pre>
- * StringSubstitutor.createInterpolator().replace("... ${base64Decoder:SGVsbG9Xb3JsZCE=} ..."));
- * </pre>
- * <p>
- * The above examples convert {@code "SGVsbG9Xb3JsZCE="} to {@code "HelloWorld!"}.
- * </p>
- *
- * @since 1.5
- */
-final class Base64DecoderStringLookup extends AbstractStringLookup {
-
- /**
- * Defines the singleton for this class.
- */
- static final Base64DecoderStringLookup INSTANCE = new Base64DecoderStringLookup();
-
- /**
- * No need to build instances for now.
- */
- private Base64DecoderStringLookup() {
- // empty
- }
-
- @Override
- public String lookup(final String key) {
- if (key == null) {
- return null;
- }
- return new String(Base64.getDecoder().decode(key), StandardCharsets.ISO_8859_1);
- }
-
-}
diff --git a/src/main/java/org/apache/commons/text/lookup/Base64EncoderStringLookup.java b/src/main/java/org/apache/commons/text/lookup/Base64EncoderStringLookup.java
deleted file mode 100644
index 5c30951..0000000
--- a/src/main/java/org/apache/commons/text/lookup/Base64EncoderStringLookup.java
+++ /dev/null
@@ -1,69 +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.nio.charset.StandardCharsets;
-import java.util.Base64;
-
-import org.apache.commons.text.StringSubstitutor;
-
-/**
- * Encodes Base64 Strings.
- * <p>
- * Using a {@link StringLookup} from the {@link StringLookupFactory}:
- * </p>
- *
- * <pre>
- * StringLookupFactory.INSTANCE.base64EncoderStringLookup().lookup("HelloWorld!");
- * </pre>
- * <p>
- * Using a {@link StringSubstitutor}:
- * </p>
- *
- * <pre>
- * StringSubstitutor.createInterpolator().replace("... ${base64Encoder:HelloWorld!} ..."));
- * </pre>
- * <p>
- * The above examples convert {@code "HelloWorld!"} to {@code "SGVsbG9Xb3JsZCE="}.
- * </p>
- *
- * @since 1.6
- */
-final class Base64EncoderStringLookup extends AbstractStringLookup {
-
- /**
- * Defines the singleton for this class.
- */
- static final Base64EncoderStringLookup INSTANCE = new Base64EncoderStringLookup();
-
- /**
- * No need to build instances for now.
- */
- private Base64EncoderStringLookup() {
- // empty
- }
-
- @Override
- public String lookup(final String key) {
- if (key == null) {
- return null;
- }
- return Base64.getEncoder().encodeToString(key.getBytes(StandardCharsets.ISO_8859_1));
- }
-
-}
diff --git a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
index d87b2f3..dec504f 100644
--- a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
+++ b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
@@ -17,6 +17,8 @@
package org.apache.commons.text.lookup;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
import java.util.Map;
import java.util.function.Function;
@@ -37,13 +39,13 @@ import org.apache.commons.text.StringSubstitutor;
* </tr>
* <tr>
* <td>{@value #KEY_BASE64_DECODER}</td>
- * <td>{@link Base64DecoderStringLookup}</td>
+ * <td>{@link FunctionStringLookup}</td>
* <td>{@link #base64DecoderStringLookup()}</td>
* <td>1.6</td>
* </tr>
* <tr>
* <td>{@value #KEY_BASE64_ENCODER}</td>
- * <td>{@link Base64EncoderStringLookup}</td>
+ * <td>{@link FunctionStringLookup}</td>
* <td>{@link #base64EncoderStringLookup()}</td>
* <td>1.6</td>
* </tr>
@@ -149,7 +151,25 @@ public final class StringLookupFactory {
public static final StringLookupFactory INSTANCE = new StringLookupFactory();
/**
- * Defines the singleton for this class.
+ * Looks up keys from environment variables.
+ * <p>
+ * Using a {@link StringLookup} from the {@link StringLookupFactory}:
+ * </p>
+ *
+ * <pre>
+ * StringLookupFactory.INSTANCE.dateStringLookup().lookup("USER");
+ * </pre>
+ * <p>
+ * Using a {@link StringSubstitutor}:
+ * </p>
+ *
+ * <pre>
+ * StringSubstitutor.createInterpolator().replace("... ${env:USER} ..."));
+ * </pre>
+ * <p>
+ * The above examples convert (on Linux) {@code "USER"} to the current user name. On Windows 10, you would use
+ * {@code "USERNAME"} to the same effect.
+ * </p>
*/
static final FunctionStringLookup<String> INSTANCE_ENVIRONMENT_VARIABLES = FunctionStringLookup
.on(key -> System.getenv(key));
@@ -294,6 +314,53 @@ public final class StringLookupFactory {
}
/**
+ * Encodes Base64 Strings.
+ * <p>
+ * Using a {@link StringLookup} from the {@link StringLookupFactory}:
+ * </p>
+ *
+ * <pre>
+ * StringLookupFactory.INSTANCE.base64EncoderStringLookup().lookup("HelloWorld!");
+ * </pre>
+ * <p>
+ * Using a {@link StringSubstitutor}:
+ * </p>
+ *
+ * <pre>
+ * StringSubstitutor.createInterpolator().replace("... ${base64Encoder:HelloWorld!} ..."));
+ * </pre>
+ * <p>
+ * The above examples convert {@code "HelloWorld!"} to {@code "SGVsbG9Xb3JsZCE="}.
+ * </p>
+ * Defines the singleton for this class.
+ */
+ static final FunctionStringLookup<String> INSTANCE_BASE64_ENCODER = FunctionStringLookup
+ .on(key -> Base64.getEncoder().encodeToString(key.getBytes(StandardCharsets.ISO_8859_1)));
+
+ /**
+ * Decodes Base64 Strings.
+ * <p>
+ * Using a {@link StringLookup} from the {@link StringLookupFactory}:
+ * </p>
+ *
+ * <pre>
+ * StringLookupFactory.INSTANCE.base64DecoderStringLookup().lookup("SGVsbG9Xb3JsZCE=");
+ * </pre>
+ * <p>
+ * Using a {@link StringSubstitutor}:
+ * </p>
+ *
+ * <pre>
+ * StringSubstitutor.createInterpolator().replace("... ${base64Decoder:SGVsbG9Xb3JsZCE=} ..."));
+ * </pre>
+ * <p>
+ * The above examples convert {@code "SGVsbG9Xb3JsZCE="} to {@code "HelloWorld!"}.
+ * </p>
+ */
+ static final FunctionStringLookup<String> INSTANCE_BASE64_DECODER = FunctionStringLookup
+ .on(key -> new String(Base64.getDecoder().decode(key), StandardCharsets.ISO_8859_1));
+
+ /**
* No need to build instances for now.
*/
private StringLookupFactory() {
@@ -309,7 +376,7 @@ public final class StringLookupFactory {
public void addDefaultStringLookups(final Map<String, StringLookup> stringLookupMap) {
if (stringLookupMap != null) {
// "base64" is deprecated in favor of KEY_BASE64_DECODER.
- stringLookupMap.put("base64", Base64DecoderStringLookup.INSTANCE);
+ stringLookupMap.put("base64", StringLookupFactory.INSTANCE_BASE64_DECODER);
for (final DefaultStringLookup stringLookup : DefaultStringLookup.values()) {
stringLookupMap.put(InterpolatorStringLookup.toKey(stringLookup.getKey()),
stringLookup.getStringLookup());
@@ -341,7 +408,7 @@ public final class StringLookupFactory {
* @since 1.5
*/
public StringLookup base64DecoderStringLookup() {
- return Base64DecoderStringLookup.INSTANCE;
+ return StringLookupFactory.INSTANCE_BASE64_DECODER;
}
/**
@@ -368,7 +435,7 @@ public final class StringLookupFactory {
* @since 1.6
*/
public StringLookup base64EncoderStringLookup() {
- return Base64EncoderStringLookup.INSTANCE;
+ return StringLookupFactory.INSTANCE_BASE64_ENCODER;
}
/**
@@ -397,7 +464,7 @@ public final class StringLookupFactory {
*/
@Deprecated
public StringLookup base64StringLookup() {
- return Base64DecoderStringLookup.INSTANCE;
+ return StringLookupFactory.INSTANCE_BASE64_DECODER;
}
/**
diff --git a/src/test/java/org/apache/commons/text/lookup/Base64DecoderStringLookupTest.java b/src/test/java/org/apache/commons/text/lookup/Base64DecoderStringLookupTest.java
index eb8a744..f95ee47 100644
--- a/src/test/java/org/apache/commons/text/lookup/Base64DecoderStringLookupTest.java
+++ b/src/test/java/org/apache/commons/text/lookup/Base64DecoderStringLookupTest.java
@@ -21,18 +21,18 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
- * Tests {@link Base64DecoderStringLookup}.
+ * Tests {@link StringLookupFactory#INSTANCE_BASE64_DECODER}.
*/
public class Base64DecoderStringLookupTest {
@Test
public void test() {
- Assertions.assertEquals("HelloWorld!", Base64DecoderStringLookup.INSTANCE.lookup("SGVsbG9Xb3JsZCE="));
+ Assertions.assertEquals("HelloWorld!", StringLookupFactory.INSTANCE_BASE64_DECODER.lookup("SGVsbG9Xb3JsZCE="));
}
@Test
public void testNull() {
- Assertions.assertNull(Base64DecoderStringLookup.INSTANCE.lookup(null));
+ Assertions.assertNull(StringLookupFactory.INSTANCE_BASE64_DECODER.lookup(null));
}
}
diff --git a/src/test/java/org/apache/commons/text/lookup/Base64EncoderStringLookupTest.java b/src/test/java/org/apache/commons/text/lookup/Base64EncoderStringLookupTest.java
index 9591e20..4d05b81 100644
--- a/src/test/java/org/apache/commons/text/lookup/Base64EncoderStringLookupTest.java
+++ b/src/test/java/org/apache/commons/text/lookup/Base64EncoderStringLookupTest.java
@@ -21,18 +21,18 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
- * Tests {@link Base64EncoderStringLookup}.
+ * Tests {@link StringLookupFactory#INSTANCE_BASE64_ENCODER}.
*/
public class Base64EncoderStringLookupTest {
@Test
public void test() {
- Assertions.assertEquals("SGVsbG9Xb3JsZCE=", Base64EncoderStringLookup.INSTANCE.lookup("HelloWorld!"));
+ Assertions.assertEquals("SGVsbG9Xb3JsZCE=", StringLookupFactory.INSTANCE_BASE64_ENCODER.lookup("HelloWorld!"));
}
@Test
public void testNull() {
- Assertions.assertNull(Base64EncoderStringLookup.INSTANCE.lookup(null));
+ Assertions.assertNull(StringLookupFactory.INSTANCE_BASE64_ENCODER.lookup(null));
}
}
diff --git a/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java b/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java
index ad82c59..71dcbc0 100644
--- a/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java
+++ b/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java
@@ -68,8 +68,10 @@ public class StringLookupFactoryTest {
@Test
public void testSingletons() {
final StringLookupFactory stringLookupFactory = StringLookupFactory.INSTANCE;
- Assertions.assertSame(Base64DecoderStringLookup.INSTANCE, stringLookupFactory.base64DecoderStringLookup());
- Assertions.assertSame(Base64EncoderStringLookup.INSTANCE, stringLookupFactory.base64EncoderStringLookup());
+ Assertions.assertSame(StringLookupFactory.INSTANCE_BASE64_DECODER,
+ stringLookupFactory.base64DecoderStringLookup());
+ Assertions.assertSame(StringLookupFactory.INSTANCE_BASE64_ENCODER,
+ stringLookupFactory.base64EncoderStringLookup());
Assertions.assertSame(ConstantStringLookup.INSTANCE, stringLookupFactory.constantStringLookup());
Assertions.assertSame(DateStringLookup.INSTANCE, stringLookupFactory.dateStringLookup());
Assertions.assertSame(DnsStringLookup.INSTANCE, stringLookupFactory.dnsStringLookup());