static Object convert(Object value, OpenType targetType) { if(null == value) { return null; } if(targetType instanceof SimpleType) { return value; } if(targetType instanceof CompositeType) { CompositeType ct = (CompositeType)targetType; try { return convertToCompositeData(value, ct); } catch (OpenDataException e) { throw new MException(e); } } if(targetType instanceof ArrayType) { ArrayType at = (ArrayType)targetType; OpenType elementType = at.getElementOpenType(); if(elementType instanceof SimpleType) { return Enumerables.of(value).toList(); } List<Object> list = new ArrayList<>(); for(Object item : Enumerables.of(value)) { list.add(convert(item, elementType)); } return list; } //todo : support throw new IllegalStateException("Not supported open type '" + targetType + "'"); }