added type coercions for String to BigDecimal and BigInteger
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/223c3916 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/223c3916 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/223c3916 Branch: refs/heads/master Commit: 223c3916ecbf7604eb297960e968200a8f2e4015 Parents: 5dd08aa Author: U-VIRTUSTREAM\Michael_Sc <[email protected]> Authored: Wed Jun 3 17:52:43 2015 +0200 Committer: U-VIRTUSTREAM\Michael_Sc <[email protected]> Committed: Wed Jun 3 17:52:43 2015 +0200 ---------------------------------------------------------------------- .../main/java/brooklyn/util/flags/TypeCoercions.java | 12 ++++++++++++ .../java/brooklyn/util/internal/TypeCoercionsTest.java | 6 ++++++ 2 files changed, 18 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/223c3916/core/src/main/java/brooklyn/util/flags/TypeCoercions.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/util/flags/TypeCoercions.java b/core/src/main/java/brooklyn/util/flags/TypeCoercions.java index 48bb495..d93528a 100644 --- a/core/src/main/java/brooklyn/util/flags/TypeCoercions.java +++ b/core/src/main/java/brooklyn/util/flags/TypeCoercions.java @@ -665,12 +665,24 @@ public class TypeCoercions { return input.intValue(); } }); + registerAdapter(String.class, BigDecimal.class, new Function<String,BigDecimal>() { + @Override + public BigDecimal apply(String input) { + return new BigDecimal(input); + } + }); registerAdapter(Double.class, BigDecimal.class, new Function<Double,BigDecimal>() { @Override public BigDecimal apply(Double input) { return BigDecimal.valueOf(input); } }); + registerAdapter(String.class, BigInteger.class, new Function<String,BigInteger>() { + @Override + public BigInteger apply(String input) { + return new BigInteger(input); + } + }); registerAdapter(Long.class, BigInteger.class, new Function<Long,BigInteger>() { @Override public BigInteger apply(Long input) { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/223c3916/core/src/test/java/brooklyn/util/internal/TypeCoercionsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/internal/TypeCoercionsTest.java b/core/src/test/java/brooklyn/util/internal/TypeCoercionsTest.java index 3c09e1b..9b2f6b0 100644 --- a/core/src/test/java/brooklyn/util/internal/TypeCoercionsTest.java +++ b/core/src/test/java/brooklyn/util/internal/TypeCoercionsTest.java @@ -151,6 +151,12 @@ public class TypeCoercionsTest { } @Test + public void testCoerceStringToBigNumber() { + assertEquals(TypeCoercions.coerce("0.5", BigDecimal.class), BigDecimal.valueOf(0.5)); + assertEquals(TypeCoercions.coerce("1", BigInteger.class), BigInteger.valueOf(1)); + } + + @Test public void testCoerceStringToEnum() { assertEquals(TypeCoercions.coerce("STARTING", Lifecycle.class), Lifecycle.STARTING); assertEquals(TypeCoercions.coerce("Starting", Lifecycle.class), Lifecycle.STARTING);
