/** * Parses the list of arguments of a method. * This method creates a list of {@link ArgDescriptor} from the given list of DOM elements * @param argElements the list of argument DOM elements * @param parse Parse object that contains all information for the current parse operation. * @return the list of ArgDescriptor created from the DOM elements * @see ArgDescriptor */ public List<ArgDescriptor> parseArgs(List<Element> argElements, Parse parse) { List<ArgDescriptor> args = null; if (argElements!=null) { if (argElements.size()>0) { args = new ArrayList<ArgDescriptor>(argElements.size()); } for (Element argElement: argElements) { ArgDescriptor argDescriptor = new ArgDescriptor(); argDescriptor.setTypeName(XmlUtil.attribute(argElement, "type")); Element descriptorElement = XmlUtil.element(argElement); if (descriptorElement==null) { parse.addProblem("arg must contain exactly one descriptor element out of "+bindings.getTagNames(CATEGORY_DESCRIPTOR)+" as contents:"+XmlUtil.toString((Element) argElement.getParentNode())); } else { Descriptor descriptor = (Descriptor) parseElement(descriptorElement, parse, CATEGORY_DESCRIPTOR); argDescriptor.setDescriptor(descriptor); } args.add(argDescriptor); } } return args; }
/** * This method builds the WireDefinition from the DOM tree. * This methods parses all child nodes of the documentElement that correspond to a Descriptor definition. * @param documentElement the root element of the document * @param parse Parse object that contains all information for the current parse operation. * @return an instance of WireDefinition containing the resulting WireDefinition. * @see Parser#parseDocumentElement(Element, Parse) */ public Object parseDocumentElement(Element documentElement, Parse parse) { List<Element> elements = XmlUtil.elements(documentElement); WireDefinition wireDefinition = new WireDefinition(); wireDefinition.setClassLoader(classLoader); if (elements!=null) { parse.pushObject(wireDefinition); try { for (Element descriptorElement: elements) { parseElement(descriptorElement, parse, CATEGORY_DESCRIPTOR); } } finally { parse.popObject(); } } return wireDefinition; }