Skip to content

Commit

Permalink
Restoring compatibility of the ConverterIfc
Browse files Browse the repository at this point in the history
  • Loading branch information
oswaldobapvicjr committed Jun 30, 2024
1 parent 4c4a8b6 commit e546854
Show file tree
Hide file tree
Showing 20 changed files with 65 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 <code>true</code> 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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
* <tr><td>ASTNode</td><td>ASTNode</td></tr>
* <tr><td>List&lt;?&gt;</td><td>ArrayConverter - each entry will be converted</td></tr>
* <tr><td>Map&lt?,?&gt;</td><td>StructureConverter - each entry will be converted</td></tr>
* <tr><td>Other types</td><td>BinaryConverter</td></tr>
* </table>
*
* <i>* Be careful with conversion problems when using float or double, which are fractional
Expand All @@ -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) {
Expand All @@ -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() + "'");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,23 @@

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();

@Test
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);
}

@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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}

0 comments on commit e546854

Please sign in to comment.