1 package org.objectweb.celtix.tools.extensions.jms; 2 3 import java.io.*; 4 import java.lang.reflect.*; 5 6 import javax.wsdl.Definition; 7 import javax.wsdl.WSDLException; 8 import javax.wsdl.extensions.ExtensibilityElement; 9 import javax.wsdl.extensions.ExtensionDeserializer; 10 import javax.wsdl.extensions.ExtensionRegistry; 11 import javax.wsdl.extensions.ExtensionSerializer; 12 import javax.xml.namespace.QName ; 13 import org.w3c.dom.*; 14 15 import org.objectweb.celtix.helpers.XMLUtils; 16 import org.objectweb.celtix.tools.common.ToolConstants; 17 18 public class JMSAddressSerializer implements ExtensionSerializer, 19 ExtensionDeserializer, 20 Serializable { 21 public static final long serialVersionUID = 1; 22 XMLUtils xmlUtils = new XMLUtils(); 23 24 public void marshall(Class parentType, 25 QName elementType, 26 ExtensibilityElement extension, 27 PrintWriter pw, 28 Definition def, 29 ExtensionRegistry extReg) throws WSDLException { 30 31 JMSAddress jmsAddress = (JMSAddress)extension; 32 StringBuffer sb = new StringBuffer (300); 33 sb.append(" <" + xmlUtils.writeQName(def, elementType) + " "); 34 sb.append(jmsAddress.getAttrXMLString()); 35 sb.append("/>"); 36 pw.print(sb.toString()); 37 pw.println(); 38 } 39 40 public ExtensibilityElement unmarshall(Class parentType, 41 QName elementType, 42 Element el, 43 Definition def, 44 ExtensionRegistry extReg) throws WSDLException { 45 46 JMSAddress jmsAddress = (JMSAddress)extReg.createExtension(parentType, elementType); 47 jmsAddress.setElementType(elementType); 48 jmsAddress.setElement(el); 49 jmsAddress.setDocumentBaseURI(def.getDocumentBaseURI()); 50 51 JMSAddressParser parser = new JMSAddressParser(); 52 parser.parseElement(jmsAddress, el); 53 54 if (jmsAddress.getAddress() == null || jmsAddress.getAddress().trim().length() == 0) { 55 if (def.getNamespaces() != null) { 56 jmsAddress.setAddress((String )def.getNamespaces().get("jms")); 57 } else { 58 jmsAddress.setAddress(ToolConstants.NS_JMS_ADDRESS); 59 } 60 } 61 return jmsAddress; 62 } 63 } 64 | Popular Tags |