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);
}