public static Object unmarshalResult(Element resultElement) { Element valueElement = resultElement.element("value"); Element refsElement = resultElement.element("refs"); CallContext ctx = new CallContext(); Iterator iter = refsElement.elementIterator("ref"); while (iter.hasNext()) { ctx.createWrapperFromElement((Element) iter.next()); } Wrapper resultWrapper = ctx.createWrapperFromElement((Element) valueElement.elementIterator().next()); // Now unmarshal the ref values for (Wrapper w : ctx.getInRefs().values()) w.unmarshal(); return resultWrapper.getValue(); }
@SuppressWarnings("unchecked") private void unmarshalAction(Element actionElement, Model model) { Element targetElement = actionElement.element("target"); Element qualifiersElement = actionElement.element("qualifiers"); Element methodElement = actionElement.element("method"); Element paramsElement = actionElement.element("params"); Element refsElement = actionElement.element("refs"); model.setAction(new Call(beanManager, targetElement.getTextTrim(), qualifiersElement != null ? qualifiersElement.getTextTrim() : null, methodElement != null ? methodElement.getTextTrim() : null)); if (refsElement != null) { for (Element refElement : (List<Element>) refsElement.elements("ref")) { model.getAction().getContext().createWrapperFromElement(refElement); } for (Wrapper w : model.getAction().getContext().getInRefs().values()) { w.unmarshal(); } } if (paramsElement != null) { for (Element paramElement : (List<Element>) paramsElement.elements("param")) { model.getAction().addParameter(model.getAction().getContext().createWrapperFromElement( (Element) paramElement.elements().get(0))); } } }