duftler 2002/06/09 22:59:01 Modified: java/src/org/apache/soap/encoding/soapenc SoapEncUtils.java Log: Fixed a NullPointerException problem that my changes created. Revision Changes Path 1.11 +28 -8 xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java Index: SoapEncUtils.java =================================================================== RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- SoapEncUtils.java 10 Jun 2002 03:52:56 -0000 1.10 +++ SoapEncUtils.java 10 Jun 2002 05:59:00 -0000 1.11 @@ -161,8 +161,15 @@ // Get prefixes for the needed namespaces. String elementTypeNS = elementType.getNamespaceURI(); - String xsiNSPrefix = nsStack.getPrefixFromURI(elementTypeNS + "-instance", - sink); + String xsiNamespaceURI = Constants.NS_URI_CURRENT_SCHEMA_XSI; + + if (elementTypeNS.startsWith("http://www.w3.org/") + && elementTypeNS.endsWith("/XMLSchema")) + { + xsiNamespaceURI = elementTypeNS + "-instance"; + } + + String xsiNSPrefix = nsStack.getPrefixFromURI(xsiNamespaceURI, sink); String elementTypeNSPrefix = nsStack.getPrefixFromURI(elementTypeNS, sink); sink.write(' ' + xsiNSPrefix + ':' + Constants.ATTR_TYPE + "=\"" + @@ -198,26 +205,39 @@ if (isNull) { - sink.write(' ' + xsiNSPrefix + ':' + nilName(elementTypeNS) + "=\"" + + sink.write(' ' + xsiNSPrefix + ':' + nilName(xsiNamespaceURI) + "=\"" + Constants.ATTRVAL_TRUE + "\"/"); } sink.write('>'); } - private static String nilName(String currentSchemaXSD) + private static String nilName(String currentSchemaXSI) { - return (currentSchemaXSD == Constants.NS_URI_2001_SCHEMA_XSD) + return (currentSchemaXSI.equals(Constants.NS_URI_2001_SCHEMA_XSI)) ? Constants.ATTR_NIL : Constants.ATTR_NULL; } public static boolean isNull(Element element) { - String elementTypeNS = getTypeQName(element).getNamespaceURI(); String nullValue = DOMUtils.getAttributeNS(element, - elementTypeNS + "-instance", - nilName(elementTypeNS)); + Constants.NS_URI_2001_SCHEMA_XSI, + Constants.ATTR_NIL); + + if (nullValue == null) + { + nullValue = DOMUtils.getAttributeNS(element, + Constants.NS_URI_2000_SCHEMA_XSI, + Constants.ATTR_NULL); + } + + if (nullValue == null) + { + nullValue = DOMUtils.getAttributeNS(element, + Constants.NS_URI_1999_SCHEMA_XSI, + Constants.ATTR_NULL); + } return nullValue != null && decodeBooleanValue(nullValue); }