modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 21 ++++++++-- 1 file changed, 18 insertions(+), 3 deletions(-)
New commits: commit a512a512e3277135e1e789a6ffbdbf61fb964b25 Author: Joseph Marques joseph@redhat.com Date: Wed Dec 15 23:03:41 2010 -0500
more forgiving parsing of criteria objects from the request
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java index 629a4df..de8e667 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java @@ -424,21 +424,36 @@ public abstract class RPCDataSource<T> extends DataSource { if (value == null) { // nothing to do, result is already null } else if (type == Integer.class) { - int[] intermediates = criteria.getAttributeAsIntArray(paramName); + int[] intermediates; + if (type.getClass().isArray()) { + intermediates = criteria.getAttributeAsIntArray(paramName); + } else { // want array return, but only single instance of the type in the request + intermediates = new int[] { criteria.getAttributeAsInt(paramName) }; + } resultArray = (S[]) new Integer[intermediates.length]; int index = 0; for (int next : intermediates) { resultArray[index++] = (S) Integer.valueOf(next); } } else if (type == String.class) { - String[] intermediates = criteria.getAttributeAsStringArray(paramName); + String[] intermediates; + if (type.getClass().isArray()) { + intermediates = criteria.getAttributeAsStringArray(paramName); + } else { // want array return, but only single instance of the type in the request + intermediates = new String[] { criteria.getAttributeAsString(paramName) }; + } resultArray = (S[]) new String[intermediates.length]; int index = 0; for (String next : intermediates) { resultArray[index++] = (S) next; } } else if (type.isEnum()) { - String[] intermediates = criteria.getAttributeAsStringArray(paramName); + String[] intermediates; + if (type.getClass().isArray()) { + intermediates = criteria.getAttributeAsStringArray(paramName); + } else { // want array return, but only single instance of the type in the request + intermediates = new String[] { criteria.getAttributeAsString(paramName) }; + } List<S> buffer = new ArrayList<S>(); for (String next : intermediates) { buffer.add((S) Enum.valueOf((Class<? extends Enum>) type, next));