Thanks for repairing this code. Rich Scheuerle XML & Web Services Development 512-838-5115 (IBM TL 678-5115)
[EMAIL PROTECTED] rg To: [EMAIL PROTECTED] cc: 01/31/2002 03:52 Subject: cvs commit: xml-axis/java/src/org/apache/axis/encoding/ser PM ArraySerializer.java Please respond to axis-dev gdaniels 02/01/31 13:52:19 Modified: java/src/org/apache/axis/encoding/ser ArraySerializer.java Log: Clean up code a bit differently, to really solve Xerces 1.4.0 issue. Revision Changes Path 1.4 +27 -24 xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java Index: ArraySerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ArraySerializer.java 31 Jan 2002 18:33:29 -0000 1.3 +++ ArraySerializer.java 31 Jan 2002 21:52:19 -0000 1.4 @@ -209,35 +209,38 @@ } } - Attributes attrs = attributes; - + AttributesImpl attrs; if (attributes != null) { - AttributesImpl attrImpl = null; - - if (attributes.getIndex(Constants.URI_CURRENT_SOAP_ENC, - Constants.ATTR_ARRAY_TYPE) == -1) { - String encprefix = context.getPrefixForURI(Constants.URI_CURRENT_SOAP_ENC); - attrImpl = new AttributesImpl(attributes); - attrImpl.addAttribute(Constants.URI_CURRENT_SOAP_ENC, - Constants.ATTR_ARRAY_TYPE, - encprefix + ":arrayType", - "CDATA", - arrayType); - attrs = attrImpl; + if (attributes instanceof AttributesImpl) { + attrs = (AttributesImpl)attributes; + } else { + attrs = new AttributesImpl(attributes); } + } else { + attrs = new AttributesImpl(); + } - // Force type to be SOAP_ARRAY for all array serialization. - int typeI = attributes.getIndex(Constants.URI_CURRENT_SCHEMA_XSI, - "type"); - if (typeI != -1) { - if (attrImpl == null) - attrImpl = new AttributesImpl(attributes); - attrImpl.removeAttribute(typeI); - attrs = context.setTypeAttribute(attrImpl, Constants.SOAP_ARRAY); - } + if (attrs.getIndex(Constants.URI_CURRENT_SOAP_ENC, + Constants.ATTR_ARRAY_TYPE) == -1) { + String encprefix = context.getPrefixForURI(Constants.URI_CURRENT_SOAP_ENC); + attrs.addAttribute(Constants.URI_CURRENT_SOAP_ENC, + Constants.ATTR_ARRAY_TYPE, + encprefix + ":arrayType", + "CDATA", + arrayType); + } + + // Force type to be SOAP_ARRAY for all array serialization. + int typeI = attrs.getIndex(Constants.URI_CURRENT_SCHEMA_XSI, + "type"); + if (typeI != -1) { + attrs.removeAttribute(typeI); + attributes = context.setTypeAttribute(attrs, Constants.SOAP_ARRAY); + } else { + attributes = attrs; } - context.startElement(name, attrs); + context.startElement(name, attributes); if (dim2Len < 0) { // Normal case, serialize each array element