Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/main/java/org/scijava/convert/DefaultConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,17 @@ private Collection<Object> createCollection(final Class<?> type) {
public boolean canConvert(final Class<?> src, final Type dest) {

// Handle array types, including generic array types.
if (isArray(dest)) return true;
// The logic follows from the types that ArrayUtils.toCollection
// can convert
if (isArray(dest)){
// toCollection handles any type of Collection
if (Collection.class.isAssignableFrom(src)) return true;
// toCollection handles any type of array
if (src.isArray()) return true;
// toCollection can wrap objects into a Singleton list,
// but we only want to wrap up a T if the dest type is a T[].
return Types.isAssignable(src, Types.component(dest));
}

// Handle parameterized collection types.
if (dest instanceof ParameterizedType && isCollection(dest) &&
Expand Down
5 changes: 3 additions & 2 deletions src/test/java/org/scijava/convert/ConvertServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ class Struct {
/**
* Tests setting an incompatible element value for a primitive array.
*/
@Test(expected = IllegalArgumentException.class)
@Test
public void testBadPrimitiveArray() {
class Struct {

Expand All @@ -467,6 +467,7 @@ class Struct {
final Struct struct = new Struct();

setFieldValue(struct, "intArray", "not an int array");
assertEquals(null, struct.intArray);
}

/**
Expand All @@ -486,7 +487,7 @@ class Struct {

// Test abnormal behavior for an object array
setFieldValue(struct, "doubleArray", "not a double array");
assertEquals(null, struct.doubleArray[0]);
assertEquals(null, struct.doubleArray);

// Test abnormal behavior for a list
setFieldValue(struct, "nestedArray", "definitely not a set of char arrays");
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/org/scijava/util/ConversionUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,6 @@ class Struct {
/**
* Tests setting an incompatible element value for a primitive array.
*/
@Test(expected = IllegalArgumentException.class)
public void testBadPrimitiveArray() {
class Struct {

Expand All @@ -247,6 +246,7 @@ class Struct {
final Struct struct = new Struct();

setFieldValue(struct, "intArray", "not an int array");
assertEquals(null, struct.intArray);
}

/**
Expand All @@ -266,7 +266,7 @@ class Struct {

// Test abnormal behavior for an object array
setFieldValue(struct, "doubleArray", "not a double array");
assertEquals(null, struct.doubleArray[0]);
assertEquals(null, struct.doubleArray);

// Test abnormal behavior for a list
setFieldValue(struct, "nestedArray", "definitely not a set of char arrays");
Expand Down