You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ge...@apache.org on 2017/05/25 11:38:35 UTC
[1/2] brooklyn-server git commit: Fix type-coercion to Iterable>
Repository: brooklyn-server
Updated Branches:
refs/heads/master 1f8f9eb9d -> 75e8cc8c3
Fix type-coercion to Iterable<?>
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6e6957e2
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6e6957e2
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6e6957e2
Branch: refs/heads/master
Commit: 6e6957e2ed2b37387491a654b32d25199e748dd2
Parents: 1f8f9eb
Author: Aled Sage <al...@gmail.com>
Authored: Thu May 25 11:55:01 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu May 25 11:55:01 2017 +0100
----------------------------------------------------------------------
.../brooklyn/util/javalang/coerce/TypeCoercerExtensible.java | 8 ++++----
.../brooklyn/util/javalang/coerce/TypeCoercionsTest.java | 7 +++++++
2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6e6957e2/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercerExtensible.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercerExtensible.java b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercerExtensible.java
index a673131..7aeb3fb 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercerExtensible.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercerExtensible.java
@@ -120,8 +120,8 @@ public class TypeCoercerExtensible implements TypeCoercer {
//recursive coercion of parameterized collections and map entries
if (targetTypeToken.getType() instanceof ParameterizedType) {
- if (value instanceof Collection && Collection.class.isAssignableFrom(targetType)) {
- result = tryCoerceCollection(value, targetTypeToken, targetType);
+ if (value instanceof Iterable && Iterable.class.isAssignableFrom(targetType)) {
+ result = tryCoerceIterable(value, targetTypeToken, targetType);
if (result != null && result.isAbsent() && targetType.isInstance(value)) {
log.warn("Failed to coerce collection from " + value.getClass().getName() + " to " + targetTypeToken
@@ -238,11 +238,11 @@ public class TypeCoercerExtensible implements TypeCoercer {
* returns null if it just doesn't apply, a {@link Maybe.Present} if it succeeded,
* or {@link Maybe.Absent} with a good exception if it should have applied but couldn't */
@SuppressWarnings("unchecked")
- protected <T> Maybe<T> tryCoerceCollection(Object value, TypeToken<T> targetTypeToken, Class<? super T> targetType) {
+ protected <T> Maybe<T> tryCoerceIterable(Object value, TypeToken<T> targetTypeToken, Class<? super T> targetType) {
if (!(value instanceof Iterable) || !(Iterable.class.isAssignableFrom(targetTypeToken.getRawType()))) return null;
Type[] arguments = ((ParameterizedType) targetTypeToken.getType()).getActualTypeArguments();
if (arguments.length != 1) {
- return Maybe.absent(new IllegalStateException("Unexpected number of parameters in collection type: " + arguments));
+ return Maybe.absent(new IllegalStateException("Unexpected number of parameters in iterable type: " + arguments));
}
Collection<Object> coerced = Lists.newLinkedList();
TypeToken<?> listEntryType = TypeToken.of(arguments[0]);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6e6957e2/utils/common/src/test/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercionsTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercionsTest.java b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercionsTest.java
index 1a3d560..bd66c2e 100644
--- a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercionsTest.java
+++ b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/coerce/TypeCoercionsTest.java
@@ -245,6 +245,13 @@ public class TypeCoercionsTest {
}
@Test
+ public void testListEntryToIterableCoercion() {
+ @SuppressWarnings("serial")
+ Iterable<?> val = coerce(ImmutableList.of("1", "2"), new TypeToken<Iterable<Integer>>() {});
+ Assert.assertEquals(ImmutableList.copyOf(val), ImmutableList.of(1, 2));
+ }
+
+ @Test
public void testMapValueCoercion() {
@SuppressWarnings("serial")
Map<?,?> s = coerce(ImmutableMap.of("int", "java.lang.Integer", "double", "java.lang.Double"), new TypeToken<Map<String, Class<?>>>() { });
[2/2] brooklyn-server git commit: Closes #698
Posted by ge...@apache.org.
Closes #698
Fix type-coercion to Iterable<?>
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/75e8cc8c
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/75e8cc8c
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/75e8cc8c
Branch: refs/heads/master
Commit: 75e8cc8c3466ba794b74f4b3c15219d8a16112bb
Parents: 1f8f9eb 6e6957e
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Thu May 25 12:38:25 2017 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Thu May 25 12:38:25 2017 +0100
----------------------------------------------------------------------
.../brooklyn/util/javalang/coerce/TypeCoercerExtensible.java | 8 ++++----
.../brooklyn/util/javalang/coerce/TypeCoercionsTest.java | 7 +++++++
2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------