Package org.jboss.ws.core.jaxws.handler

Source Code of org.jboss.ws.core.jaxws.handler.LogicalMessageImpl

/*     */ package org.jboss.ws.core.jaxws.handler;
/*     */
/*     */ import java.io.IOException;
/*     */ import javax.xml.bind.JAXBContext;
/*     */ import javax.xml.soap.SOAPElement;
/*     */ import javax.xml.soap.SOAPException;
/*     */ import javax.xml.soap.SOAPMessage;
/*     */ import javax.xml.transform.Source;
/*     */ import javax.xml.transform.dom.DOMSource;
/*     */ import javax.xml.ws.LogicalMessage;
/*     */ import javax.xml.ws.WebServiceException;
/*     */ import org.jboss.logging.Logger;
/*     */ import org.jboss.util.NotImplementedException;
/*     */ import org.jboss.ws.WSException;
/*     */ import org.jboss.ws.core.CommonMessageContext;
/*     */ import org.jboss.ws.core.HTTPMessageImpl;
/*     */ import org.jboss.ws.core.MessageAbstraction;
/*     */ import org.jboss.ws.core.soap.EnvelopeBuilder;
/*     */ import org.jboss.ws.core.soap.EnvelopeBuilderDOM;
/*     */ import org.jboss.ws.core.soap.MessageContextAssociation;
/*     */ import org.jboss.ws.core.soap.SOAPBodyImpl;
/*     */ import org.jboss.ws.core.soap.SOAPContentElement;
/*     */ import org.jboss.ws.core.soap.Style;
/*     */ import org.jboss.ws.core.soap.XMLFragment;
/*     */ import org.jboss.wsf.common.DOMUtils;
/*     */ import org.jboss.wsf.spi.util.ServiceLoader;
/*     */ import org.w3c.dom.Element;
/*     */
/*     */ public class LogicalMessageImpl
/*     */   implements LogicalMessage
/*     */ {
/*  63 */   private static final Logger log = Logger.getLogger(LogicalMessageImpl.class);
/*     */   private Style style;
/*     */   private MessageAbstraction message;
/*     */
/*     */   public LogicalMessageImpl(MessageAbstraction message, Style style)
/*     */   {
/*  70 */     this.style = style;
/*  71 */     this.message = message;
/*     */   }
/*     */
/*     */   public Source getPayload()
/*     */   {
/*  76 */     Source source = null;
/*  77 */     if ((this.message instanceof SOAPMessage))
/*     */     {
/*  79 */       SOAPMessage soapMessage = (SOAPMessage)this.message;
/*  80 */       SOAPBodyImpl soapBody = getSOAPBody(soapMessage);
/*  81 */       SOAPElement bodyElement = (SOAPElement)soapBody.getFirstChild();
/*     */
/*  83 */       if (this.style == Style.RPC)
/*     */       {
/*  85 */         source = new DOMSource(bodyElement);
/*     */       }
/*     */       else
/*     */       {
/*  89 */         SOAPContentElement contentElement = (SOAPContentElement)bodyElement;
/*  90 */         source = contentElement.getXMLFragment().getSource();
/*     */       }
/*     */     }
/*  93 */     else if ((this.message instanceof HTTPMessageImpl))
/*     */     {
/*  95 */       HTTPMessageImpl httpMessage = (HTTPMessageImpl)this.message;
/*  96 */       source = httpMessage.getXmlFragment().getSource();
/*     */     }
/*  98 */     return source;
/*     */   }
/*     */
/*     */   public void setPayload(Source source)
/*     */   {
/* 103 */     if ((this.message instanceof SOAPMessage))
/*     */     {
/* 105 */       SOAPMessage soapMessage = (SOAPMessage)this.message;
/* 106 */       SOAPBodyImpl soapBody = getSOAPBody(soapMessage);
/* 107 */       SOAPElement bodyElement = (SOAPElement)soapBody.getFirstChild();
/*     */       try
/*     */       {
/* 110 */         if (this.style == Style.RPC)
/*     */         {
/*     */           try
/*     */           {
/* 114 */             soapBody.removeContents();
/* 115 */             EnvelopeBuilder envBuilder = (EnvelopeBuilder)ServiceLoader.loadService(EnvelopeBuilder.class.getName(), EnvelopeBuilderDOM.class.getName());
/* 116 */             envBuilder.setStyle(this.style);
/* 117 */             Element domBodyElement = DOMUtils.sourceToElement(source);
/* 118 */             envBuilder.buildBodyElementRpc(soapBody, domBodyElement);
/*     */           }
/*     */           catch (IOException ex)
/*     */           {
/* 122 */             WSException.rethrow(ex);
/*     */           }
/*     */         }
/*     */         else
/*     */         {
/* 127 */           SOAPContentElement contentElement = (SOAPContentElement)bodyElement;
/* 128 */           contentElement.setXMLFragment(new XMLFragment(source));
/*     */         }
/*     */       }
/*     */       catch (SOAPException ex)
/*     */       {
/* 133 */         throw new WebServiceException("Cannot set xml payload", ex);
/*     */       }
/*     */     }
/* 136 */     else if ((this.message instanceof HTTPMessageImpl))
/*     */     {
/* 138 */       HTTPMessageImpl httpMessage = (HTTPMessageImpl)this.message;
/* 139 */       httpMessage.setXmlFragment(new XMLFragment(source));
/*     */     }
/*     */
/* 142 */     MessageContextAssociation.peekMessageContext().setModified(true);
/*     */   }
/*     */
/*     */   public Object getPayload(JAXBContext jaxbContext)
/*     */   {
/* 148 */     Object payload = null;
/* 149 */     if ((this.message instanceof SOAPMessage))
/*     */     {
/* 151 */       SOAPMessage soapMessage = (SOAPMessage)this.message;
/* 152 */       SOAPBodyImpl soapBody = getSOAPBody(soapMessage);
/*     */
/* 154 */       SOAPContentElement bodyElement = (SOAPContentElement)soapBody.getFirstChild();
/* 155 */       if (bodyElement != null)
/*     */       {
/* 157 */         payload = bodyElement.getObjectValue();
/*     */       }
/*     */     }
/* 160 */     else if ((this.message instanceof HTTPMessageImpl))
/*     */     {
/* 162 */       throw new NotImplementedException();
/*     */     }
/* 164 */     return payload;
/*     */   }
/*     */
/*     */   public void setPayload(Object payload, JAXBContext jaxbContext)
/*     */   {
/* 169 */     if ((this.message instanceof SOAPMessage))
/*     */     {
/* 171 */       SOAPMessage soapMessage = (SOAPMessage)this.message;
/* 172 */       SOAPBodyImpl soapBody = getSOAPBody(soapMessage);
/*     */
/* 174 */       SOAPContentElement bodyElement = (SOAPContentElement)soapBody.getFirstChild();
/* 175 */       if (bodyElement != null)
/*     */       {
/* 177 */         bodyElement.setObjectValue(payload);
/* 178 */         MessageContextAssociation.peekMessageContext().setModified(true);
/*     */       }
/*     */     }
/* 181 */     else if ((this.message instanceof HTTPMessageImpl))
/*     */     {
/* 183 */       throw new NotImplementedException();
/*     */     }
/*     */   }
/*     */
/*     */   private SOAPBodyImpl getSOAPBody(SOAPMessage soapMessage)
/*     */   {
/* 189 */     SOAPBodyImpl soapBody = null;
/*     */     try
/*     */     {
/* 192 */       soapBody = (SOAPBodyImpl)soapMessage.getSOAPBody();
/*     */     }
/*     */     catch (SOAPException ex)
/*     */     {
/* 196 */       WSException.rethrow(ex);
/*     */     }
/* 198 */     return soapBody;
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.ws.core.jaxws.handler.LogicalMessageImpl
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.ws.core.jaxws.handler.LogicalMessageImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.