KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > mx4j > tools > remote > soap > axis > ser > AxisDeserializer


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package mx4j.tools.remote.soap.axis.ser;
10
11 import javax.xml.namespace.QName JavaDoc;
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 JavaDoc;
21 import org.xml.sax.SAXException JavaDoc;
22
23 /**
24  * @version $Revision: 1.4 $
25  */

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 JavaDoc namespace, String JavaDoc localName, String JavaDoc prefix, Attributes JavaDoc attributes, DeserializationContext context) throws SAXException JavaDoc
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 JavaDoc namespace, String JavaDoc localName, String JavaDoc prefix, Attributes JavaDoc attributes, DeserializationContext context) throws SAXException JavaDoc
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 /*
56       if (context.isNil(attributes))
57       {
58          setChildValue(null, localName);
59          return null;
60       }
61 */

62       QName JavaDoc 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 JavaDoc value, Object JavaDoc hint) throws SAXException JavaDoc
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 JavaDoc value, Object JavaDoc hint) throws SAXException JavaDoc;
86
87    public void onEndElement(String JavaDoc namespace, String JavaDoc localName, DeserializationContext context) throws SAXException JavaDoc
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 JavaDoc createObject() throws SAXException JavaDoc;
100 }
101
Popular Tags