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