001: /*
002: * Copyright (C) The MX4J Contributors.
003: * All rights reserved.
004: *
005: * This software is distributed under the terms of the MX4J License version 1.0.
006: * See the terms of the MX4J License in the documentation provided with this software.
007: */
008:
009: package mx4j.tools.remote.soap.axis.ser;
010:
011: import java.io.IOException;
012: import javax.management.Notification;
013: import javax.xml.namespace.QName;
014:
015: import org.apache.axis.encoding.SerializationContext;
016: import org.apache.axis.encoding.XMLType;
017: import org.apache.axis.wsdl.fromJava.Types;
018: import org.w3c.dom.Element;
019: import org.xml.sax.Attributes;
020:
021: /**
022: * @version $Revision: 1.4 $
023: */
024: public class NotificationSer extends AxisSerializer {
025: static final String TYPE = "Notification";
026: static final String CLASS_NAME = "type";
027: static final String SOURCE = "source";
028: static final String SEQUENCE_NUMBER = "sequenceNumber";
029: static final String TIMESTAMP = "timeStamp";
030: static final String MESSAGE = "message";
031: static final String USER_DATA = "userData";
032: private static final QName CLASS_NAME_QNAME = new QName("",
033: CLASS_NAME);
034: private static final QName SOURCE_QNAME = new QName("", SOURCE);
035: private static final QName SEQUENCE_NUMBER_QNAME = new QName("",
036: SEQUENCE_NUMBER);
037: private static final QName TIMESTAMP_QNAME = new QName("",
038: TIMESTAMP);
039: private static final QName MESSAGE_QNAME = new QName("", MESSAGE);
040: private static final QName USER_DATA_QNAME = new QName("",
041: USER_DATA);
042:
043: public void serialize(QName name, Attributes attributes,
044: Object value, SerializationContext context)
045: throws IOException {
046: Notification notification = (Notification) value;
047: context.startElement(name, attributes);
048: onSerialize(context, notification);
049: context.endElement();
050: }
051:
052: protected void onSerialize(SerializationContext context,
053: Notification notification) throws IOException {
054: context.serialize(CLASS_NAME_QNAME, null, notification
055: .getType());
056: context.serialize(SOURCE_QNAME, null, notification.getSource());
057: context.serialize(SEQUENCE_NUMBER_QNAME, null, new Long(
058: notification.getSequenceNumber()));
059: context.serialize(TIMESTAMP_QNAME, null, new Long(notification
060: .getTimeStamp()));
061: context.serialize(MESSAGE_QNAME, null, notification
062: .getMessage());
063: context.serialize(USER_DATA_QNAME, null, notification
064: .getUserData());
065: }
066:
067: public Element writeSchema(Class aClass, Types types)
068: throws Exception {
069: Element complexType = types.createElement(SCHEMA_COMPLEX_TYPE);
070: complexType.setAttribute("name", TYPE);
071: Element allElement = types.createElement(SCHEMA_ALL);
072: complexType.appendChild(allElement);
073:
074: Element typeElement = types.createElement(SCHEMA_ELEMENT);
075: typeElement.setAttribute("name", CLASS_NAME);
076: typeElement.setAttribute("type", XMLType.XSD_STRING
077: .getLocalPart());
078: allElement.appendChild(typeElement);
079:
080: Element sourceElement = types.createElement(SCHEMA_ELEMENT);
081: sourceElement.setAttribute("name", SOURCE);
082: sourceElement.setAttribute("type", XMLType.XSD_ANYTYPE
083: .getLocalPart());
084: allElement.appendChild(sourceElement);
085:
086: Element sequenceNumberElement = types
087: .createElement(SCHEMA_ELEMENT);
088: sequenceNumberElement.setAttribute("name", SEQUENCE_NUMBER);
089: sequenceNumberElement.setAttribute("type", XMLType.XSD_LONG
090: .getLocalPart());
091: allElement.appendChild(sequenceNumberElement);
092:
093: Element timeStampElement = types.createElement(SCHEMA_ELEMENT);
094: timeStampElement.setAttribute("name", TIMESTAMP);
095: timeStampElement.setAttribute("type", XMLType.XSD_LONG
096: .getLocalPart());
097: allElement.appendChild(timeStampElement);
098:
099: Element messageElement = types.createElement(SCHEMA_ELEMENT);
100: messageElement.setAttribute("name", MESSAGE);
101: messageElement.setAttribute("type", XMLType.XSD_STRING
102: .getLocalPart());
103: allElement.appendChild(messageElement);
104:
105: Element userDataElement = types.createElement(SCHEMA_ELEMENT);
106: userDataElement.setAttribute("name", USER_DATA);
107: userDataElement.setAttribute("type", XMLType.XSD_ANYTYPE
108: .getLocalPart());
109: allElement.appendChild(userDataElement);
110:
111: return complexType;
112: }
113: }
|