Skip to content

Commit ba87114

Browse files
committed
optimise type conversion
1 parent 4a6eaeb commit ba87114

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

src/main/java/com/github/sidhant92/boolparser/datatype/AbstractDataType.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public AbstractDataType(final Class<T> clazz) {
1919

2020
public boolean defaultIsValid(final Object value, final ObjectMapper objectMapper) {
2121
try {
22+
if (clazz.isInstance(value)) {
23+
return true;
24+
}
2225
return objectMapper.convertValue(value, clazz) != null;
2326
} catch (final Exception ex) {
2427
log.error("Unable to convert value = {} to type = {}", value, clazz);
@@ -28,7 +31,10 @@ public boolean defaultIsValid(final Object value, final ObjectMapper objectMappe
2831

2932
public Optional<T> defaultGetValue(final Object value, final ObjectMapper objectMapper) {
3033
try {
31-
return (Optional<T>) Optional.of(objectMapper.convertValue(value, clazz));
34+
if (clazz.isInstance(value)) {
35+
return Optional.of(clazz.cast(value));
36+
}
37+
return Optional.of(objectMapper.convertValue(value, clazz));
3238
} catch (final Exception ex) {
3339
log.error("Unable to convert value = {} to type = {}", value, clazz);
3440
}

src/main/java/com/github/sidhant92/boolparser/util/ValueUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.sidhant92.boolparser.util;
22

33
import java.util.Optional;
4+
import org.apache.maven.artifact.versioning.ComparableVersion;
45
import com.github.sidhant92.boolparser.constant.DataType;
56

67
public class ValueUtils {
@@ -14,6 +15,8 @@ public static Object convertValue(final String value, final DataType dataType) {
1415
return Double.parseDouble(value);
1516
case BOOLEAN:
1617
return Boolean.parseBoolean(value);
18+
case APP_VERSION:
19+
new ComparableVersion(value);
1720
default:
1821
if (value.startsWith("'") && value.endsWith("'")) {
1922
return value.substring(1, value.length() -1);

0 commit comments

Comments
 (0)