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

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

commit 3e230eec1cee1a1e74a0806f2f775b10990adc13
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Jun 27 06:04:01 2019 +0200

    CAMEL-13689: camel-core - Converting string to boolean should only accept 
true or false literals
---
 .../java/org/apache/camel/language/spel/SpelTest.java |  6 ------
 .../org/apache/camel/converter/ObjectConverter.java   |  2 +-
 .../apache/camel/converter/ObjectConverterTest.java   | 19 +++++++++++++++++++
 .../main/java/org/apache/camel/util/ObjectHelper.java |  6 +++++-
 4 files changed, 25 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
index f808eb4..58a47ba 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java
@@ -43,12 +43,6 @@ public class SpelTest extends LanguageTestSupport {
     }
     
     @Test
-    public void testGetOutFalseKeepsNullOutMessage() throws Exception {
-        assertExpression("exchange.hasOut()", false);
-        assertFalse(exchange.hasOut());
-    }
-
-    @Test
     public void testResponseCreatesOutMessage() throws Exception {
         assertExpression("#{response.body}", null);
         assertTrue(exchange.hasOut());
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
index 05f9750..a1c63a2 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -259,7 +259,7 @@ public final class ObjectConverter {
 
     @Converter
     public static Boolean toBoolean(String value) {
-        return Boolean.parseBoolean(value);
+        return org.apache.camel.util.ObjectHelper.toBoolean(value);
     }
 
 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
index 4eea211..e969278 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
@@ -145,4 +145,23 @@ public class ObjectConverterTest extends Assert {
         assertEquals((Float) Float.NaN, ObjectConverter.toFloat(Float.NaN));
     }
 
+    @Test
+    public void testToBoolean() throws Exception {
+        assertTrue(ObjectConverter.toBoolean("true"));
+        assertTrue(ObjectConverter.toBoolean("TRUE"));
+        assertFalse(ObjectConverter.toBoolean("false"));
+        assertFalse(ObjectConverter.toBoolean("FALSE"));
+        assertNull(ObjectConverter.toBoolean("1"));
+        assertNull(ObjectConverter.toBoolean(""));
+        assertNull(ObjectConverter.toBoolean("yes"));
+
+        assertTrue(ObjectConverter.toBool("true"));
+        assertTrue(ObjectConverter.toBool("TRUE"));
+        assertFalse(ObjectConverter.toBool("false"));
+        assertFalse(ObjectConverter.toBool("FALSE"));
+        assertFalse(ObjectConverter.toBool("1"));
+        assertFalse(ObjectConverter.toBool(""));
+        assertFalse(ObjectConverter.toBool("yes"));
+    }
+
 }
diff --git 
a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java 
b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
index d357fe2..7f97767 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
@@ -127,7 +127,11 @@ public final class ObjectHelper {
             return (Boolean) value;
         }
         if (value instanceof String) {
-            return Boolean.valueOf((String) value);
+            // we only want to accept true or false as accepted values
+            String str = (String) value;
+            if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) 
{
+                return Boolean.valueOf(str);
+            }
         }
         if (value instanceof Integer) {
             return (Integer) value > 0 ? Boolean.TRUE : Boolean.FALSE;

Reply via email to