You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by he...@apache.org on 2005/12/06 21:34:21 UTC

svn commit: r354536 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: client/WSDLMEPClientBuilder.java description/AxisService.java

Author: hemapani
Date: Tue Dec  6 12:34:16 2005
New Revision: 354536

URL: http://svn.apache.org/viewcvs?rev=354536&view=rev
Log:
updates to the Dynamic invoker, the wrappers for the MEPClients are comming

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLMEPClientBuilder.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLMEPClientBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLMEPClientBuilder.java?rev=354536&r1=354535&r2=354536&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLMEPClientBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLMEPClientBuilder.java Tue Dec  6 12:34:16 2005
@@ -23,12 +23,21 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.wsdl.WSDLVersionWrapper;
 import org.apache.axis2.wsdl.builder.WOMBuilder;
 import org.apache.axis2.wsdl.builder.WOMBuilderFactory;
 import org.apache.wsdl.WSDLBinding;
 import org.apache.wsdl.WSDLBindingOperation;
+import org.apache.wsdl.WSDLConstants;
 import org.apache.wsdl.WSDLDescription;
 import org.apache.wsdl.WSDLEndpoint;
 import org.apache.wsdl.WSDLInterface;
@@ -40,15 +49,20 @@
 public class WSDLMEPClientBuilder {
 	private boolean isoneway= false;
 	private WSDLDescription description;
-	private String clienthome;
+	private ConfigurationContext configurationContext;
 	
-	public WSDLMEPClientBuilder(String clienthome){
-		this.clienthome = clienthome;
+	public WSDLMEPClientBuilder(String clienthome) throws AxisFault{
+		try{
+		configurationContext = new ConfigurationContextFactory().buildClientConfigurationContext(clienthome);
+		}catch(DeploymentException e){
+			throw new AxisFault(e);
+		}
 	}
 	
 	public void defineDescription(URL wsdlurl)throws AxisFault{
 		try {
-			WOMBuilder buider = WOMBuilderFactory.getBuilder(WSDLConstants.WSDL_1_1);
+			
+			WOMBuilder buider = WOMBuilderFactory.getBuilder(org.apache.axis2.wsdl.WSDLConstants.WSDL_1_1);
 			WSDLVersionWrapper vw = buider.build(wsdlurl.openStream());
 			description = vw.getDescription();
 		} catch (Exception e) {
@@ -64,13 +78,16 @@
 	}
 	
 	public MEPClient createMEPClient(QName servicename, QName endpointname,String operationname) throws AxisFault{
+		if(description == null){
+			throw new AxisFault("You need to call public void defineDescription(URL wsdlurl before this method)");
+		}
 		WSDLService service = findService(servicename);
+		AxisService serviceDesc = new AxisService(service);
+		
 		WSDLEndpoint endpoint = findEndpoint(endpointname,service);
 		EndpointReference toepr = null;
-		String soapAction = "";
 		Options op = new Options();
 		
-		
 		Iterator elements = endpoint.getExtensibilityElements().iterator();
         while (elements.hasNext()) {
                 Object obj = elements.next();
@@ -89,7 +106,24 @@
         }
 
         WSDLBinding binding = endpoint.getBinding();
+        
+        //let us configure the complete AxisService out of this, not the current the Operation only
+        Iterator bindings = binding.getBindingOperations().values().iterator();
+        while(bindings.hasNext()){
+        	WSDLBindingOperation wsdlbop =(WSDLBindingOperation)bindings.next();
+        	WSDLOperation wsdlop = wsdlbop.getOperation();
+        	AxisOperation axisOp =  AxisOperationFactory.getAxisOperation(findMEP(wsdlop));
+        	axisOp.setName(wsdlop.getName());
+        	serviceDesc.addOperation(axisOp);
+        }
+        
+        //This part is compelte mess .. I think we need to look closly at the ServiceGroups  ..time been this works
+        configurationContext.getAxisConfiguration().addService(serviceDesc);
+        AxisServiceGroup serviceGroup = new AxisServiceGroup(configurationContext.getAxisConfiguration());
+        ServiceGroupContext serviceGroupContext = new ServiceGroupContext(configurationContext,serviceGroup);
+        ServiceContext serviceContext =  new ServiceContext(serviceDesc,serviceGroupContext);
 
+        
         WSDLOperation wsdlop = getOperation(operationname,endpoint);
         
         WSDLBindingOperation bop = binding.getBindingOperation(wsdlop.getName());
@@ -104,11 +138,13 @@
         }
         
         
-        MEPClient mepclient = new MessageSender(clienthome);
+        
+        
+        MEPClient mepclient = null;
         if(wsdlop.getInputMessage() != null && wsdlop.getOutputMessage() != null && !isoneway){
-        	mepclient = new Call(clienthome);
+        	mepclient = new InOutMEPClient(serviceContext);
         }else if(wsdlop.getInputMessage() != null || isoneway){
-            mepclient = new MessageSender(clienthome);        	
+            mepclient = new InOnlyMEPClient(serviceContext);      	
         }else{
         	throw new AxisFault("Unknown MEP");
         }
@@ -175,4 +211,38 @@
 	public void setIsoneway(boolean isoneway) {
 		this.isoneway = isoneway;
 	}
+	
+	
+	private int findMEP(WSDLOperation wsdlOp) throws AxisFault{
+		if(wsdlOp.getInputMessage() == null){
+			throw new AxisFault("Unsupported MEP");
+		}
+		if(wsdlOp.getOutputMessage() == null){
+			return WSDLConstants.MEP_CONSTANT_IN_ONLY;
+		}else{
+			return WSDLConstants.MEP_CONSTANT_IN_OUT;
+		}
+	}
+	
+//	public static void main(String[] args) throws Exception{
+//		WSDLMEPClientBuilder builder = new WSDLMEPClientBuilder("/home/hemapani/tools/axis2-0.93-SNAPSHOT-bin/repository/");
+//		//builder.defineDescription(new URL("http://mssoapinterop.org/asmx/WSDL/InteropTestDocLit.wsdl"));
+//		builder.defineDescription(new File("/home/hemapani/temp/InteropTestDocLit.wsdl").toURL());
+//		InOutMEPClient mepclient = (InOutMEPClient)builder.createMEPClient("echoStruct");
+//		
+//		String message= "<echoStructParam xmlns=\"http://soapinterop.org/xsd\"><varFloat>23.4</varFloat>\"<varInt>35</varInt><varString>Hello1</varString></echoStructParam>";
+//		XMLStreamReader in = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(message.getBytes()));
+//		StAXOMBuilder omb = new StAXOMBuilder(in);
+//		
+//		AxisOperation opDesc = AxisOperationFactory.getAxisOperation(AxisOperationFactory.MEP_CONSTANT_IN_OUT);
+//		opDesc.setName(new QName("http://soapinterop.org","echoStruct"));
+//		MessageContext msgctx= new MessageContext(mepclient.getServiceContext().getConfigurationContext());
+//		
+//		SOAPFactory soapFactory = new SOAP11Factory();
+//		SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
+//		envelope.getBody().setFirstChild(omb.getDocumentElement());
+//		msgctx.setEnvelope(envelope);
+//		
+//		mepclient.invokeBlocking(opDesc,msgctx);
+//	}
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java?rev=354536&r1=354535&r2=354536&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java Tue Dec  6 12:34:16 2005
@@ -66,7 +66,7 @@
     private String axisServiceName;
     private String fileName = "";
 
-    private WSDLServiceImpl serviceimpl = null;
+    private WSDLService serviceimpl = null;
 
     private HashMap wsaaction_operationmap = null;
 
@@ -81,7 +81,7 @@
      * Constructor AxisService
      */
 
-    public AxisService(WSDLServiceImpl serviceimpl) {
+    public AxisService(WSDLService serviceimpl) {
         this.serviceimpl = serviceimpl;
         this.wsaaction_operationmap = new HashMap();
         this.setComponentProperty(PARAMETER_KEY, new ParameterIncludeImpl());