VectorDeserializerpublic class VectorDeserializer extends org.apache.axis.encoding.DeserializerImpl Deserializer for SOAP Vectors for compatibility with SOAP 2.2. |
Fields Summary |
---|
protected static Log | log | public int | curIndex |
Methods Summary |
---|
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)onStartChild is called on each child element.
if (log.isDebugEnabled()) {
log.debug("Enter: VectorDeserializer::onStartChild()");
}
if (attributes == null)
throw new SAXException(Messages.getMessage("noType01"));
// If the xsi:nil attribute, set the value to null and return since
// there is nothing to deserialize.
if (context.isNil(attributes)) {
setChildValue(null, new Integer(curIndex++));
return null;
}
// Get the type
QName itemType = context.getTypeFromAttributes(namespace,
localName,
attributes);
// Get the deserializer
Deserializer dSer = null;
if (itemType != null) {
dSer = context.getDeserializerForType(itemType);
}
if (dSer == null) {
dSer = new DeserializerImpl();
}
// When the value is deserialized, inform us.
// Need to pass the index because multi-ref stuff may
// result in the values being deserialized in a different order.
dSer.registerValueTarget(new DeserializerTarget(this, new Integer(curIndex)));
curIndex++;
if (log.isDebugEnabled()) {
log.debug("Exit: VectorDeserializer::onStartChild()");
}
// Let the framework know that we aren't complete until this guy
// is complete.
addChildDeserializer(dSer);
return (SOAPHandler)dSer;
| public void | onStartElement(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, org.apache.axis.encoding.DeserializationContext context)This method is invoked after startElement when the element requires
deserialization (i.e. the element is not an href and the value is not nil.)
Simply creates
if (log.isDebugEnabled()) {
log.debug("Enter: VectorDeserializer::startElement()");
}
if (context.isNil(attributes)) {
return;
}
// Create a vector to hold the deserialized values.
setValue(new java.util.Vector());
if (log.isDebugEnabled()) {
log.debug("Exit: VectorDeserializer::startElement()");
}
| public void | setChildValue(java.lang.Object value, java.lang.Object hint)The registerValueTarget code above causes this set function to be invoked when
each value is known.
if (log.isDebugEnabled()) {
log.debug(Messages.getMessage("gotValue00", "VectorDeserializer", "" + value));
}
int offset = ((Integer)hint).intValue();
Vector v = (Vector)this.value;
// If the vector is too small, grow it
if (offset >= v.size()) {
v.setSize(offset+1);
}
v.setElementAt(value, offset);
|
|