docBuilderFactory.setNamespaceAware(true);
}
private Element javaAttributes(Class<?> wrpCls, Map<String, Source> extMapping) {
XmlRootElement xmlRootElement = wrpCls.getAnnotation(XmlRootElement.class);
XmlType xmlType = wrpCls.getAnnotation(XmlType.class);
Element xmlbindings = xmlbindings(wrpCls, extMapping);
extMapping.put(wrpCls.getPackage().getName(), new DOMSource(xmlbindings));
Element javatypes = child(xmlbindings, "java-types");
Element javatype = null;
NodeList javatypeList = xmlbindings.getElementsByTagNameNS(OXMTNS, "java-type");
for (int i = 0; javatype == null && i < javatypeList.getLength(); i++) {
Element e = (Element) javatypeList.item(i);
if (wrpCls.getName().equals(e.getAttribute("name"))) {
javatype = e;
}
}
if (javatype == null) {
javatype = javatypes.getOwnerDocument().createElementNS(OXMTNS, "java-type");
javatype.setAttribute("name", wrpCls.getName());
javatypes.appendChild(javatype);
if (xmlRootElement != null) {
Element r = javatype.getOwnerDocument().createElementNS(OXMTNS, "xml-root-element");
r.setAttribute("name", xmlRootElement.name());
r.setAttribute("namespace", xmlRootElement.namespace());
javatype.appendChild(r);
}
if (xmlType != null) {
Element r = javatype.getOwnerDocument().createElementNS(OXMTNS, "xml-type");
r.setAttribute("name", xmlType.name());
r.setAttribute("namespace", xmlType.namespace());
StringBuilder propOrdr = new StringBuilder();
if (xmlType.propOrder() != null) {
for (int pi = 0; pi < xmlType.propOrder().length; pi++) {
propOrdr.append(xmlType.propOrder()[pi]);
propOrdr.append(" ");
}
}
r.setAttribute("prop-order", propOrdr.toString().trim());
javatype.appendChild(r);