You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by nt...@apache.org on 2007/06/22 21:29:53 UTC
svn commit: r549938 -
/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java
Author: nthaker
Date: Fri Jun 22 12:29:53 2007
New Revision: 549938
URL: http://svn.apache.org/viewvc?view=rev&rev=549938
Log:
JIRA - AXIS2-2842
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java?view=diff&rev=549938&r1=549937&r2=549938
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java Fri Jun 22 12:29:53 2007
@@ -18,18 +18,28 @@
*/
package org.apache.axis2.jaxws.handler;
-import org.apache.axis2.jaxws.core.MEPContext;
+import org.apache.axis2.jaxws.ExceptionFactory;
import org.apache.axis2.jaxws.core.MessageContext;
+import org.apache.axis2.jaxws.i18n.Messages;
+import org.apache.axis2.jaxws.message.Block;
import org.apache.axis2.jaxws.message.Message;
+import org.apache.axis2.jaxws.message.databinding.JAXBBlockContext;
+import org.apache.axis2.jaxws.message.factory.BlockFactory;
+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
import org.apache.axis2.jaxws.message.factory.MessageFactory;
import org.apache.axis2.jaxws.registry.FactoryRegistry;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import javax.xml.bind.JAXBContext;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import javax.xml.stream.XMLStreamException;
+
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
/**
@@ -39,13 +49,60 @@
*/
public class SoapMessageContext extends BaseMessageContext implements
javax.xml.ws.handler.soap.SOAPMessageContext {
-
+ private static final Log log = LogFactory.getLog(SoapMessageContext.class);
public SoapMessageContext(MessageContext messageCtx) {
super(messageCtx);
}
public Object[] getHeaders(QName qname, JAXBContext jaxbcontext, boolean flag) {
- return null;
+ if(log.isDebugEnabled()){
+ log.debug("Getting all Headers for Qname: "+qname);
+ }
+
+ if(qname == null){
+ if(log.isDebugEnabled()){
+ log.debug("Invalid QName, QName cannot be null");
+ }
+ ExceptionFactory.makeWebServiceException(Messages.getMessage(""));
+ }
+ if(jaxbcontext == null){
+ if(log.isDebugEnabled()){
+ log.debug("Invalid JAXBContext, JAXBContext cannot be null");
+ }
+ ExceptionFactory.makeWebServiceException(Messages.getMessage("SOAPMessageContextErr2"));
+ }
+
+ if(flag == false){
+ //TODO: Implement, In this case we need to only return headers targetted at roles
+ // currently played by this SOAPNode.
+
+ }
+ List<Object> list = new ArrayList<Object>();
+ String namespace = qname.getNamespaceURI();
+ String localPart = qname.getLocalPart();
+ BlockFactory blockFactory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
+ Message m = messageCtx.getMessage();
+ JAXBBlockContext jbc = new JAXBBlockContext(jaxbcontext);
+ if(m.getNumHeaderBlocks()>0){
+ Block hb = m.getHeaderBlock(namespace, localPart, jbc, blockFactory);
+ if(hb!=null){
+ try{
+
+ Object bo = hb.getBusinessObject(false);
+ if(bo!=null){
+ if(log.isDebugEnabled()){
+ log.debug("Extracted BO from Header Block");
+ }
+ list.add(bo);
+ }
+
+ }catch(XMLStreamException e){
+ ExceptionFactory.makeWebServiceException(e);
+ }
+ }
+ }
+ return list.toArray(new Object[0]);
+
}
public SOAPMessage getMessage() {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org