This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 4206445  JMESPathExtractor writes error log entries if JMESPath filter 
returns empty result
4206445 is described below

commit 4206445d058b1e1cbae8e71f07c5f6d1e2e91935
Author: Felix Schumacher <[email protected]>
AuthorDate: Sat Apr 24 12:24:43 2021 +0200

    JMESPathExtractor writes error log entries if JMESPath filter returns empty 
result
    
    Second try to fix the bug.
    
    Bugzilla Id: 65257
---
 .../org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java  | 4 +++-
 .../apache/jmeter/extractor/json/jmespath/TestJMESPathExtractor.java  | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
 
b/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
index 8e25c0f..a1e5eea 100644
--- 
a/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
+++ 
b/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
@@ -79,7 +79,7 @@ public class JMESPathExtractor extends 
AbstractScopedTestElement
         try {
             JsonNode actualObj = OBJECT_MAPPER.readValue(jsonResponse, 
JsonNode.class);
             JsonNode result = 
JMESPathCache.getInstance().get(jsonPathExpression).search(actualObj);
-            if (result.isNull() || result.isEmpty()) {
+            if (result.isNull()) {
                 handleNullResult(vars, refName, defaultValue, matchNumber);
                 return;
             }
@@ -87,6 +87,8 @@ public class JMESPathExtractor extends 
AbstractScopedTestElement
             // if more than one value extracted, suffix with "_index"
             if (resultList.size() > 1) {
                 handleListResult(vars, refName, defaultValue, matchNumber, 
resultList);
+            } else if (resultList.isEmpty()){
+                // no value extracted. Use defaultValue
             } else {
                 // else just one value extracted
                 handleSingleResult(vars, refName, matchNumber, resultList);
diff --git 
a/src/components/src/test/java/org/apache/jmeter/extractor/json/jmespath/TestJMESPathExtractor.java
 
b/src/components/src/test/java/org/apache/jmeter/extractor/json/jmespath/TestJMESPathExtractor.java
index bc58d58..87f72d0 100644
--- 
a/src/components/src/test/java/org/apache/jmeter/extractor/json/jmespath/TestJMESPathExtractor.java
+++ 
b/src/components/src/test/java/org/apache/jmeter/extractor/json/jmespath/TestJMESPathExtractor.java
@@ -73,7 +73,7 @@ public class TestJMESPathExtractor {
     @RunWith(Parameterized.class)
     public static class OneMatchOnAllExtractedValues {
 
-        @Parameters
+        @Parameters(name = "Extract from {0} with path {1} should result in 
{2} for match {3}")
         public static Collection<String[]> data() {
             return Arrays.asList(new String[][] {
                 {"[\"one\"]", "[*]", "one", "1"},

Reply via email to