1 /* 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.xml.internal.ws.api.message; 27 28 import javax.xml.bind.JAXBException; 29 import javax.xml.bind.Unmarshaller; 30 import javax.xml.namespace.QName; 31 import javax.xml.soap.SOAPException; 32 import javax.xml.soap.SOAPMessage; 33 import javax.xml.stream.XMLStreamException; 34 import javax.xml.stream.XMLStreamReader; 35 import javax.xml.stream.XMLStreamWriter; 36 import javax.xml.transform.Source; 37 38 import org.xml.sax.ContentHandler; 39 import org.xml.sax.ErrorHandler; 40 import org.xml.sax.SAXException; 41 42 import com.sun.istack.internal.NotNull; 43 import com.sun.xml.internal.bind.api.Bridge; 44 import com.sun.xml.internal.ws.api.SOAPVersion; 45 import com.sun.xml.internal.ws.api.WSBinding; 46 import com.sun.xml.internal.ws.api.addressing.AddressingVersion; 47 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort; 48 import com.sun.xml.internal.ws.message.saaj.SAAJMessage; 49 import com.sun.xml.internal.ws.message.stream.StreamMessage; 50 import com.sun.xml.internal.ws.spi.db.XMLBridge; 51 52 /** 53 * A <code>MessageWrapper</code> wraps the Message for the access through Packet. 54 * 55 * @author shih-chang.chen@oracle.com 56 */ 57 class MessageWrapper extends StreamMessage { 58 59 Packet packet; 60 Message delegate; 61 StreamMessage streamDelegate; 62 63 @Override 64 public void writePayloadTo(ContentHandler contentHandler, ErrorHandler errorHandler, boolean fragment) throws SAXException { 65 streamDelegate.writePayloadTo(contentHandler, errorHandler, fragment); 66 } 67 68 @Override 69 public String getBodyPrologue() { 70 return streamDelegate.getBodyPrologue(); 71 } 72 73 @Override 74 public String getBodyEpilogue() { 75 return streamDelegate.getBodyEpilogue(); 76 } 77 78 MessageWrapper(Packet p, Message m) { 79 super(m.getSOAPVersion()); 80 packet = p; 81 delegate = m; 82 streamDelegate = (m instanceof StreamMessage) ? (StreamMessage) m : null; 83 setMessageMedadata(p); 84 } 85 86 @Override 87 public int hashCode() { 88 return delegate.hashCode(); 89 } 90 91 @Override 92 public boolean equals(Object obj) { 93 return delegate.equals(obj); 94 } 95 96 @Override 97 boolean isProtocolMessage() { return delegate.isProtocolMessage(); } 98 @Override 99 void setIsProtocolMessage() { delegate.setIsProtocolMessage(); } 100 101 @Override 102 public boolean hasHeaders() { 103 return delegate.hasHeaders(); 104 } 105 106 @Override 107 public AttachmentSet getAttachments() { 108 return delegate.getAttachments(); 109 } 110 111 @Override 112 public String toString() { 113 return "{MessageWrapper: " + delegate.toString() + "}"; 114 } 115 116 @Override 117 public boolean isOneWay(WSDLPort port) { 118 return delegate.isOneWay(port); 119 } 120 121 @Override 122 public String getPayloadLocalPart() { 123 return delegate.getPayloadLocalPart(); 124 } 125 126 @Override 127 public String getPayloadNamespaceURI() { 128 return delegate.getPayloadNamespaceURI(); 129 } 130 131 @Override 132 public boolean hasPayload() { 133 return delegate.hasPayload(); 134 } 135 136 @Override 137 public boolean isFault() { 138 return delegate.isFault(); 139 } 140 141 @Override 142 public QName getFirstDetailEntryName() { 143 return delegate.getFirstDetailEntryName(); 144 } 145 146 @Override 147 public Source readEnvelopeAsSource() { 148 //TODO if (delegate instanceof SAAJMessage) 149 return delegate.readEnvelopeAsSource(); 150 } 151 152 @Override 153 public Source readPayloadAsSource() { 154 //TODO if (delegate instanceof SAAJMessage) 155 return delegate.readPayloadAsSource(); 156 } 157 158 @Override 159 public SOAPMessage readAsSOAPMessage() throws SOAPException { 160 if (!(delegate instanceof SAAJMessage)) { 161 delegate = toSAAJ(packet, null); 162 } 163 return delegate.readAsSOAPMessage(); 164 } 165 166 @Override 167 public SOAPMessage readAsSOAPMessage(Packet p, boolean inbound) throws SOAPException { 168 if (!(delegate instanceof SAAJMessage)) { 169 delegate = toSAAJ(p, inbound); 170 } 171 return delegate.readAsSOAPMessage(); 172 } 173 174 @Override 175 public Object readPayloadAsJAXB(Unmarshaller unmarshaller) throws JAXBException { 176 return delegate.readPayloadAsJAXB(unmarshaller); 177 } 178 179 @Override 180 public <T> T readPayloadAsJAXB(Bridge<T> bridge) throws JAXBException { 181 return delegate.readPayloadAsJAXB(bridge); 182 } 183 184 @Override 185 public <T> T readPayloadAsJAXB(XMLBridge<T> bridge) throws JAXBException { 186 return delegate.readPayloadAsJAXB(bridge); 187 } 188 189 @Override 190 public XMLStreamReader readPayload() { 191 try { 192 return delegate.readPayload(); 193 } catch (XMLStreamException e) { 194 e.printStackTrace(); 195 } 196 return null; 197 } 198 199 @Override 200 public void consume() { 201 delegate.consume(); 202 } 203 204 @Override 205 public void writePayloadTo(XMLStreamWriter sw) throws XMLStreamException { 206 delegate.writePayloadTo(sw); 207 } 208 209 @Override 210 public void writeTo(XMLStreamWriter sw) throws XMLStreamException { 211 delegate.writeTo(sw); 212 } 213 214 @Override 215 public void writeTo(ContentHandler contentHandler, ErrorHandler errorHandler) 216 throws SAXException { 217 delegate.writeTo(contentHandler, errorHandler); 218 } 219 220 @Override 221 public Message copy() { 222 return delegate.copy().copyFrom(delegate); 223 } 224 225 @Override 226 public String getID(WSBinding binding) { 227 return delegate.getID(binding); 228 } 229 230 @Override 231 public String getID(AddressingVersion av, SOAPVersion sv) { 232 return delegate.getID(av, sv); 233 } 234 235 @Override 236 public SOAPVersion getSOAPVersion() { 237 return delegate.getSOAPVersion(); 238 } 239 240 @Override 241 public @NotNull MessageHeaders getHeaders() { 242 return delegate.getHeaders(); 243 } 244 245 @Override 246 public void setMessageMedadata(MessageMetadata metadata) { 247 super.setMessageMedadata(metadata); 248 delegate.setMessageMedadata(metadata); 249 } 250 }