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/02/02 21:32:42 UTC

svn commit: r502732 - in /webservices/axis2/trunk/java/modules: jaxws/ jaxws/src/org/apache/axis2/jaxws/context/utils/ jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ metadata/src/org/apache/axis2/jaxws/description/ metadata/src/org/apache/axis2/ja...

Author: nthaker
Date: Fri Feb  2 12:32:41 2007
New Revision: 502732

URL: http://svn.apache.org/viewvc?view=rev&rev=502732
Log:
Axis-2090

Adding correct SOAPMessageContext properties.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/project.xml
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUitls.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java

Modified: webservices/axis2/trunk/java/modules/jaxws/project.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/project.xml?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/project.xml (original)
+++ webservices/axis2/trunk/java/modules/jaxws/project.xml Fri Feb  2 12:32:41 2007
@@ -333,5 +333,13 @@
                 <module>true</module>
             </properties>
         </dependency> 
+        <dependency>
+	        <groupId>servletapi</groupId>
+	        <artifactId>servletapi</artifactId>
+	        <version>${servletapi.version}</version>
+	        <properties>
+	          <module>true</module>
+	        </properties>
+      	</dependency>
     </dependencies>
 </project>

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUitls.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUitls.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUitls.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUitls.java Fri Feb  2 12:32:41 2007
@@ -21,22 +21,34 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.Enumeration;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.handler.MessageContext.Scope;
 import javax.xml.ws.handler.soap.SOAPMessageContext;
 
-import org.apache.axis2.Constants;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.core.MessageContext;
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescriptionWSDL;
+import org.apache.axis2.jaxws.description.OperationDescription;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
-import org.apache.axis2.jaxws.util.WSDLWrapper;
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+
 public class ContextUitls {
     private static final Log log = LogFactory.getLog(ContextUitls.class);
+    private static final String WEBSERVICE_MESSAGE_CONTEXT = "javax.xml.ws.WebServiceContext";
 
     /**
      * Adds the appropriate properties to the MessageContext that the user will see
@@ -67,36 +79,94 @@
 		    soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_DESCRIPTION, wsdlLocationURI);
 			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_DESCRIPTION, Scope.APPLICATION);
         }
-        
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_OPERATION, axisMsgContext.getAxisOperation().getName());
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_OPERATION, Scope.APPLICATION);
-			   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_PORT, null);
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_PORT, Scope.APPLICATION);
-			   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_SERVICE, axisMsgContext.getAxisService().getName());
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_SERVICE,Scope.APPLICATION );
-		   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_INTERFACE, null);
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_INTERFACE, Scope.APPLICATION);
-		  
+		
+		if(sd!=null){
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_SERVICE, sd.getServiceQName());
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_SERVICE,Scope.APPLICATION );
+			if(log.isDebugEnabled()){
+				log.debug("WSDL_SERVICE :"+sd.getServiceQName());
+			}
+		}
+		
+		
 		// If we are running within a servlet container, then JAX-WS requires that the
         // servlet related properties be set on the MessageContext
 		soapMessageContext.put(javax.xml.ws.handler.MessageContext.SERVLET_CONTEXT, axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT));
 		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.SERVLET_CONTEXT, Scope.APPLICATION);
-		   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.SERVLET_REQUEST, axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST));
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.SERVLET_REQUEST, Scope.APPLICATION);
-		   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.SERVLET_RESPONSE, axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE));
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.SERVLET_RESPONSE, Scope.APPLICATION);
-		   
+		if(log.isDebugEnabled()){
+			if(axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT) != null){
+				log.debug("Servlet Context Set");
+			}
+			else{
+				log.debug("Servlet Context not found");
+			}
+		}  
+		
+		HttpServletRequest req = (HttpServletRequest)axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
+		if(req == null){
+			if(log.isDebugEnabled()){
+				log.debug("HTTPServletRequest not found");
+			}
+		}
+		if(req != null){
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.SERVLET_REQUEST, req);
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.SERVLET_REQUEST, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				log.debug("SERVLET_REQUEST Set");
+			}
+			
+			String pathInfo = req.getPathInfo();
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_PATHINFO, pathInfo);
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_PATHINFO, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				if(pathInfo != null){
+					log.debug("HTTP_REQUEST_PATHINFO Set");
+				}
+				else{
+					log.debug("HTTP_REQUEST_PATHINFO not found");
+				}
+			}
+			String queryString = req.getQueryString();
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_QUERYSTRING, queryString);
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_QUERYSTRING, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				if(queryString != null){
+					log.debug("HTTP_REQUEST_QUERYSTRING Set");
+				}
+				else{
+					log.debug("HTTP_REQUEST_QUERYSTRING not found");
+				}
+			}
+			String method = req.getMethod();
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_METHOD, method);
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_METHOD, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				if(method != null){
+					log.debug("HTTP_REQUEST_METHOD Set");
+				}
+				else{
+					log.debug("HTTP_REQUEST_METHOD not found");
+				}
+			}
+			
+		}
+		HttpServletResponse res = (HttpServletResponse)axisMsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE);
+		if(res == null){
+			if(log.isDebugEnabled()){
+				log.debug("Servlet Response not found");
+			}
+		}
+		if(res!=null){
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.SERVLET_RESPONSE, res);
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.SERVLET_RESPONSE, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				log.debug("SERVLET_RESPONSE Set");	
+			}   
+		}
 		// Set the transport properties
 		soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS, axisMsgContext.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS));
 		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS, Scope.APPLICATION);
-		   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_METHOD, axisMsgContext.getProperty(Constants.Configuration.HTTP_METHOD));
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_METHOD, Scope.APPLICATION);
+		
 		   
 		soapMessageContext.put(javax.xml.ws.handler.MessageContext.HTTP_RESPONSE_CODE, axisMsgContext.getProperty(HTTPConstants.MC_HTTP_STATUS_CODE));
 		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_RESPONSE_CODE, Scope.APPLICATION);
@@ -105,13 +175,64 @@
 		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.HTTP_RESPONSE_HEADERS, Scope.APPLICATION);
 		   
 		// Set the message properties
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.MESSAGE_OUTBOUND_PROPERTY, null);
-		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.MESSAGE_OUTBOUND_PROPERTY, Scope.APPLICATION);
-		   
-		soapMessageContext.put(javax.xml.ws.handler.MessageContext.MESSAGE_ATTACHMENTS_INBOUND, null);
+		
+		soapMessageContext.put(javax.xml.ws.handler.MessageContext.MESSAGE_ATTACHMENTS_INBOUND, axisMsgContext.getAttachmentMap());
 		soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.MESSAGE_ATTACHMENTS_INBOUND, Scope.APPLICATION);
-
+		
         soapMessageContext.put(javax.xml.ws.handler.MessageContext.MESSAGE_ATTACHMENTS_OUTBOUND, null);
         soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.MESSAGE_ATTACHMENTS_OUTBOUND, Scope.APPLICATION);
+        
+	}
+	
+	public static void addWSDLProperties(MessageContext jaxwsMessageContext){
+		org.apache.axis2.context.MessageContext msgContext = jaxwsMessageContext.getAxisMessageContext();
+        ServiceContext serviceContext = msgContext.getServiceContext();
+        SOAPMessageContext soapMessageContext = null;
+        if(serviceContext !=null){
+        	WebServiceContext wsc =(WebServiceContext) serviceContext.getProperty(WEBSERVICE_MESSAGE_CONTEXT);
+        	soapMessageContext = (SOAPMessageContext)wsc.getMessageContext();
+        }
+		OperationDescription op = jaxwsMessageContext.getOperationDescription();
+		
+		if(op!=null && soapMessageContext !=null){
+			soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_OPERATION, op.getName());
+			soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_OPERATION, Scope.APPLICATION);
+			if(log.isDebugEnabled()){
+				log.debug("WSDL_OPERATION :"+op.getName());
+			}
+			
+			EndpointInterfaceDescription eid = op.getEndpointInterfaceDescription();
+			if(eid!=null){
+				EndpointDescription ed = eid.getEndpointDescription();
+				QName portType = eid.getPortType();
+				
+				if(ed !=null){
+					soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_PORT, ed.getPortQName());
+					soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_PORT, Scope.APPLICATION);
+					if(log.isDebugEnabled()){
+						log.debug("WSDL_PORT :"+ed.getPortQName());
+					}	
+					if(portType == null || portType.getLocalPart() == ""){
+						if(log.isDebugEnabled()){
+							log.debug("Did not get port type from EndpointInterfaceDescription, attempting to get PortType from EndpointDescription");
+						}
+						portType = ed.getPortType();
+					}
+					
+					
+				}
+				soapMessageContext.put(javax.xml.ws.handler.MessageContext.WSDL_INTERFACE, portType);
+				soapMessageContext.setScope(javax.xml.ws.handler.MessageContext.WSDL_INTERFACE, Scope.APPLICATION);
+				if(log.isDebugEnabled()){
+					log.debug("WSDL_INTERFACE :"+portType);
+				}
+			}
+		}
+		else{
+			if(log.isDebugEnabled()){
+				log.debug("Unable to read WSDL operation, port and interface properties");
+			}
+		}
 	}
+	
 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java Fri Feb  2 12:32:41 2007
@@ -22,6 +22,7 @@
 import javax.xml.ws.soap.SOAPBinding;
 
 import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.context.utils.ContextUitls;
 import org.apache.axis2.jaxws.core.MessageContext;
 import org.apache.axis2.jaxws.core.util.MessageContextUtils;
 import org.apache.axis2.jaxws.description.EndpointDescription;
@@ -64,6 +65,8 @@
         
         initialize(mc);
         OperationDescription operationDesc = getOperationDescription(mc); //mc.getOperationDescription();
+        //Set SOAP Operation Related properties in SOAPMessageContext.
+        ContextUitls.addWSDLProperties(mc);
         Protocol requestProtocol = mc.getMessage().getProtocol();
         MethodMarshaller methodMarshaller = getMethodMarshaller(mc.getMessage().getProtocol(), mc.getOperationDescription());
         Object[] methodInputParams = methodMarshaller.demarshalRequest(mc.getMessage(), mc.getOperationDescription());

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java Fri Feb  2 12:32:41 2007
@@ -117,4 +117,6 @@
      * @return Set<Package>
      */
     public Set<String> getPackages();
+    
+    public QName getPortType();
 }

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java Fri Feb  2 12:32:41 2007
@@ -91,7 +91,7 @@
     public abstract OperationDescription[] getOperationForJavaMethod(String javaMethodName);
     
     public abstract Class getSEIClass();
-
+    public abstract QName getPortType();
     // TODO: These should return a locally defined Enums
     public abstract javax.jws.soap.SOAPBinding.ParameterStyle getSoapBindingParameterStyle();
     public abstract javax.jws.soap.SOAPBinding.Style getSoapBindingStyle();

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java Fri Feb  2 12:32:41 2007
@@ -1336,6 +1336,11 @@
         return wsdlSOAPAddress;
     }
     
+    public QName getPortType(){
+    	String tns = getTargetNamespace();
+    	String portType = getName();
+    	return new QName(tns, portType);
+    }
     /**
      * Determine if the WSDL Extensibility element corresponds to the SOAP Address element.
      * @param exElement

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java?view=diff&rev=502732&r1=502731&r2=502732
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java Fri Feb  2 12:32:41 2007
@@ -69,6 +69,7 @@
     // ANNOTATION: @WebService
     private WebService          webServiceAnnotation;
     private String              webServiceTargetNamespace;
+    private String              webService_Name;
     
     
     // ANNOTATION: @SOAPBinding
@@ -721,6 +722,27 @@
             }
         }
         return webServiceTargetNamespace;
+    }
+   
+    public String getAnnoWebServiceName() {
+        //REVIEW the following, used to get Port
+    	if (webService_Name == null) {
+    		
+    		if (getAnnoWebService() != null 
+    				&& !DescriptionUtils.isEmpty(getAnnoWebService().name())) {
+    			webService_Name = getAnnoWebService().name();
+     		}
+    		else {
+    			webService_Name = "";
+    		}
+    	}
+        return webService_Name;
+    }
+    
+    public QName getPortType(){
+    	String name = getAnnoWebServiceName();
+    	String tns = getAnnoWebServiceTargetNamespace();
+    	return new QName(tns, name);
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org