/* */ }
/* */
/* 529 */ for (int i = 0; i < attributeUses.getLength(); i++)
/* */ {
/* 531 */ this.currentAttribute = ((XSAttributeUse)attributeUses.item(i));
/* 532 */ XSAttributeDeclaration attrDec = this.currentAttribute.getAttrDeclaration();
/* 533 */ String attrNs = attrDec.getNamespace();
/* 534 */ String attrLocal = attrDec.getName();
/* 535 */ Object attrValue = this.provider.getAttributeValue(o, this.ctx, attrNs, attrLocal);
/* */
/* 537 */ if (attrValue == null)
/* */ continue;
/* 539 */ if (attrs == null)
/* */ {
/* 541 */ attrs = new AttributesImpl(5);
/* */ }
/* */
/* 544 */ String attrPrefix = null;
/* 545 */ if (attrNs != null)
/* */ {
/* 547 */ attrPrefix = getPrefix(attrNs);
/* 548 */ if ((attrPrefix == null) && (attrNs != null) && (attrNs.length() > 0))
/* */ {
/* 550 */ attrPrefix = "ns_" + attrLocal;
/* 551 */ attrs.add(null, attrPrefix, "xmlns:" + attrPrefix, null, attrNs);
/* */ }
/* */ }
/* */
/* 555 */ String qName = attrPrefix + ":" + attrLocal;
/* */
/* 558 */ XSSimpleTypeDefinition attrType = attrDec.getTypeDefinition();
/* 559 */ if (attrType.getItemType() != null)
/* */ {
/* 561 */ XSSimpleTypeDefinition itemType = attrType.getItemType();
/* 562 */ if ("http://www.w3.org/2001/XMLSchema".equals(itemType.getNamespace()))
/* */ {
/* */ List list;
/* 565 */ if ((attrValue instanceof List))
/* */ {
/* 567 */ list = (List)attrValue;
/* */ }
/* */ else
/* */ {
/* */ List list;
/* 569 */ if (attrValue.getClass().isArray())
/* */ {
/* 571 */ list = Arrays.asList((Object[])(Object[])attrValue);
/* */ }
/* */ else
/* */ {
/* 575 */ throw new JBossXBRuntimeException("Expected value for list type is an array or " + List.class.getName() + " but got: " + attrValue);
/* */ }
/* */ }
/* */ List list;
/* 582 */ if (Constants.QNAME_QNAME.getLocalPart().equals(itemType.getName()))
/* */ {
/* 584 */ for (int listInd = 0; listInd < list.size(); listInd++)
/* */ {
/* 586 */ QName item = (QName)list.get(listInd);
/* 587 */ String itemNs = item.getNamespaceURI();
/* 588 */ if ((itemNs == null) || (itemNs.length() <= 0))
/* */ continue;
/* */ String itemPrefix;
/* */ String itemPrefix;
/* 591 */ if (itemNs.equals(elementNsUri))
/* */ {
/* 593 */ itemPrefix = prefix;
/* */ }
/* */ else
/* */ {
/* 597 */ itemPrefix = getPrefix(itemNs);
/* 598 */ if (itemPrefix == null)
/* */ {
/* 600 */ itemPrefix = attrLocal + listInd;
/* 601 */ declareNs(attrs, itemPrefix, itemNs);
/* */ }
/* */ }
/* 604 */ item = new QName(item.getNamespaceURI(), item.getLocalPart(), itemPrefix);
/* 605 */ list.set(listInd, item);
/* */ }
/* */
/* */ }
/* */
/* 610 */ attrValue = SimpleTypeBindings.marshalList(itemType.getName(), list, null);
/* */ }
/* */ else
/* */ {
/* 614 */ throw new JBossXBRuntimeException("Marshalling of list types with item types not from http://www.w3.org/2001/XMLSchema is not supported.");
/* */ }
/* */
/* */ }
/* 619 */ else if ((attrType.getLexicalPattern().item(0) != null) && (attrType.derivedFrom("http://www.w3.org/2001/XMLSchema", Constants.QNAME_BOOLEAN.getLocalPart(), 2)))
/* */ {
/* 626 */ String item = attrType.getLexicalPattern().item(0);
/* 627 */ if ((item.indexOf('0') != -1) && (item.indexOf('1') != -1))
/* */ {
/* 629 */ attrValue = ((Boolean)attrValue).booleanValue() ? "1" : "0";
/* */ }
/* */ else
/* */ {
/* 633 */ attrValue = ((Boolean)attrValue).booleanValue() ? "true" : "false";
/* */ }
/* */ }
/* 636 */ else if ((Constants.QNAME_QNAME.getNamespaceURI().equals(attrType.getNamespace())) && (Constants.QNAME_QNAME.getLocalPart().equals(attrType.getName())))
/* */ {
/* 639 */ QName qNameValue = (QName)attrValue;
/* */
/* 641 */ String qNamePrefix = null;
/* 642 */ boolean declarePrefix = false;
/* 643 */ String ns = qNameValue.getNamespaceURI();
/* 644 */ if ((ns != null) && (ns.length() > 0))
/* */ {
/* 646 */ qNamePrefix = getPrefix(ns);
/* 647 */ if (qNamePrefix == null)
/* */ {
/* 649 */ qNamePrefix = qNameValue.getPrefix();
/* 650 */ if ((qNamePrefix == null) || (qNamePrefix.length() == 0))
/* */ {
/* 652 */ qNamePrefix = "ns_" + qNameValue.getLocalPart();
/* */ }
/* 654 */ declareNs(attrs, qNamePrefix, ns);
/* 655 */ this.nsRegistry.addPrefixMapping(qNamePrefix, ns);
/* 656 */ declarePrefix = true;
/* */ }
/* */ }
/* */
/* 660 */ attrValue = SimpleTypeBindings.marshalQName(qNameValue, this.nsRegistry);
/* */
/* 662 */ if (declarePrefix)
/* */ {
/* 664 */ this.nsRegistry.removePrefixMapping(qNamePrefix);
/* */ }
/* */ }
/* */ else
/* */ {
/* 669 */ attrValue = attrValue.toString();
/* */ }
/* */
/* 672 */ attrs.add(attrNs, attrLocal, qName, attrDec.getTypeDefinition().getName(), attrValue.toString());
/* */ }
/* */
/* 680 */ this.currentAttribute = null;
/* */
/* 682 */ String characters = null;