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 de...@apache.org on 2004/12/21 06:43:30 UTC

svn commit: r122941 - /webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java /webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java

Author: deepal
Date: Mon Dec 20 21:43:28 2004
New Revision: 122941

URL: http://svn.apache.org/viewcvs?view=rev&rev=122941
Log:
wrote sendReceiveAsync 
Modified:
   webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java
   webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java?view=diff&rev=122941&p1=webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java&r1=122940&p2=webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java&r2=122941
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/Call.java	Mon Dec 20 21:43:28 2004
@@ -44,6 +44,9 @@
     private EngineRegistry registry;
     protected Log log = LogFactory.getLog(getClass());
     private EndpointReferenceType targetEPR;
+    private boolean blocked;
+    private String transport;
+    private String action;
 
 
     public Call() {
@@ -62,14 +65,15 @@
      * @param transport
      */
     public void setListenerTransport(String transport, boolean blocked){
-
+        this.blocked = blocked;
+        this.transport = transport;
     }
     /**
      * todo
      * @param action
      */
     public void setAction(String action){
-
+        this.action = action;
     }
 
 
@@ -156,31 +160,6 @@
 
             SOAPEnvelope resenvelope = response.getEnvelope();
 
-            SOAPBody body = resenvelope.getBody();
-
-            Iterator children = body.getChildren();
-            while (children != null && children.hasNext()) {
-                OMNode child = (OMNode) children.next();
-                if (child.getType() == OMNode.ELEMENT_NODE) {
-                    OMElement element = (OMElement) child;
-                    OMNamespace ns = element.getNamespace();
-                    if (OMConstants.SOAPFAULT_LOCAL_NAME.equals(element.getLocalName())
-                            && OMConstants.SOAPFAULT_NAMESPACE_URI.equals(ns.getName())) {
-                        Iterator it = element.getChildren();
-                        String error = null;
-                        while (it.hasNext()) {
-                            OMNode node = (OMNode) it.next();
-                            if (OMNode.TEXT_NODE == node.getType()) {
-                                error = ((OMText) node).getValue();
-                                if (error != null) {
-                                    break;
-                                }
-                            }
-                        }
-                        throw new AxisFault(error);
-                    }
-                }
-            }
             return resenvelope;
         } catch (OMException e) {
             throw AxisFault.makeFault(e);
@@ -194,8 +173,59 @@
      * @param envelope
      * @param callback
      */
-    public void sendReceiveAsync(SOAPEnvelope envelope, CallBack callback){
-      //todo implement this
+    public void sendReceiveAsync(SOAPEnvelope envelope, final CallBack callback) throws AxisFault {
+        //todo ask srinath about this URL, frorm where I can get it :)
+        URL url = null;
+        final Correlator correlator = Correlator.getInstance();
+        try {
+            final URLConnection urlConnect = url.openConnection();
+            final AxisEngine engine = new AxisEngine(registry);
+            urlConnect.setDoOutput(true);
+
+            MessageContext msgctx = new MessageContext(registry);
+            msgctx.setEnvelope(envelope);
+
+            OutputStream out = urlConnect.getOutputStream();
+            msgctx.setProperty(MessageContext.TRANSPORT_DATA, out);
+            msgctx.setProperty(MessageContext.TRANSPORT_TYPE, TransportSenderLocator.TRANSPORT_HTTP);
+            msgctx.setProperty(MessageContext.REQUEST_URL, url);
+
+            engine.send(msgctx);
+            /**
+             * only the transport blocked , client dose not hang
+             */
+            if(blocked){
+                Runnable runnable = new Runnable() {
+                    public void run() {
+                        try {
+
+                            //todo find a way to get msg id
+                            correlator.addCorrelationInfo("MSGID",callback);
+                            log.info("Starting new Thread ");
+                            MessageContext response = createIncomingMessageContext(urlConnect.getInputStream(), engine);
+                            response.setServerSide(false);
+                            engine.receive(response);
+                            SOAPEnvelope envelope = response.getEnvelope();
+                            //todo craete   AsyncResult here
+                            AsyncResult result = null;
+                            correlator.getCorrelationInfo("MSGID").onComplete(result);
+                        } catch (Exception e) {
+                            correlator.getCorrelationInfo("MSGID").reportError(e);
+                        }
+                    }
+                };
+                new Thread(runnable).start();
+            } else {
+                //todo
+                /**
+                 * impemant this using listener
+                 */
+            }
+        } catch (OMException e) {
+            throw AxisFault.makeFault(e);
+        } catch (IOException e) {
+            throw AxisFault.makeFault(e);
+        }
     }
 
     private MessageContext createIncomingMessageContext(InputStream in, AxisEngine engine) throws AxisFault {

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java?view=diff&rev=122941&p1=webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java&r1=122940&p2=webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java&r2=122941
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/clientapi/CallBack.java	Mon Dec 20 21:43:28 2004
@@ -21,4 +21,5 @@
  */
 public interface CallBack {
     void onComplete(AsyncResult result);
+    void reportError(Exception e);
 }