public void setChild(Object wrapper, int i, ElementInfo childElement, Object value) { Object wrapperValue = wrapper; Class<?> wrapperClass = wrapperValue.getClass(); // FIXME: We probably should use the jaxb-reflection to handle the properties try { String prop = childElement.getQName().getLocalPart(); boolean collection = (value instanceof Collection); Method getter = null; for (Method m : wrapperClass.getMethods()) { Class<?>[] paramTypes = m.getParameterTypes(); if (paramTypes.length == 1 && m.getName().equals("set" + capitalize(prop))) { m.invoke(wrapperValue, new Object[] {value}); return; } if (collection && paramTypes.length == 0 && m.getName().equals("get" + capitalize(prop))) { getter = m; } } if (getter != null && Collection.class.isAssignableFrom(getter.getReturnType())) { ((Collection)getter.invoke(wrapperValue)).addAll((Collection)value); } } catch (Throwable e) { throw new TransformationException(e); } }
public void setChild(Object wrapper, int i, ElementInfo childElement, Object value) { Object wrapperValue = wrapper; Class<?> wrapperClass = wrapperValue.getClass(); // FIXME: We probably should use the jaxb-reflection to handle the properties try { String prop = childElement.getQName().getLocalPart(); boolean collection = (value instanceof Collection); Method getter = null; for (Method m : wrapperClass.getMethods()) { Class<?>[] paramTypes = m.getParameterTypes(); if (paramTypes.length == 1 && m.getName().equals("set" + capitalize(prop))) { m.invoke(wrapperValue, new Object[] {value}); return; } if (collection && paramTypes.length == 0 && m.getName().equals("get" + capitalize(prop))) { getter = m; } } if (getter != null && Collection.class.isAssignableFrom(getter.getReturnType())) { ((Collection)getter.invoke(wrapperValue)).addAll((Collection)value); } } catch (Throwable e) { throw new TransformationException(e); } }
private void addChild(OMElement wrapper, ElementInfo childElement, OMElement element) { if (element == null) { // Prefer xsi:nil="true" if (childElement.isNillable()) { OMElement e = wrapper.getOMFactory().createOMElement(childElement.getQName(), wrapper); attachXSINil(e); } // else, we might have minOccurs="0", so don't add anything to the wrapper. return; } QName elementName = childElement.getQName(); // Make it a bit tolerating of element QName if (!elementName.equals(element.getQName())) { OMNamespace namespace = factory.createOMNamespace(elementName.getNamespaceURI(), elementName.getPrefix()); element.setNamespace(namespace); element.setLocalName(childElement.getQName().getLocalPart()); } wrapper.addChild(element); }
/** * @see org.apache.tuscany.sca.databinding.WrapperHandler#getChildren(java.lang.Object, Operation, boolean) */ public List getChildren(Object wrapper, Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); List<ElementInfo> childElements = input? inputWrapperInfo.getChildElements(): outputWrapperInfo.getChildElements(); List<String> childNames = new ArrayList<String>(); for (ElementInfo e : childElements) { childNames.add(e.getQName().getLocalPart()); } return Arrays.asList(helper.unwrap(wrapper, childNames)); }
/** * @see org.apache.tuscany.sca.databinding.WrapperHandler#getChildren(java.lang.Object, Operation, boolean) */ public List getChildren(Object wrapper, Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); List<ElementInfo> childElements = input? inputWrapperInfo.getChildElements(): outputWrapperInfo.getChildElements(); List<String> childNames = new ArrayList<String>(); for (ElementInfo e : childElements) { childNames.add(e.getQName().getLocalPart()); } return Arrays.asList(helper.unwrap(wrapper, childNames)); }
/** * @param element */ public XMLType(ElementInfo element) { super(); this.element = element.getQName(); if (element.getType() != null) { this.type = element.getType().getQName(); } }
/** * @param element */ public XMLType(ElementInfo element) { super(); this.element = element.getQName(); if (element.getType() != null) { this.type = element.getType().getQName(); } }
public void setChildren(Object wrapper, Object[] childObjects, Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); List<ElementInfo> childElements = input ? inputWrapperInfo.getChildElements() : outputWrapperInfo.getChildElements(); List<String> childNames = new ArrayList<String>(); Map<String, Object> values = new HashMap<String, Object>(); for (int i = 0; i < childElements.size(); i++) { ElementInfo e = childElements.get(i); String name = e.getQName().getLocalPart(); childNames.add(name); values.put(name, childObjects[i]); } // Get the property descriptor map Map<String, JAXBPropertyDescriptor> pdMap = null; try { pdMap = XMLRootElementUtil.createPropertyDescriptorMap(wrapper.getClass()); } catch (Throwable t) { throw new JAXBWrapperException(t); } helper.wrap(wrapper, childNames, values, pdMap); }
public void setChildren(Object wrapper, Object[] childObjects, Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); List<ElementInfo> childElements = input ? inputWrapperInfo.getChildElements() : outputWrapperInfo.getChildElements(); List<String> childNames = new ArrayList<String>(); Map<String, Object> values = new HashMap<String, Object>(); for (int i = 0; i < childElements.size(); i++) { ElementInfo e = childElements.get(i); String name = e.getQName().getLocalPart(); childNames.add(name); values.put(name, childObjects[i]); } // Get the property descriptor map Map<String, JAXBPropertyDescriptor> pdMap = null; try { pdMap = XMLRootElementUtil.createPropertyDescriptorMap(wrapper.getClass()); } catch (Throwable t) { throw new JAXBWrapperException(t); } helper.wrap(wrapper, childNames, values, pdMap); }
public boolean isInstance(Object wrapperObj, Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); ElementInfo element = input ? inputWrapperInfo.getWrapperElement() : outputWrapperInfo.getWrapperElement(); // List<ElementInfo> childElements = // input ? wrapperInfo.getInputChildElements() : wrapperInfo.getOutputChildElements(); OMElement wrapper = (OMElement)wrapperObj; if (!element.getQName().equals(wrapper.getQName())) { return false; } return true; /* Set<QName> names = new HashSet<QName>(); for (ElementInfo e : childElements) { names.add(e.getQName()); } for (Iterator i = wrapper.getChildElements(); i.hasNext();) { OMElement child = (OMElement)i.next(); if (!names.contains(child.getQName())) { return false; } } return true; */ }
public OMElement create(Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); ElementInfo element = input ? inputWrapperInfo.getWrapperElement() : outputWrapperInfo.getWrapperElement(); // Class<?> wrapperClass = input ? wrapperInfo.getInputWrapperClass() : wrapperInfo.getOutputWrapperClass(); OMElement wrapper = AxiomHelper.createOMElement(factory, element.getQName()); return wrapper; }
public Node create(Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); ElementInfo element = input ? inputWrapperInfo.getWrapperElement() : outputWrapperInfo.getWrapperElement(); Document document = domHelper.newDocument(); QName name = element.getQName(); return DOMHelper.createElement(document, name); }
public Node create(Operation operation, boolean input) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); ElementInfo element = input ? inputWrapperInfo.getWrapperElement() : outputWrapperInfo.getWrapperElement(); Document document = domHelper.newDocument(); QName name = element.getQName(); return DOMHelper.createElement(document, name); }
List<ElementInfo> elements = input ? inputWrapper.getChildElements() : outputWrapper.getChildElements(); QName wrapperName = elementInfo.getQName(); part.setElementName(wrapperName); addNamespace(definition, wrapperName); for (int i = 0; i < inputDTs.size(); i++) { DataType nextInput = inputDTs.get(i); elements.set(i, getElementInfo(nextInput.getPhysical(), nextInput, elements.get(i).getQName(), helpers)); for (int i = 0; i < outputDTs.size(); i++) { DataType nextOutput = outputDTs.get(i); elements.set(i, getElementInfo(nextOutput.getPhysical(), nextOutput, elements.get(i).getQName(), helpers));