private static Class[] getChildrenClasses(OgnlContext context, Node[] _children) { if (_children == null) return null; Class[] argumentClasses = new Class[_children.length]; for (int i = 0; i < _children.length; i++) { Node child = _children[i]; if (child instanceof ASTList) { // special handling for ASTList - it creates a List //Class componentType = getClassMatchingAllChildren(context, ((ASTList)child)._children); //argumentClasses[i] = Array.newInstance(componentType, 0).getClass(); argumentClasses[i] = List.class; } else if (child instanceof NodeType) { argumentClasses[i] = ((NodeType)child).getGetterClass(); } else if (child instanceof ASTCtor) { try { argumentClasses[i] = ((ASTCtor)child).getCreatedClass(context); } catch (ClassNotFoundException nfe) { throw OgnlOps.castToRuntime(nfe); } } else if (child instanceof ASTTest) { argumentClasses[i] = getClassMatchingAllChildren(context, ((ASTTest)child)._children); } else { throw new UnsupportedOperationException("Don't know how to handle child: "+child); } } return argumentClasses; }
private static Class[] getChildrenClasses(OgnlContext context, Node[] _children) { if (_children == null) return null; Class[] argumentClasses = new Class[_children.length]; for (int i = 0; i < _children.length; i++) { Node child = _children[i]; if (child instanceof ASTList) { // special handling for ASTList - it creates a List //Class componentType = getClassMatchingAllChildren(context, ((ASTList)child)._children); //argumentClasses[i] = Array.newInstance(componentType, 0).getClass(); argumentClasses[i] = List.class; } else if (child instanceof NodeType) { argumentClasses[i] = ((NodeType)child).getGetterClass(); } else if (child instanceof ASTCtor) { try { argumentClasses[i] = ((ASTCtor)child).getCreatedClass(context); } catch (ClassNotFoundException nfe) { throw OgnlOps.castToRuntime(nfe); } } else if (child instanceof ASTTest) { argumentClasses[i] = getClassMatchingAllChildren(context, ((ASTTest)child)._children); } else { throw new UnsupportedOperationException("Don't know how to handle child: "+child); } } return argumentClasses; }