modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java | 15 ++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
New commits: commit 5f74ac330228be62050d1b387ea2cf9a47639c36 Author: Lukas Krejci lkrejci@redhat.com Date: Wed Feb 27 14:40:52 2013 +0100
[BZ 726673] - be more robust against different types of bean properties. Rhino doesn't handle indexed properties automagically as it does normal basic javabean properties, so we should offer no code completion on such advanced property types.
diff --git a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java index f33e029..0d5e25d 100644 --- a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java +++ b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java @@ -191,9 +191,20 @@ public class JavascriptCompletor implements CodeCompletion { Object rootObject = nextList.get(0); if (rootObject instanceof PropertyDescriptor && !(baseObject instanceof Class)) { try { - rootObject = invoke(baseObject, ((PropertyDescriptor) rootObject).getReadMethod()); + Method readMethod = ((PropertyDescriptor) rootObject).getReadMethod(); + //the read method might be null for for example indexed bean properties. + //Rhino doesn't interpret any more complex bean properties. + if (readMethod != null) { + rootObject = invoke(baseObject, readMethod); + } else { + return -1; + } } catch (Exception e) { - e.printStackTrace(); + if (LOG.isDebugEnabled()) { + LOG.debug("Exception while reading a java bean property.", e); + } + + return -1; } } else if (rootObject instanceof Method) { rootObject = ((Method) rootObject).getReturnType();
rhq-commits@lists.fedorahosted.org