SOAPHandlerpublic class SOAPHandler extends DefaultHandler
Fields Summary |
---|
public MessageElement | myElement | private MessageElement[] | myElements | private int | myIndex | private CharArrayWriter | val |
Constructors Summary |
---|
public SOAPHandler()
| public SOAPHandler(MessageElement[] elements, int index)This constructor allows deferred setting of any elements
myElements = elements;
myIndex = index;
|
Methods Summary |
---|
private void | addTextNode()
if (myElement != null) {
if (val != null && val.size() > 0) {
String s = StringUtils.strip(val.toString());
val.reset();
// we need to check the length of STRIPPED string
// to avoid appending ignorable white spaces as
// message elmenet's child.
// (SOAPHeader and others does not accept text children...
// but in SAAJ 1.2's DOM view, this could be incorrect.
// we need to keep the ignorable white spaces later)
if(s.length()>0){
try {
// add unstripped string as text child.
myElement.addTextNode(s);
} catch (SOAPException e) {
throw new SAXException(e);
}
}
}
}
| public void | characters(char[] chars, int start, int end)
if (val == null) {
val = new CharArrayWriter();
}
val.write(chars, start, end);
| public void | endElement(java.lang.String namespace, java.lang.String localName, org.apache.axis.encoding.DeserializationContext context)
if (myElement != null) {
addTextNode();
if (myElements != null) {
myElements[myIndex] = myElement;
}
myElement.setEndIndex(context.getCurrentRecordPos());
}
| public MessageElement | makeNewElement(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, org.apache.axis.encoding.DeserializationContext context)
return new MessageElement(namespace, localName,
prefix, attributes, context);
| public void | onEndChild(java.lang.String namespace, java.lang.String localName, org.apache.axis.encoding.DeserializationContext context)
| public org.apache.axis.message.SOAPHandler | onStartChild(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, org.apache.axis.encoding.DeserializationContext context)
addTextNode();
SOAPHandler handler = new SOAPHandler();
return handler;
| public void | startElement(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, org.apache.axis.encoding.DeserializationContext context)
SOAPConstants soapConstants = context.getSOAPConstants();
if (soapConstants == SOAPConstants.SOAP12_CONSTANTS) {
String encodingStyle = attributes.getValue(Constants.URI_SOAP12_ENV,
Constants.ATTR_ENCODING_STYLE);
if (encodingStyle != null && !encodingStyle.equals("")
&& !encodingStyle.equals(Constants.URI_SOAP12_NOENC)
&& !Constants.isSOAP_ENC(encodingStyle)) {
TypeMappingRegistry tmr = context.getTypeMappingRegistry();
// TODO: both soap encoding style is registered ?
if (tmr.getTypeMapping(encodingStyle) == tmr.getDefaultTypeMapping()) {
AxisFault fault = new AxisFault(Constants.FAULT_SOAP12_DATAENCODINGUNKNOWN,
null, Messages.getMessage("invalidEncodingStyle"), null, null, null);
throw new SAXException(fault);
}
}
}
// By default, make a new element
if (!context.isDoneParsing() && !context.isProcessingRef()) {
if (myElement == null) {
try {
myElement = makeNewElement(namespace, localName, prefix,
attributes, context);
} catch (AxisFault axisFault) {
throw new SAXException(axisFault);
}
}
context.pushNewElement(myElement);
}
|
|