From 750e90e3f86c1202423aa0c89854ed3f2dcb0a57 Mon Sep 17 00:00:00 2001
From: iProdigy <8106344+iProdigy@users.noreply.github.com>
Date: Tue, 25 Jul 2023 11:47:27 -0500
Subject: [PATCH 1/4] Fix expression pattern compilation on android
---
core/src/main/java/feign/template/Expressions.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/feign/template/Expressions.java b/core/src/main/java/feign/template/Expressions.java
index 3b579c33bb..affb2247c6 100644
--- a/core/src/main/java/feign/template/Expressions.java
+++ b/core/src/main/java/feign/template/Expressions.java
@@ -41,7 +41,7 @@ public final class Expressions {
*
Date: Wed, 26 Jul 2023 10:40:36 -0500
Subject: [PATCH 2/4] Add test cases
---
.../main/java/feign/template/Expressions.java | 4 +--
.../java/feign/template/ExpressionsTest.java | 26 +++++++++++++++++++
2 files changed, 28 insertions(+), 2 deletions(-)
create mode 100644 core/src/test/java/feign/template/ExpressionsTest.java
diff --git a/core/src/main/java/feign/template/Expressions.java b/core/src/main/java/feign/template/Expressions.java
index affb2247c6..644a24a3b3 100644
--- a/core/src/main/java/feign/template/Expressions.java
+++ b/core/src/main/java/feign/template/Expressions.java
@@ -38,9 +38,9 @@ public final class Expressions {
*
* This is not a complete implementation of the rfc
*
- * RFC 6570 Expressions
*/
- private static final Pattern EXPRESSION_PATTERN =
+ static final Pattern EXPRESSION_PATTERN =
Pattern.compile("^(\\{([+#./;?&=,!@|]?)(.+)\\})$");
// Partially From:
diff --git a/core/src/test/java/feign/template/ExpressionsTest.java b/core/src/test/java/feign/template/ExpressionsTest.java
new file mode 100644
index 0000000000..c96b27410e
--- /dev/null
+++ b/core/src/test/java/feign/template/ExpressionsTest.java
@@ -0,0 +1,26 @@
+package feign.template;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Collections;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ExpressionsTest {
+
+ @Test
+ public void simpleExpression() {
+ Expression expression = Expressions.create("{foo}");
+ assertThat(expression).isNotNull();
+ String expanded = expression.expand(Collections.singletonMap("foo", "bar"), false);
+ assertThat(expanded).isEqualToIgnoringCase("foo=bar");
+ }
+
+ @Test
+ public void androidCompatibility() {
+ // To match close brace on Android, it must be escaped due to the simpler ICU regex engine
+ String pattern = Expressions.EXPRESSION_PATTERN.pattern();
+ assertThat(pattern.contains("}")).isEqualTo(pattern.contains("\\}"));
+ }
+
+}
From e2e6efed4a0c239b0bf55fe832730b33e68813d4 Mon Sep 17 00:00:00 2001
From: iProdigy
Date: Wed, 26 Jul 2023 10:43:37 -0500
Subject: [PATCH 3/4] Add license header
---
.../test/java/feign/template/ExpressionsTest.java | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/core/src/test/java/feign/template/ExpressionsTest.java b/core/src/test/java/feign/template/ExpressionsTest.java
index c96b27410e..ec28089635 100644
--- a/core/src/test/java/feign/template/ExpressionsTest.java
+++ b/core/src/test/java/feign/template/ExpressionsTest.java
@@ -1,3 +1,16 @@
+/*
+ * Copyright 2012-2023 The Feign Authors
+ *
+ * Licensed 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 feign.template;
import org.junit.jupiter.api.Test;
From 563986b8a3a8efda2aa8c9aab618e3bf9a95370e Mon Sep 17 00:00:00 2001
From: iProdigy
Date: Wed, 26 Jul 2023 10:59:27 -0500
Subject: [PATCH 4/4] Reformat
---
core/src/test/java/feign/template/ExpressionsTest.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/core/src/test/java/feign/template/ExpressionsTest.java b/core/src/test/java/feign/template/ExpressionsTest.java
index ec28089635..dd2c4cbb9b 100644
--- a/core/src/test/java/feign/template/ExpressionsTest.java
+++ b/core/src/test/java/feign/template/ExpressionsTest.java
@@ -14,9 +14,7 @@
package feign.template;
import org.junit.jupiter.api.Test;
-
import java.util.Collections;
-
import static org.assertj.core.api.Assertions.assertThat;
public class ExpressionsTest {
@@ -35,5 +33,4 @@ public void androidCompatibility() {
String pattern = Expressions.EXPRESSION_PATTERN.pattern();
assertThat(pattern.contains("}")).isEqualTo(pattern.contains("\\}"));
}
-
}