1 29 30 package com.caucho.soap.skeleton; 31 32 import com.caucho.jaxb.skeleton.Property; 33 34 import javax.xml.bind.JAXBException; 35 import javax.xml.bind.Marshaller; 36 import javax.xml.bind.Unmarshaller; 37 import javax.xml.namespace.QName ; 38 import javax.xml.stream.XMLStreamException; 39 import javax.xml.stream.XMLStreamReader; 40 import javax.xml.stream.XMLStreamWriter; 41 import javax.xml.ws.Holder; 42 import java.io.IOException ; 43 44 public class OutParameterMarshal extends ParameterMarshal { 45 public OutParameterMarshal(int arg, Property property, QName name, 46 Marshaller marshaller, Unmarshaller unmarshaller) 47 { 48 super(arg, property, name, marshaller, unmarshaller); 49 } 50 51 55 public Object deserializeReply(XMLStreamReader in) 56 throws IOException , XMLStreamException, JAXBException 57 { 58 return _property.read(_unmarshaller, in, _name); 59 } 60 61 public void deserializeReply(XMLStreamReader in, Object [] args) 62 throws IOException , XMLStreamException, JAXBException 63 { 64 ((Holder) args[_arg]).value = _property.read(_unmarshaller, in, _name); 65 } 66 67 71 public void deserializeCallDefault(Object []args) 72 { 73 if (args[_arg] == null) 74 args[_arg] = new Holder(); 75 } 76 77 public void serializeReply(XMLStreamWriter out, Object []args) 78 throws IOException , XMLStreamException, JAXBException 79 { 80 if (args[_arg] instanceof Holder) 81 _property.write(_marshaller, out, ((Holder) args[_arg]).value, _name); 82 else 83 _property.write(_marshaller, out, null, _name); 84 } 85 86 public void serializeReply(XMLStreamWriter out, Object ret) 87 throws IOException , XMLStreamException, JAXBException 88 { 89 _property.write(_marshaller, out, ret, _name); 90 } 91 92 private void writeName(XMLStreamWriter out) 93 throws IOException , XMLStreamException 94 { 95 if (_name.getPrefix() != null) { 96 out.writeStartElement(_name.getPrefix(), 97 _name.getLocalPart(), 98 _name.getNamespaceURI()); 99 } 100 else if (_name.getNamespaceURI() != null) { 101 out.writeStartElement(_name.getNamespaceURI(), 102 _name.getLocalPart()); 103 } 104 else 105 out.writeStartElement(_name.getLocalPart()); 106 } 107 } 108 | Popular Tags |