Skip to content
This repository was archived by the owner on Feb 19, 2019. It is now read-only.

Commit 34f034e

Browse files
committed
Fix number type casting
1 parent 634ac58 commit 34f034e

File tree

7 files changed

+15
-8
lines changed

7 files changed

+15
-8
lines changed

src/main/java/clientapi/value/type/number/AbstractNumberType.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import clientapi.value.Value;
2222

2323
import java.lang.reflect.Field;
24+
import java.util.function.Function;
2425

2526
/**
2627
* Basic type for Number values
@@ -45,11 +46,17 @@ public class AbstractNumberType<T extends Number> extends Value<T> implements IN
4546
*/
4647
private final T interval;
4748

48-
public AbstractNumberType(String name, String parent, String id, String description, Object object, Field field, T minimum, T maximum, T interval) {
49+
/**
50+
* The function that is called in {@link Number} to yield this Number Type's value
51+
*/
52+
private final Function<Number, T> valueFunction;
53+
54+
public AbstractNumberType(String name, String parent, String id, String description, Object object, Field field, T minimum, T maximum, T interval, Function<Number, T> valueFunction) {
4955
super(name, parent, id, description, object, field);
5056
this.minimum = minimum;
5157
this.maximum = maximum;
5258
this.interval = interval;
59+
this.valueFunction = valueFunction;
5360
}
5461

5562
@Override
@@ -59,7 +66,7 @@ public final T getValue() {
5966

6067
@Override
6168
public final void setValue(T value) {
62-
super.setValue(MathUtils.clamp(value, minimum, maximum));
69+
super.setValue(MathUtils.clamp(valueFunction.apply(value), minimum, maximum));
6370
}
6471

6572
@Override

src/main/java/clientapi/value/type/number/ByteType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class ByteType extends AbstractNumberType<Byte> {
2626

2727
public ByteType(String name, String parent, String id, String description, Object object, Field field, Byte minimum, Byte maximum, Byte interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::byteValue);
2929
}
3030
}

src/main/java/clientapi/value/type/number/DoubleType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class DoubleType extends AbstractNumberType<Double> {
2626

2727
public DoubleType(String name, String parent, String id, String description, Object object, Field field, Double minimum, Double maximum, Double interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::doubleValue);
2929
}
3030
}

src/main/java/clientapi/value/type/number/FloatType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class FloatType extends AbstractNumberType<Float> {
2626

2727
public FloatType(String name, String parent, String id, String description, Object object, Field field, Float minimum, Float maximum, Float interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::floatValue);
2929
}
3030
}

src/main/java/clientapi/value/type/number/IntegerType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class IntegerType extends AbstractNumberType<Integer> {
2626

2727
public IntegerType(String name, String parent, String id, String description, Object object, Field field, Integer minimum, Integer maximum, Integer interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::intValue);
2929
}
3030
}

src/main/java/clientapi/value/type/number/LongType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class LongType extends AbstractNumberType<Long> {
2626

2727
public LongType(String name, String parent, String id, String description, Object object, Field field, Long minimum, Long maximum, Long interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::longValue);
2929
}
3030
}

src/main/java/clientapi/value/type/number/ShortType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
public class ShortType extends AbstractNumberType<Short> {
2626

2727
public ShortType(String name, String parent, String id, String description, Object object, Field field, Short minimum, Short maximum, Short interval) {
28-
super(name, parent, id, description, object, field, minimum, maximum, interval);
28+
super(name, parent, id, description, object, field, minimum, maximum, interval, Number::shortValue);
2929
}
3030
}

0 commit comments

Comments
 (0)