1 8 9 package mx4j.tools.remote.soap.axis.ser; 10 11 import javax.xml.namespace.QName ; 12 13 import mx4j.log.Log; 14 import mx4j.log.Logger; 15 import org.apache.axis.encoding.DeserializationContext; 16 import org.apache.axis.encoding.Deserializer; 17 import org.apache.axis.encoding.DeserializerImpl; 18 import org.apache.axis.encoding.DeserializerTarget; 19 import org.apache.axis.message.SOAPHandler; 20 import org.xml.sax.Attributes ; 21 import org.xml.sax.SAXException ; 22 23 26 public abstract class AxisDeserializer extends DeserializerImpl 27 { 28 protected Logger getLogger() 29 { 30 return Log.getLogger(getClass().getName()); 31 } 32 33 public void onStartElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) throws SAXException 34 { 35 Logger logger = getLogger(); 36 if (logger.isEnabledFor(Logger.TRACE)) 37 { 38 logger.trace("Enter: " + getClass().getName() + ".onStartElement()"); 39 logger.trace("namespace: " + namespace); 40 logger.trace("localName: " + localName); 41 logger.trace("prefix: " + prefix); 42 } 43 } 44 45 public SOAPHandler onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) throws SAXException 46 { 47 Logger logger = getLogger(); 48 if (logger.isEnabledFor(Logger.TRACE)) 49 { 50 logger.trace("Enter: " + getClass().getName() + ".onStartChild()"); 51 logger.trace("namespace: " + namespace); 52 logger.trace("localName: " + localName); 53 logger.trace("prefix: " + prefix); 54 } 55 62 QName itemType = context.getTypeFromAttributes(namespace, localName, attributes); 63 Deserializer deserializer = null; 64 if (itemType != null) deserializer = context.getDeserializerForType(itemType); 65 if (deserializer == null) deserializer = new DeserializerImpl(); 66 67 deserializer.registerValueTarget(new DeserializerTarget(this, localName)); 68 addChildDeserializer(deserializer); 69 70 return (SOAPHandler)deserializer; 71 } 72 73 public void setChildValue(Object value, Object hint) throws SAXException 74 { 75 Logger logger = getLogger(); 76 if (logger.isEnabledFor(Logger.TRACE)) 77 { 78 logger.trace("Enter: " + getClass().getName() + ".setChildValue()"); 79 logger.trace("value: " + value); 80 logger.trace("hint: " + hint); 81 } 82 onSetChildValue(value, hint); 83 } 84 85 protected abstract void onSetChildValue(Object value, Object hint) throws SAXException ; 86 87 public void onEndElement(String namespace, String localName, DeserializationContext context) throws SAXException 88 { 89 Logger logger = getLogger(); 90 if (logger.isEnabledFor(Logger.TRACE)) 91 { 92 logger.trace("Enter: " + getClass().getName() + ".onEndElement()"); 93 logger.trace("namespace: " + namespace); 94 logger.trace("localName: " + localName); 95 } 96 setValue(createObject()); 97 } 98 99 protected abstract Object createObject() throws SAXException ; 100 } 101 | Popular Tags |