diff --git a/src/main/java/com/ezylang/evalex/data/conversion/ArrayConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/ArrayConverter.java index 7325bb9e..ee8d0011 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/ArrayConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/ArrayConverter.java @@ -39,7 +39,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return object instanceof List || object.getClass().isArray(); } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/BinaryConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/BinaryConverter.java index 4c658a71..0952a2ef 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/BinaryConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/BinaryConverter.java @@ -31,7 +31,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { - return configuration.isBinaryAllowed(); + public boolean canConvert(Object object) { + return true; } } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/BooleanConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/BooleanConverter.java index 9d6a9e70..143f8cd5 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/BooleanConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/BooleanConverter.java @@ -26,7 +26,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return object instanceof Boolean; } } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/ConverterIfc.java b/src/main/java/com/ezylang/evalex/data/conversion/ConverterIfc.java index 6263809c..689fdeaf 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/ConverterIfc.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/ConverterIfc.java @@ -34,10 +34,9 @@ public interface ConverterIfc { * Checks, if a given object can be converted by this converter. * * @param object The object to convert. - * @param configuration The current expression configuration. * @return true if the object can be converted, false otherwise. */ - boolean canConvert(Object object, ExpressionConfiguration configuration); + boolean canConvert(Object object); default IllegalArgumentException illegalArgument(Object object) { return new IllegalArgumentException( diff --git a/src/main/java/com/ezylang/evalex/data/conversion/DateTimeConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/DateTimeConverter.java index 25916fb6..ece92ec6 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/DateTimeConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/DateTimeConverter.java @@ -89,7 +89,7 @@ private Instant parseToInstant(String value, ZoneId zoneId, DateTimeFormatter fo } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return (object instanceof Instant || object instanceof ZonedDateTime || object instanceof OffsetDateTime diff --git a/src/main/java/com/ezylang/evalex/data/conversion/DefaultEvaluationValueConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/DefaultEvaluationValueConverter.java index f95e50d4..3fd6a0ba 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/DefaultEvaluationValueConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/DefaultEvaluationValueConverter.java @@ -48,7 +48,6 @@ * ASTNodeASTNode * List<?>ArrayConverter - each entry will be converted * Map<?,?>StructureConverter - each entry will be converted - * Other typesBinaryConverter * * * * Be careful with conversion problems when using float or double, which are fractional @@ -65,8 +64,7 @@ public class DefaultEvaluationValueConverter implements EvaluationValueConverter new DurationConverter(), new ExpressionNodeConverter(), new ArrayConverter(), - new StructureConverter(), - new BinaryConverter()); + new StructureConverter()); @Override public EvaluationValue convertObject(Object object, ExpressionConfiguration configuration) { @@ -80,11 +78,15 @@ public EvaluationValue convertObject(Object object, ExpressionConfiguration conf } for (ConverterIfc converter : converters) { - if (converter.canConvert(object, configuration)) { + if (converter.canConvert(object)) { return converter.convert(object, configuration); } } + if (configuration.isBinaryAllowed()) { + return EvaluationValue.binaryValue(object); + } + throw new IllegalArgumentException( "Unsupported data type '" + object.getClass().getName() + "'"); } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/DurationConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/DurationConverter.java index 1973ec62..43a95b5c 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/DurationConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/DurationConverter.java @@ -27,7 +27,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return object instanceof Duration; } } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverter.java index 7ba918d9..92228198 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverter.java @@ -27,7 +27,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return object instanceof ASTNode; } } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/NumberConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/NumberConverter.java index ab4f8459..f39767bc 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/NumberConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/NumberConverter.java @@ -51,7 +51,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return (object instanceof BigDecimal || object instanceof BigInteger || object instanceof Double diff --git a/src/main/java/com/ezylang/evalex/data/conversion/StringConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/StringConverter.java index 7052a6a8..636a65bd 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/StringConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/StringConverter.java @@ -37,7 +37,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return (object instanceof CharSequence || object instanceof Character); } } diff --git a/src/main/java/com/ezylang/evalex/data/conversion/StructureConverter.java b/src/main/java/com/ezylang/evalex/data/conversion/StructureConverter.java index 03a1c899..0a5cf927 100644 --- a/src/main/java/com/ezylang/evalex/data/conversion/StructureConverter.java +++ b/src/main/java/com/ezylang/evalex/data/conversion/StructureConverter.java @@ -33,7 +33,7 @@ public EvaluationValue convert(Object object, ExpressionConfiguration configurat } @Override - public boolean canConvert(Object object, ExpressionConfiguration configuration) { + public boolean canConvert(Object object) { return object instanceof Map; } } diff --git a/src/test/java/com/ezylang/evalex/data/conversion/ArrayConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/ArrayConverterTest.java index e7112ae4..66b664fa 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/ArrayConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/ArrayConverterTest.java @@ -218,18 +218,18 @@ void testStringArray() { @Test void testCanConvert() { - assertThat(converter.canConvert(new String[] {"1", "2", "3"}, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Collections.EMPTY_LIST, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Arrays.asList(1, 2, 3), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new Integer[] {1, 2, 3}, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new int[] {1, 2, 3}, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new double[] {1.0, 2.0, 3.0}, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new boolean[] {true, false}, defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(new String[] {"1", "2", "3"})).isTrue(); + assertThat(converter.canConvert(Collections.EMPTY_LIST)).isTrue(); + assertThat(converter.canConvert(Arrays.asList(1, 2, 3))).isTrue(); + assertThat(converter.canConvert(new Integer[] {1, 2, 3})).isTrue(); + assertThat(converter.canConvert(new int[] {1, 2, 3})).isTrue(); + assertThat(converter.canConvert(new double[] {1.0, 2.0, 3.0})).isTrue(); + assertThat(converter.canConvert(new boolean[] {true, false})).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert(new BigDecimal(1), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert(new BigDecimal(1))).isFalse(); } @Test diff --git a/src/test/java/com/ezylang/evalex/data/conversion/BinaryConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/BinaryConverterTest.java index 64ead837..635d0521 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/BinaryConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/BinaryConverterTest.java @@ -23,11 +23,8 @@ class BinaryConverterTest { - private final ExpressionConfiguration configurationAllowed = - ExpressionConfiguration.builder().binaryAllowed(true).build(); - - private final ExpressionConfiguration configurationNotAllowed = - ExpressionConfiguration.builder().binaryAllowed(false).build(); + private final ExpressionConfiguration defaultConfiguration = + ExpressionConfiguration.defaultConfiguration(); private final BinaryConverter converter = new BinaryConverter(); @@ -35,7 +32,7 @@ class BinaryConverterTest { void testObject() { Object object = new Object(); - EvaluationValue converted = converter.convert(object, configurationAllowed); + EvaluationValue converted = converter.convert(object, defaultConfiguration); assertThat(converted.getDataType()).isEqualTo(EvaluationValue.DataType.BINARY); assertThat(converted.getValue()).isSameAs(object); @@ -43,11 +40,6 @@ void testObject() { @Test void testCanConvert() { - assertThat(converter.canConvert(new Object(), configurationAllowed)).isTrue(); - } - - @Test - void testCanNotConvert() { - assertThat(converter.canConvert(new Object(), configurationNotAllowed)).isFalse(); + assertThat(converter.canConvert(new Object())).isTrue(); } } diff --git a/src/test/java/com/ezylang/evalex/data/conversion/BooleanConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/BooleanConverterTest.java index 3628839a..a2d3c1fa 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/BooleanConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/BooleanConverterTest.java @@ -47,14 +47,14 @@ void testBooleanFalse() { @Test void testCanConvert() { - assertThat(converter.canConvert(true, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Boolean.valueOf("false"), defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(true)).isTrue(); + assertThat(converter.canConvert(Boolean.valueOf("false"))).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert("true", defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(new BigDecimal(1), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert("true")).isFalse(); + assertThat(converter.canConvert(new BigDecimal(1))).isFalse(); } @Test diff --git a/src/test/java/com/ezylang/evalex/data/conversion/DateTimeConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/DateTimeConverterTest.java index cc37058f..a35890d1 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/DateTimeConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/DateTimeConverterTest.java @@ -128,19 +128,19 @@ void testCalendar() { @Test void testCanConvert() { - assertThat(converter.canConvert(Instant.now(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(ZonedDateTime.now(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(OffsetDateTime.now(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(LocalDate.now(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(LocalDateTime.now(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new Date(), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Calendar.getInstance(), defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(Instant.now())).isTrue(); + assertThat(converter.canConvert(ZonedDateTime.now())).isTrue(); + assertThat(converter.canConvert(OffsetDateTime.now())).isTrue(); + assertThat(converter.canConvert(LocalDate.now())).isTrue(); + assertThat(converter.canConvert(LocalDateTime.now())).isTrue(); + assertThat(converter.canConvert(new Date())).isTrue(); + assertThat(converter.canConvert(Calendar.getInstance())).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert("hello", defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(new BigDecimal(1), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert("hello")).isFalse(); + assertThat(converter.canConvert(new BigDecimal(1))).isFalse(); } @Test diff --git a/src/test/java/com/ezylang/evalex/data/conversion/DurationConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/DurationConverterTest.java index 3766f29d..dde75dac 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/DurationConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/DurationConverterTest.java @@ -42,12 +42,12 @@ void testDuration() { @Test void testCanConvert() { - assertThat(converter.canConvert(Duration.ofMinutes(10), defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(Duration.ofMinutes(10))).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert("hello", defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(new BigDecimal(10), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert("hello")).isFalse(); + assertThat(converter.canConvert(new BigDecimal(10))).isFalse(); } } diff --git a/src/test/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverterTest.java index b97facc7..276fb53d 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/ExpressionNodeConverterTest.java @@ -45,12 +45,12 @@ void testDuration() { @Test void testCanConvert() { - assertThat(converter.canConvert(testNode, defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(testNode)).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert("hello", defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(new BigDecimal(10), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert("hello")).isFalse(); + assertThat(converter.canConvert(new BigDecimal(10))).isFalse(); } } diff --git a/src/test/java/com/ezylang/evalex/data/conversion/NumberConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/NumberConverterTest.java index f8e6b804..f5a70365 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/NumberConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/NumberConverterTest.java @@ -109,20 +109,20 @@ void testByte() { @Test void testCanConvert() { - assertThat(converter.canConvert(new BigDecimal(8), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(new BigInteger("5"), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Double.parseDouble("3.0"), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Float.parseFloat("2.0"), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(3, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(3L, defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Short.parseShort("79"), defaultConfiguration)).isTrue(); - assertThat(converter.canConvert(Byte.parseByte("2"), defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(new BigDecimal(8))).isTrue(); + assertThat(converter.canConvert(new BigInteger("5"))).isTrue(); + assertThat(converter.canConvert(Double.parseDouble("3.0"))).isTrue(); + assertThat(converter.canConvert(Float.parseFloat("2.0"))).isTrue(); + assertThat(converter.canConvert(3)).isTrue(); + assertThat(converter.canConvert(3L)).isTrue(); + assertThat(converter.canConvert(Short.parseShort("79"))).isTrue(); + assertThat(converter.canConvert(Byte.parseByte("2"))).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert("hello", defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(true, defaultConfiguration)).isFalse(); + assertThat(converter.canConvert("hello")).isFalse(); + assertThat(converter.canConvert(true)).isFalse(); } @Test diff --git a/src/test/java/com/ezylang/evalex/data/conversion/StringConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/StringConverterTest.java index d9587665..12088d96 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/StringConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/StringConverterTest.java @@ -48,14 +48,14 @@ void testCharacter() { @Test void testCanConvert() { - assertThat(converter.canConvert("Hello", defaultConfiguration)).isTrue(); - assertThat(converter.canConvert('P', defaultConfiguration)).isTrue(); + assertThat(converter.canConvert("Hello")).isTrue(); + assertThat(converter.canConvert('P')).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert(new BigDecimal(3), defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(true, defaultConfiguration)).isFalse(); + assertThat(converter.canConvert(new BigDecimal(3))).isFalse(); + assertThat(converter.canConvert(true)).isFalse(); } @Test diff --git a/src/test/java/com/ezylang/evalex/data/conversion/StructureConverterTest.java b/src/test/java/com/ezylang/evalex/data/conversion/StructureConverterTest.java index 9807cb36..e78f1b10 100644 --- a/src/test/java/com/ezylang/evalex/data/conversion/StructureConverterTest.java +++ b/src/test/java/com/ezylang/evalex/data/conversion/StructureConverterTest.java @@ -66,12 +66,12 @@ void testMapEmpty() { @Test void testCanConvert() { - assertThat(converter.canConvert(Collections.EMPTY_MAP, defaultConfiguration)).isTrue(); + assertThat(converter.canConvert(Collections.EMPTY_MAP)).isTrue(); } @Test void testCanNotConvert() { - assertThat(converter.canConvert(new int[] {1, 2, 3}, defaultConfiguration)).isFalse(); - assertThat(converter.canConvert(new BigDecimal(1), defaultConfiguration)).isFalse(); + assertThat(converter.canConvert(new int[] {1, 2, 3})).isFalse(); + assertThat(converter.canConvert(new BigDecimal(1))).isFalse(); } }