AXIS2-5315 - Removed Callback usage from Sandesha2
diff --git a/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java b/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
index 94a2a19..e860a16 100644
--- a/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
+++ b/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
@@ -42,7 +42,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.client.async.AxisCallback;
-import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
@@ -1020,15 +1019,7 @@
 					if ((msgReceiver != null) && (msgReceiver instanceof CallbackReceiver)) {
 						
 						Object callback = ((CallbackReceiver)msgReceiver).lookupCallback(context.getMessageID());
-						if (callback instanceof Callback) {
-							try {
-								((CallbackReceiver)msgReceiver).addCallback(context.getMessageID(),(Callback)callback);
-							} catch (AxisFault axisFault) {
-								throw new SandeshaException(axisFault);
-							}
-							
-						((Callback)callback).onError(fault);
-						} else if(callback instanceof AxisCallback) {
+						if(callback instanceof AxisCallback) {
 							try {
 								((CallbackReceiver)msgReceiver).addCallback(context.getMessageID(),(AxisCallback)callback);
 							} catch (AxisFault axisFault) {
diff --git a/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java b/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
index 5ddf100..27821dd 100644
--- a/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
+++ b/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
@@ -45,7 +45,7 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
@@ -1114,7 +1114,7 @@
 				MessageReceiver msgReceiver = axisOperation.getMessageReceiver();
 				Object callback = ((CallbackReceiver)msgReceiver).lookupCallback(msgCtx.getMessageID());	
 				client.setAxisService(msgCtx.getAxisService());
-				client.sendReceiveNonBlocking(msgCtx.getEnvelope().getBody().cloneOMElement().getFirstElement(), (Callback)callback);
+				client.sendReceiveNonBlocking(msgCtx.getEnvelope().getBody().cloneOMElement().getFirstElement(), (AxisCallback)callback);
 			}
 		}
 
diff --git a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_1.java b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_1.java
index 8cf521e..4eaf52a 100644
--- a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_1.java
+++ b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_1.java
@@ -34,10 +34,10 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.AsyncResult;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.client.SandeshaClient;
 import org.apache.sandesha2.client.SandeshaClientConstants;
@@ -124,17 +124,17 @@
 		
 		serviceClient.setOptions(clientOptions);
 
-		Callback callback1 = new TestCallback ("Callback 1");
+		AxisCallback callback1 = new TestCallback ("Callback 1");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo1",sequenceKey),callback1);
 		
-		Callback callback2 = new TestCallback ("Callback 2");
+		AxisCallback callback2 = new TestCallback ("Callback 2");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo2",sequenceKey),callback2);
 
 		
-		Callback callback3 = new TestCallback ("Callback 3");
+		AxisCallback callback3 = new TestCallback ("Callback 3");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo3",sequenceKey),callback3);
 		
-        while (!callback3.isComplete()) {
+        while (!((TestCallback)callback3).isComplete()) {
             Thread.sleep(1000);
         }
         
@@ -156,17 +156,18 @@
 		return echoStringElement;
 	}
 
-	class TestCallback extends Callback {
+	class TestCallback implements AxisCallback {
 
 		String name = null;
+		boolean completed = false;
 		
 		public TestCallback (String name) {
 			this.name = name;
 		}
 		
-		public void onComplete(AsyncResult result) {
+		public void onComplete(MessageContext msgCtx) {
 			//System.out.println("On Complete Called for " + text);
-			SOAPBody body = result.getResponseEnvelope().getBody();
+			SOAPBody body = msgCtx.getEnvelope().getBody();
 			
 			OMElement echoStringResponseElem = body.getFirstChildWithName(new QName (applicationNamespaceName,echoStringResponse));
 			if (echoStringResponseElem==null) { 
@@ -188,6 +189,22 @@
 			System.out.println("Error reported for test call back");
 			e.printStackTrace();
 		}
+
+		public void onComplete() {
+			completed = true;			
+		}
+
+		public void onFault(MessageContext msgCtx) {
+			onComplete(msgCtx);				
+		}
+
+		public void onMessage(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+		
+		public boolean isComplete(){
+			return completed;
+		}
 	}
 	
 	private ConfigurationContext getConfigurationContext () throws AxisFault {
diff --git a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_2.java b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_2.java
index 892126e..eaaf734 100644
--- a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_2.java
+++ b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_2.java
@@ -34,16 +34,17 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.AsyncResult;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.client.SandeshaClient;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.client.SequenceReport;
 import org.apache.sandesha2.interop.RMInteropServiceCallbackHandlerImpl;
 import org.apache.sandesha2.interop.RMInteropServiceStub;
+import org.apache.sandesha2.interop.rm1_1_clients.Scenario_2_1.TestCallback;
 import org.tempuri.EchoString;
 import org.tempuri.EchoStringRequestBodyType;
 
@@ -137,17 +138,17 @@
 		
 		serviceClient.setOptions(clientOptions);
 
-		Callback callback1 = new TestCallback ("Callback 1");
+		AxisCallback callback1 = new TestCallback ("Callback 1");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo1",sequenceKey),callback1);
 		
-		Callback callback2 = new TestCallback ("Callback 2");
+		AxisCallback callback2 = new TestCallback ("Callback 2");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo2",sequenceKey),callback2);
 
 		
-		Callback callback3 = new TestCallback ("Callback 3");
+		AxisCallback callback3 = new TestCallback ("Callback 3");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo3",sequenceKey),callback3);
 		
-        while (!callback3.isComplete()) {
+        while (!((TestCallback)callback3).isComplete()) {
             Thread.sleep(1000);
         }
         
@@ -172,17 +173,18 @@
 		return echoStringElement;
 	}
 
-	class TestCallback extends Callback {
+	class TestCallback implements AxisCallback {
 
 		String name = null;
+		boolean complete = false;
 		
 		public TestCallback (String name) {
 			this.name = name;
 		}
 		
-		public void onComplete(AsyncResult result) {
+		public void onComplete(MessageContext msgCtx) {
 			//System.out.println("On Complete Called for " + text);
-			SOAPBody body = result.getResponseEnvelope().getBody();
+			SOAPBody body =  msgCtx.getEnvelope().getBody();
 			
 			OMElement echoStringResponseElem = body.getFirstChildWithName(new QName (applicationNamespaceName,echoStringResponse));
 			if (echoStringResponseElem==null) { 
@@ -201,10 +203,25 @@
 		}
 
 		public void onError (Exception e) {
-			// TODO Auto-generated method stub
 			System.out.println("Error reported for test call back");
 			e.printStackTrace();
 		}
+
+		public void onComplete() {
+			complete = true;			
+		}
+
+		public void onFault(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+
+		public void onMessage(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+		
+		public boolean isComplete(){
+			return complete;			
+		}
 	}
 	
 	
diff --git a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_3.java b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_3.java
index 2cddcaa..845ff34 100644
--- a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_3.java
+++ b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_2_3.java
@@ -33,16 +33,17 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.AsyncResult;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.client.SandeshaClient;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.client.SequenceReport;
 import org.apache.sandesha2.interop.RMInteropServiceCallbackHandlerImpl;
 import org.apache.sandesha2.interop.RMInteropServiceStub;
+import org.apache.sandesha2.interop.rm1_1_clients.Scenario_2_1.TestCallback;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.tempuri.EchoString;
 import org.tempuri.EchoStringRequestBodyType;
@@ -139,17 +140,17 @@
 		
 		serviceClient.setOptions(clientOptions);
 
-		Callback callback1 = new TestCallback ("Callback 1");
+		AxisCallback callback1 = new TestCallback ("Callback 1");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo1",sequenceKey),callback1);
 		
-		Callback callback2 = new TestCallback ("Callback 2");
+		AxisCallback callback2 = new TestCallback ("Callback 2");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo2",sequenceKey),callback2);
 
 		
-		Callback callback3 = new TestCallback ("Callback 3");
+		AxisCallback callback3 = new TestCallback ("Callback 3");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo3",sequenceKey),callback3);
 		
-        while (!callback3.isComplete()) {
+        while (!((TestCallback)callback3).isComplete()) {
             Thread.sleep(1000);
         }
         
@@ -173,17 +174,18 @@
 		return echoStringElement;
 	}
 
-	class TestCallback extends Callback {
+	class TestCallback implements AxisCallback {
 
 		String name = null;
+		boolean complete = false;
 		
 		public TestCallback (String name) {
 			this.name = name;
 		}
 		
-		public void onComplete(AsyncResult result) {
+		public void onComplete(MessageContext msgCtx) {
 			//System.out.println("On Complete Called for " + text);
-			SOAPBody body = result.getResponseEnvelope().getBody();
+			SOAPBody body = msgCtx.getEnvelope().getBody();
 			
 			OMElement echoStringResponseElem = body.getFirstChildWithName(new QName (applicationNamespaceName,echoStringResponse));
 			if (echoStringResponseElem==null) { 
@@ -202,10 +204,26 @@
 		}
 
 		public void onError (Exception e) {
-			// TODO Auto-generated method stub
 			System.out.println("Error reported for test call back");
 			e.printStackTrace();
 		}
+
+		public void onComplete() {
+			complete = true;
+			
+		}
+
+		public void onFault(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+
+		public void onMessage(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+		
+		public boolean isComplete(){
+			return complete;			
+		}
 	}
 	
 	private ConfigurationContext getConfigurationContext () throws AxisFault {
diff --git a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_3_1.java b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_3_1.java
index 39388a4..84f11ac 100644
--- a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_3_1.java
+++ b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_3_1.java
@@ -35,15 +35,16 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.AsyncResult;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.client.SandeshaClient;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.interop.RMInteropServiceCallbackHandlerImpl;
 import org.apache.sandesha2.interop.RMInteropServiceStub;
+import org.apache.sandesha2.interop.rm1_1_clients.Scenario_2_1.TestCallback;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.tempuri.EchoString;
 import org.tempuri.EchoStringRequestBodyType;
@@ -124,16 +125,16 @@
 		
 		serviceClient.setOptions(clientOptions);
 
-		Callback callback1 = new TestCallback ("Callback 1");
+		AxisCallback callback1 = new TestCallback ("Callback 1");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo1",sequenceKey),callback1);
 		
-		Callback callback2 = new TestCallback ("Callback 2");
+		AxisCallback callback2 = new TestCallback ("Callback 2");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo2",sequenceKey),callback2);
 		
-		Callback callback3 = new TestCallback ("Callback 3");
+		AxisCallback callback3 = new TestCallback ("Callback 3");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo3",sequenceKey),callback3);
 		
-        while (!callback3.isComplete()) {
+        while (!((TestCallback)callback3).isComplete()) {
             Thread.sleep(1000);
         }
         
@@ -160,17 +161,18 @@
 		return echoStringElement;
 	}
 
-	class TestCallback extends Callback {
+	class TestCallback implements AxisCallback {
 
 		String name = null;
+		boolean complete = false;
 		
 		public TestCallback (String name) {
 			this.name = name;
 		}
 		
-		public void onComplete(AsyncResult result) {
+		public void onComplete(MessageContext msgCtx) {
 			//System.out.println("On Complete Called for " + text);
-			SOAPBody body = result.getResponseEnvelope().getBody();
+			SOAPBody body = msgCtx.getEnvelope().getBody();
 			
 			OMElement echoStringResponseElem = body.getFirstChildWithName(new QName (applicationNamespaceName,echoStringResponse));
 			if (echoStringResponseElem==null) { 
@@ -189,10 +191,25 @@
 		}
 
 		public void onError (Exception e) {
-			// TODO Auto-generated method stub
 			System.out.println("Error reported for test call back");
 			e.printStackTrace();
 		}
+
+		public void onComplete() {
+			complete = true;			
+		}
+
+		public void onFault(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+
+		public void onMessage(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+		
+		public boolean isComplete(){
+			return complete;			
+		}
 	}
 	
 	private ConfigurationContext getConfigurationContext () throws AxisFault {
diff --git a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_4_2.java b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_4_2.java
index 85caf55..c5a73d3 100644
--- a/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_4_2.java
+++ b/modules/interop/src/main/java/org/apache/sandesha2/interop/rm1_1_clients/Scenario_4_2.java
@@ -32,10 +32,10 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.client.async.AsyncResult;
-import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AxisCallback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.rampart.RampartMessageData;
@@ -44,6 +44,7 @@
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.interop.RMInteropServiceCallbackHandlerImpl;
 import org.apache.sandesha2.interop.RMInteropServiceStub;
+import org.apache.sandesha2.interop.rm1_1_clients.Scenario_2_1.TestCallback;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.tempuri.EchoString;
 import org.tempuri.EchoStringRequestBodyType;
@@ -128,16 +129,16 @@
 		
 		serviceClient.setOptions(clientOptions);
 
-		Callback callback1 = new TestCallback ("Callback 1");
+		AxisCallback callback1 = new TestCallback ("Callback 1");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo1",sequenceKey),callback1);
 		
-		Callback callback2 = new TestCallback ("Callback 2");
+		AxisCallback callback2 = new TestCallback ("Callback 2");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo2",sequenceKey),callback2);
 		
-		Callback callback3 = new TestCallback ("Callback 3");
+		AxisCallback callback3 = new TestCallback ("Callback 3");
 		serviceClient.sendReceiveNonBlocking(getEchoOMBlock("echo3",sequenceKey),callback3);
 		
-        while (!callback3.isComplete()) {
+        while (!((TestCallback)callback3).isComplete()) {
             Thread.sleep(1000);
         }
         
@@ -164,17 +165,18 @@
 		return echoStringElement;
 	}
 
-	class TestCallback extends Callback {
+	class TestCallback implements AxisCallback {
 
 		String name = null;
+		boolean complete = false;
 		
 		public TestCallback (String name) {
 			this.name = name;
 		}
 		
-		public void onComplete(AsyncResult result) {
+		public void onComplete(MessageContext msgCtx) {
 			//System.out.println("On Complete Called for " + text);
-			SOAPBody body = result.getResponseEnvelope().getBody();
+			SOAPBody body = msgCtx.getEnvelope().getBody();
 			
 			OMElement echoStringResponseElem = body.getFirstChildWithName(new QName (applicationNamespaceName,echoStringResponse));
 			if (echoStringResponseElem==null) { 
@@ -193,10 +195,25 @@
 		}
 
 		public void onError (Exception e) {
-			// TODO Auto-generated method stub
 			System.out.println("Error reported for test call back");
 			e.printStackTrace();
 		}
+
+		public void onComplete() {
+			complete = true;			
+		}
+
+		public void onFault(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+
+		public void onMessage(MessageContext msgCtx) {
+			onComplete(msgCtx);			
+		}
+		
+		public boolean isComplete(){
+			return complete;			
+		}
 	}
 	
 	private ConfigurationContext getConfigurationContext () throws AxisFault {