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 as...@apache.org on 2005/07/19 16:17:34 UTC

svn commit: r219693 - in /webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc: client/ handler/ handler/soap/

Author: ashutosh
Date: Tue Jul 19 07:17:32 2005
New Revision: 219693

URL: http://svn.apache.org/viewcvs?rev=219693&view=rev
Log:
Trying to integrate JAX-RPC handler with Axis2. JAX-RPC MessageContext and SOAPMessageContext will maintain an instance of Axis2 MC.
Also, Axis2Handler class extends AbstractHandler of Axis2 and maintains an instance of jax-rpc handler

Added:
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/Axis2Handler.java
Modified:
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/BindingProviderImpl.java
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/MessageContextImpl.java
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/soap/SOAPMessageContextImpl.java

Modified: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/BindingProviderImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/BindingProviderImpl.java?rev=219693&r1=219692&r2=219693&view=diff
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/BindingProviderImpl.java (original)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/BindingProviderImpl.java Tue Jul 19 07:17:32 2005
@@ -60,5 +60,11 @@
 	public void setBinding(BindingImpl binding) {
 		this.binding = binding;
 	}
+	
+	public List getHandlerChain(){
+		// For now just returning ServiceHandlerChain. Later may decide
+		// on what basis should take handlers from bindingHandlerChain and portHandlerChain
+		return serviceHandlerChain;
+	}
 
 }

Modified: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java?rev=219693&r1=219692&r2=219693&view=diff
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java (original)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java Tue Jul 19 07:17:32 2005
@@ -33,6 +33,7 @@
 import javax.xml.rpc.Stub;
 import javax.xml.rpc.Service.Mode;
 import javax.xml.rpc.encoding.TypeMappingRegistry;
+import javax.xml.rpc.handler.AbstractHandler;
 import javax.xml.rpc.handler.HandlerInfo;
 import javax.xml.rpc.handler.HandlerRegistry;
 import javax.xml.rpc.security.SecurityConfiguration;
@@ -45,6 +46,8 @@
 import org.apache.axis.jaxrpc.JAXRPCWSDLInterface;
 import org.apache.axis.jaxrpc.JAXRPCWSDL11Interface;
 import org.apache.axis.jaxrpc.factory.WSDLFactoryImpl;
+import org.apache.axis.jaxrpc.handler.Axis2Handler;
+import org.apache.axis2.engine.Phase;
 
 /**
  * @author sunja07
@@ -64,6 +67,25 @@
 	
 	private javax.wsdl.Service wsdlService = null;
 	
+	private Phase createAxis2Phase(BindingProviderImpl bp){
+		Phase jaxRpcPhase = new Phase("JAXRPCPhase");
+		List jaxRpcHandlerList = new ArrayList();
+		jaxRpcHandlerList.addAll(bp.getHandlerChain());
+		Iterator handlerIter = jaxRpcHandlerList.iterator();
+		while(handlerIter.hasNext()){
+			Object handlerObject = handlerIter.next();
+			Axis2Handler axisHandler = null;
+			if(handlerObject instanceof AbstractHandler){
+				axisHandler = new Axis2Handler((AbstractHandler)handlerObject);
+			}
+			if(axisHandler != null){
+				jaxRpcPhase.addHandler(axisHandler);
+			}
+		}
+		
+		return jaxRpcPhase;
+	}
+	
 	/**
 	 * Method createCall
 	 * Creates a Call object not associated with specific operation or target 
@@ -79,6 +101,9 @@
 		((CallImpl)call).portHandlerChain = this.handlerRegistry.portHandlerChain;
 		((CallImpl)call).bindingHandlerChain = this.handlerRegistry.bindingHandlerChain;
 		((CallImpl)call).setBinding(new BindingImpl());
+		//CREATE SOME WRAPPER FUNCTION HERE TO CONVERT ALL THE JAX-RPC
+		//INFORMATION TO AXIS2 INFORMATION(SPECIFICALLY HANDLER INFO) 
+		Phase jaxRpcPhase = createAxis2Phase((CallImpl)call);
 		return call;
 	}
 	

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/Axis2Handler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/Axis2Handler.java?rev=219693&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/Axis2Handler.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/Axis2Handler.java Tue Jul 19 07:17:32 2005
@@ -0,0 +1,33 @@
+package org.apache.axis.jaxrpc.handler;
+
+import org.apache.axis.jaxrpc.handler.soap.SOAPMessageContextImpl;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisFault;
+import org.apache.axis2.handlers.AbstractHandler;
+
+public class Axis2Handler extends AbstractHandler {
+	
+	private javax.xml.rpc.handler.AbstractHandler jaxRpcHandler;
+	
+	public Axis2Handler(){
+		//Default constructor, jaxRpcHandler will be set through setter method
+	}
+	
+	public Axis2Handler(javax.xml.rpc.handler.AbstractHandler jaxRpcHandler){
+		this.jaxRpcHandler = jaxRpcHandler;
+	}
+	
+	public void setJaxRpcHandler(javax.xml.rpc.handler.AbstractHandler handler){
+		jaxRpcHandler = handler;
+	}
+	
+	public javax.xml.rpc.handler.AbstractHandler getJaxRpcHandler(){
+		return jaxRpcHandler;
+	}
+
+	public void invoke(MessageContext mc) throws AxisFault {
+		//Call the handlerMessage() method from 
+		jaxRpcHandler.handleMessage(new SOAPMessageContextImpl(mc));
+	}
+
+}

Modified: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/MessageContextImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/MessageContextImpl.java?rev=219693&r1=219692&r2=219693&view=diff
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/MessageContextImpl.java (original)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/MessageContextImpl.java Tue Jul 19 07:17:32 2005
@@ -8,12 +8,14 @@
 public class MessageContextImpl implements MessageContext {
 	
 	/**
-	 * HashMap to hold peroperties, key is the propertyName, and value is a
-	 * class with keyValue and scopeValue
+	 * No scope information is present in Axis2, so am just adding it in
+	 * a separate HashMap
 	 */
-	protected HashMap<String, PropVals> properties;
+	protected HashMap<String, Scope> propertyScopes = new HashMap<String, Scope>();
 	
-	protected class PropVals{
+	protected org.apache.axis2.context.MessageContext axisMC;
+	
+	/*protected class PropVals{
 		Object value;
 		Scope propScope;
 		
@@ -21,78 +23,68 @@
 			this.value = value;
 			this.propScope = scope;
 		}
-	}
+	}*/
+	
 	
-	public MessageContextImpl(){
-		properties = new HashMap<String, PropVals>();
+	/**
+	 * The JAX-RPC MessageContext is prepared from Axis2 MessageContext, we
+	 * delegate all the setters and getters methods to Axis2 MC whenever
+	 * possible
+	 */
+	public MessageContextImpl(org.apache.axis2.context.MessageContext amc){
+		axisMC = amc;
 	}
 
 	public void setPropertyScope(String name, Scope scope)
 			throws IllegalArgumentException {
-		
-		PropVals property = properties.get(name);
-		if(property != null)
-			property.propScope = scope;
+		//No scope information is present in Axis2, so am just adding it in
+		// a separate HashMap
+		propertyScopes.put(name, scope);
 
 	}
 
 	public Scope getPropertyScope(String name) throws IllegalArgumentException {
-		
-		PropVals property = properties.get(name);
-		if(property != null)
-			return property.propScope;
-		return null;
+		return propertyScopes.get(name);
 	}
 
 	public void setProperty(String name, Object value)
 			throws IllegalArgumentException, UnsupportedOperationException {
 		
-		PropVals property = properties.get(name);
-		if(property != null)
-			property.value = value;
-		else
-			properties.put(name, new PropVals(value, Scope.HANDLER)); //Using HANDLER as the default scope
-										// not sure which one should be default or if scope can be null
-
+		axisMC.setProperty(name, value);
+		propertyScopes.put(name, Scope.HANDLER); //Using HANDLER as the default scope
+			//	  not sure which one should be default or if scope can be null
 	}
 
 	public void setProperty(String name, Object value, Scope scope)
 			throws IllegalArgumentException, UnsupportedOperationException {
 		
-		PropVals property = properties.get(name);
-		if(property != null){
-			property.value = value;
-			property.propScope = scope;
-		} else
-			properties.put(name, new PropVals(value, scope));
-
+		axisMC.setProperty(name, value);
+		propertyScopes.put(name, scope);
 	}
 
 	public Object getProperty(String name) throws IllegalArgumentException {
 		
-		PropVals property = properties.get(name);
-		if(property != null)
-			return property.value;
-		return null;
+		return axisMC.getProperty(name);
 	}
 
 	public void removeProperty(String name) throws IllegalArgumentException {
 		
-		properties.remove(name);
+		throw new UnsupportedOperationException("removing a property not supported" +
+		" in underlying Axis2 MessageContext");
 	}
 
 	public boolean containsProperty(String name) {
 		
-		PropVals property = properties.get(name);
-		if(property != null)
+		Object value = axisMC.getProperty(name);
+		if(value != null)
 			return true;
 		else
 			return false;
 	}
 
 	public Iterator getPropertyNames() {
-		
-		return properties.keySet().iterator();
+		// Returning by reading values from the propertyScope for now, may not be correct
+		return propertyScopes.keySet().iterator();
 	}
 
 }

Modified: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/soap/SOAPMessageContextImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/soap/SOAPMessageContextImpl.java?rev=219693&r1=219692&r2=219693&view=diff
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/soap/SOAPMessageContextImpl.java (original)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/handler/soap/SOAPMessageContextImpl.java Tue Jul 19 07:17:32 2005
@@ -12,21 +12,36 @@
 
 /*
  * Need to do something more in this class for faults and error messages?
+ * or atleast provide some more setters and getters to hook on to underlying
+ * Axis2 MC
  */
 public class SOAPMessageContextImpl extends MessageContextImpl implements SOAPMessageContext {
 
-	private SOAPMessage message;
+	//private SOAPMessage message;
+	
 	private String[] roles;
 	
+	/**
+	 * The JAX-RPC MessageContext is prepared from Axis2 MessageContext, we
+	 * delegate all the setters and getters methods to Axis2 MC whenever
+	 * possible
+	 */
+	public SOAPMessageContextImpl(org.apache.axis2.context.MessageContext amc){
+		super(amc);
+	}
 	
 	public SOAPMessage getMessage() {
-		
-		return message;
+		javax.xml.soap.SOAPEnvelope env = new org.apache.axis2.saaj.SOAPEnvelopeImpl(axisMC.getEnvelope());
+		return new org.apache.axis2.saaj.SOAPMessageImpl(env);
 	}
 
 	public void setMessage(SOAPMessage message) throws JAXRPCException,
 			UnsupportedOperationException {
-		this.message = message;
+		try{
+			axisMC.setEnvelope(((org.apache.axis2.saaj.SOAPEnvelopeImpl)(message.getSOAPPart().getEnvelope())).getOMEnvelope());
+		} catch(javax.xml.soap.SOAPException e){
+			throw new JAXRPCException(e);
+		}
 	}
 
 	public Object[] getHeaders(QName header, JAXBContext context,