You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kandula-dev@ws.apache.org by th...@apache.org on 2006/03/04 13:07:51 UTC

svn commit: r383098 - in /webservices/kandula/trunk/java: src/org/apache/kandula/context/ src/org/apache/kandula/context/impl/ src/org/apache/kandula/coordinator/at/ src/org/apache/kandula/participant/ src/org/apache/kandula/utility/ src/org/apache/kan...

Author: thilina
Date: Sat Mar  4 04:07:50 2006
New Revision: 383098

URL: http://svn.apache.org/viewcvs?rev=383098&view=rev
Log:
Adding participant commited message support
A new callback mechanism based on reflection methods to coleect votes

Modified:
    webservices/kandula/trunk/java/src/org/apache/kandula/context/AbstractContext.java
    webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java
    webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATCoordinator.java
    webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATParticipantInformation.java
    webservices/kandula/trunk/java/src/org/apache/kandula/participant/KandulaResource.java
    webservices/kandula/trunk/java/src/org/apache/kandula/participant/ParticipantTransactionCoordinator.java
    webservices/kandula/trunk/java/src/org/apache/kandula/utility/KandulaListener.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wsat/AbstractATNotifierStub.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/CoordinatorPortTypeRawXMLSkeleton.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/ParticipantPortTypeRawXMLSkeleton.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationCoordinatorPortTypeRawXMLStub.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationPortTypeRawXMLSkeleton.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationCoordinatorPortTypeRawXMLStub.java
    webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationRequesterPortTypeRawXMLSkeleton.java
    webservices/kandula/trunk/java/test/org/apache/kandula/integration/CreateCoordinationContextTest.java
    webservices/kandula/trunk/java/test/org/apache/kandula/integration/DummyResource.java
    webservices/kandula/trunk/java/test/org/apache/kandula/integration/KandulaDemoServiceStub.java

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/context/AbstractContext.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/context/AbstractContext.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/context/AbstractContext.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/context/AbstractContext.java Sat Mar  4 04:07:50 2006
@@ -107,4 +107,5 @@
 	}
 
 	public abstract String getCoordinationType();
+
 }

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java Sat Mar  4 04:07:50 2006
@@ -16,6 +16,7 @@
  */
 package org.apache.kandula.context.impl;
 
+import java.lang.reflect.Method;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -52,6 +53,8 @@
 	private boolean subDurableRegistered = false;
 
 	private EndpointReference parentEPR;
+	
+	private Method callBackMethod=null;
 
 	/**
 	 * Used when creating new activities
@@ -116,6 +119,19 @@
 		}
 	}
 
+	public void removeParticipant(String enlistmentID)
+	{
+		//TODO: what to do if the participant is not found
+		if (durableParticipantsTable.containsKey(enlistmentID))
+		{
+			durableParticipantsTable.remove(enlistmentID);
+		}else if(volatileParticipantsTable.containsKey(enlistmentID))
+		{
+			volatileParticipantsTable.remove(enlistmentID);
+		}
+	}
+	
+
 	public void addVolatileParticipant(EndpointReference participantEPR,
 			String enlistmentID) throws AbstractKandulaException {
 		if (volatileParticipantsTable.contains(participantEPR))
@@ -167,19 +183,48 @@
 		return completionParticipant;
 	}
 
-	public void countPreparing() {
+	public synchronized void countPreparing() {
 		preparingParticipantsCount++;
 
 	}
 
-	public void decrementPreparing() {
+	public synchronized void decrementPreparing() {
 		preparingParticipantsCount--;
 	}
 
-	public boolean hasMorePreparing() {
+	public synchronized boolean hasMorePreparing() {
 		return (preparingParticipantsCount > 0);
 	}
 
+	public int getVolatileParticipantCount()
+	{
+		return volatileParticipantsTable.size();
+	}
+	
+	public int getDurableParticipantCount()
+	{
+		return durableParticipantsTable.size();
+	}
+	
+
+	
+	
+	public String getCoordinationType() {
+		return Constants.WS_AT;
+	}
+
+	/**
+	 * @return Returns the callBackMethod.
+	 */
+	public Method getCallBackMethod() {
+		return callBackMethod;
+	}
+	/**
+	 * @param callBackMethod The callBackMethod to set.
+	 */
+	public void setCallBackMethod(Method callBackMethod) {
+		this.callBackMethod = callBackMethod;
+	}
 	public boolean getSubVolatileRegistered() {
 
 		return subVolatileRegistered;
@@ -196,17 +241,4 @@
 	public void setSubDurableRegistered(boolean value) {
 		subDurableRegistered = value;
 	}
-
-	//    public void prepared(Participant participant)
-	//    {
-	//        if (participant.getStatus()==Status.ParticipantStatus.STATUS_ABORTED)
-	//        {
-	//            //throw new
-	//        }
-	//    }
-
-	public String getCoordinationType() {
-		return Constants.WS_AT;
-	}
-
 }

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATCoordinator.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATCoordinator.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATCoordinator.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATCoordinator.java Sat Mar  4 04:07:50 2006
@@ -16,6 +16,7 @@
  */
 package org.apache.kandula.coordinator.at;
 
+import java.lang.reflect.Method;
 import java.util.Iterator;
 
 import org.apache.axis2.addressing.EndpointReference;
@@ -27,6 +28,7 @@
 import org.apache.kandula.coordinator.Registerable;
 import org.apache.kandula.faults.AbstractKandulaException;
 import org.apache.kandula.faults.InvalidStateException;
+import org.apache.kandula.faults.KandulaGeneralException;
 import org.apache.kandula.participant.Vote;
 import org.apache.kandula.storage.StorageFactory;
 import org.apache.kandula.storage.Store;
@@ -112,7 +114,7 @@
 		case CoordinatorStatus.STATUS_PREPARING_DURABLE:
 		case CoordinatorStatus.STATUS_PREPARING_VOLATILE:
 		case CoordinatorStatus.STATUS_PREPARED_SUCCESS:
-			//If prepared success Ignore this message
+			// If prepared success Ignore this message
 			atContext.unlock();
 			break;
 		case CoordinatorStatus.STATUS_COMMITTING:
@@ -124,23 +126,13 @@
 		case Status.CoordinatorStatus.STATUS_ACTIVE:
 			atContext.setStatus(Status.CoordinatorStatus.STATUS_PREPARING);
 			atContext.unlock();
-			volatilePrepare(atContext);
-			// wait till all the Volatile prepare()'s are done
-			while (atContext.hasMorePreparing()) {
-				if (atContext.getStatus() == Status.CoordinatorStatus.STATUS_ABORTING) {
-					return;
-				}
-			}
-			durablePrepare(atContext);
-			//wait till all the Durable prepare()'s are done
-			while (atContext.hasMorePreparing()) {
-				if (atContext.getStatus() == Status.CoordinatorStatus.STATUS_ABORTING) {
-					return;
-				}
-			}
-			if (!(atContext.getStatus() == Status.CoordinatorStatus.STATUS_ABORTING)) {
-				commitActivity(atContext);
+			if (atContext.getVolatileParticipantCount() > 0) {
+				volatilePrepare(atContext);
+
+			} else if (atContext.getDurableParticipantCount() > 0) {
+				durablePrepare(atContext);
 			}
+
 			break;
 		default:
 			atContext.unlock();
@@ -173,7 +165,7 @@
 		case CoordinatorStatus.STATUS_PREPARING_DURABLE:
 		case CoordinatorStatus.STATUS_PREPARING_VOLATILE:
 		case CoordinatorStatus.STATUS_PREPARED_SUCCESS:
-			//If prepared success Ignoring
+			// If prepared success Ignoring
 			atContext.unlock();
 			break;
 		case CoordinatorStatus.STATUS_COMMITTING:
@@ -193,6 +185,37 @@
 		}
 	}
 
+	public void abortedOperation(String activityID, String enlistmentID) throws AbstractKandulaException {
+		ATActivityContext atContext = (ATActivityContext) store.get(activityID);
+		synchronized (atContext) {
+			atContext.lock();
+			switch (atContext.getStatus()) {
+			case CoordinatorStatus.STATUS_NONE:
+				atContext.unlock();
+				break;
+			case CoordinatorStatus.STATUS_ABORTING:
+				atContext.unlock();
+				atContext.removeParticipant(enlistmentID);
+				break;
+			case CoordinatorStatus.STATUS_PREPARING_DURABLE:
+			case CoordinatorStatus.STATUS_PREPARING_VOLATILE:
+			case Status.CoordinatorStatus.STATUS_ACTIVE:
+				atContext.unlock();
+				atContext.removeParticipant(enlistmentID);
+				abortActivity(atContext);
+				break;
+			case CoordinatorStatus.STATUS_PREPARED_SUCCESS:
+			case CoordinatorStatus.STATUS_COMMITTING:
+				// Invalid state
+				atContext.unlock();
+				break;
+			default:
+				atContext.unlock();
+				break;
+			}
+		}
+	}
+
 	/**
 	 * @param context
 	 * @throws Exception
@@ -208,33 +231,42 @@
 		ATActivityContext atContext = (ATActivityContext) context;
 		Iterator volatilePartipantIterator = atContext
 				.getRegistered2PCParticipants(Constants.WS_AT_VOLATILE2PC);
-		if (volatilePartipantIterator.hasNext()) {
-			atContext.lock();
-			atContext
-					.setStatus(Status.CoordinatorStatus.STATUS_PREPARING_VOLATILE);
-			atContext.unlock();
-			while (volatilePartipantIterator.hasNext()) {
-				atContext.countPreparing();
-				stub.prepareOperation(((ATParticipantInformation) volatilePartipantIterator
-						.next()).getEpr());
+		synchronized (atContext) {
+			if (volatilePartipantIterator.hasNext()) {
+				atContext.lock();
+				atContext
+						.setStatus(Status.CoordinatorStatus.STATUS_PREPARING_VOLATILE);
+				atContext.unlock();
+				while (volatilePartipantIterator.hasNext()) {
+					atContext.countPreparing();
+					stub
+							.prepareOperation(((ATParticipantInformation) volatilePartipantIterator
+									.next()).getEpr());
+				}
+			}
+			if (atContext.getDurableParticipantCount() > 0) {
+				try {
+					Method method = ATCoordinator.class.getMethod(
+							"durablePrepare",
+							new Class[] { AbstractContext.class });
+					atContext.setCallBackMethod(method);
+				} catch (Exception e) {
+					throw new KandulaGeneralException(
+							"Internal Kandula Server Error ", e);
+				}
+			} else {
+				try {
+					Method method = ATCoordinator.class.getMethod(
+							"commitActivity",
+							new Class[] { AbstractContext.class });
+					atContext.setCallBackMethod(method);
+				} catch (Exception e) {
+					throw new KandulaGeneralException(
+							"Internal Kandula Server Error ", e);
+				}
 			}
 		}
-	}
-
-	public void countVote(String activityID, Vote vote, String enlistmentID)
-			throws AbstractKandulaException {
-		ATActivityContext context = (ATActivityContext) store.get(activityID);
-		ATParticipantInformation participant = context.getParticipant(enlistmentID);
 
-		if (Vote.PREPARED.equals(vote)) {
-			participant.setStatus(Status.CoordinatorStatus.STATUS_PREPARED);
-		} else if (Vote.READ_ONLY.equals(vote)) {
-			participant.setStatus(Status.CoordinatorStatus.STATUS_READ_ONLY);
-		} else if (Vote.ABORT.equals(vote)) {
-			participant.setStatus(Status.ParticipantStatus.STATUS_ABORTED);
-			abortActivity(context);
-		}
-		context.decrementPreparing();
 	}
 
 	/**
@@ -252,17 +284,31 @@
 		ATActivityContext atContext = (ATActivityContext) context;
 		Iterator durablePartipantIterator = atContext
 				.getRegistered2PCParticipants(Constants.WS_AT_DURABLE2PC);
-		if (durablePartipantIterator.hasNext()) {
-			atContext.lock();
-			atContext
-					.setStatus(Status.CoordinatorStatus.STATUS_PREPARING_DURABLE);
-			atContext.unlock();
-			while (durablePartipantIterator.hasNext()) {
-				atContext.countPreparing();
-				stub.prepareOperation(((ATParticipantInformation) durablePartipantIterator
-						.next()).getEpr());
+
+		synchronized (atContext) {
+			if (durablePartipantIterator.hasNext()) {
+				atContext.lock();
+				atContext
+						.setStatus(Status.CoordinatorStatus.STATUS_PREPARING_DURABLE);
+				atContext.unlock();
+				while (durablePartipantIterator.hasNext()) {
+					atContext.countPreparing();
+					stub
+							.prepareOperation(((ATParticipantInformation) durablePartipantIterator
+									.next()).getEpr());
+				}
+			}
+
+			try {
+				Method method = ATCoordinator.class.getMethod("commitActivity",
+						new Class[] { AbstractContext.class });
+				atContext.setCallBackMethod(method);
+			} catch (Exception e) {
+				throw new KandulaGeneralException(
+						"Internal Kandula Server Error ", e);
 			}
 		}
+
 	}
 
 	/**
@@ -272,7 +318,7 @@
 	 *      registered for the Transaction Must check whether all the
 	 *      participants have replied to the prepare()
 	 */
-	private void commitActivity(AbstractContext context)
+	public void commitActivity(AbstractContext context)
 			throws AbstractKandulaException {
 		// check whether all participants have prepared
 		ParticipantPortTypeRawXMLStub stub = new ParticipantPortTypeRawXMLStub();
@@ -283,7 +329,8 @@
 		atContext.unlock();
 		Iterator participants = atContext.getAll2PCParticipants();
 		while (participants.hasNext()) {
-			ATParticipantInformation participant = (ATParticipantInformation) participants.next();
+			ATParticipantInformation participant = (ATParticipantInformation) participants
+					.next();
 			if (!(Status.CoordinatorStatus.STATUS_READ_ONLY == participant
 					.getStatus())) {
 				stub.commitOperation(participant.getEpr());
@@ -311,13 +358,64 @@
 		Iterator participants = atContext.getAll2PCParticipants();
 
 		while (participants.hasNext()) {
-			stub
-					.rollbackOperation(((ATParticipantInformation) participants.next())
-							.getEpr());
+			stub.rollbackOperation(((ATParticipantInformation) participants
+					.next()).getEpr());
 		}
 		CompletionInitiatorPortTypeRawXMLStub completionStub = new CompletionInitiatorPortTypeRawXMLStub(
 				atContext.getCompletionParticipant());
 		completionStub.abortedOperation();
+
+	}
+
+	/**
+	 * 
+	 * @param activityID
+	 * @param vote
+	 * @param enlistmentID
+	 * @throws AbstractKandulaException
+	 */
+	// TODO seperate these TWO and check states for each case
+	public void countVote(String activityID, Vote vote, String enlistmentID)
+			throws AbstractKandulaException {
+		ATActivityContext context = (ATActivityContext) store.get(activityID);
+		ATParticipantInformation participant = context
+				.getParticipant(enlistmentID);
+
+		if (Vote.PREPARED.equals(vote)) {
+			participant.setStatus(Status.CoordinatorStatus.STATUS_PREPARED);
+		} else if (Vote.READ_ONLY.equals(vote)) {
+			participant.setStatus(Status.CoordinatorStatus.STATUS_READ_ONLY);
+		}
+		/*
+		 * There can be a two invocations of the callback methode due to race
+		 * conditions at decrement preparing and count preparing
+		 */
+		synchronized (context) {
+			context.decrementPreparing();
+			if (!context.hasMorePreparing()) {
+				context.lock();
+				if (!(context.getStatus() == Status.CoordinatorStatus.STATUS_ABORTING)) {
+					context.unlock();
+					Method method = context.getCallBackMethod();
+					try {
+						method.invoke(this, new Object[] { context });
+
+					} catch (Exception e) {
+						throw new KandulaGeneralException(
+								"Internal Server Error", e);
+					}
+				} else {
+					context.unlock();
+				}
+			}
+		}
+
+	}
+
+	public void countParticipantOutcome(String activityID, String enlistmentID)
+			throws AbstractKandulaException {
+		ATActivityContext context = (ATActivityContext) store.get(activityID);
+		context.removeParticipant(enlistmentID);
 	}
 
 }

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATParticipantInformation.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATParticipantInformation.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATParticipantInformation.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/at/ATParticipantInformation.java Sat Mar  4 04:07:50 2006
@@ -17,13 +17,15 @@
 package org.apache.kandula.coordinator.at;
 
 import org.apache.axis2.addressing.EndpointReference;
-
 /**
- * @author <a href="mailto:thilina@opensource.lk"> Thilina Gunarathne </a> <p/>
+ *  * @author <a href="mailto:thilina@opensource.lk"> Thilina Gunarathne </a>
+ */
+/**
+ *  <p/>
  *         Used to store the details about the participant & to store the
  *         runtime status of Participants in the coordinator.
  */
-//TODO see whether we can avoid this class
+
 public class ATParticipantInformation {
 
 	private EndpointReference epr;

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/participant/KandulaResource.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/participant/KandulaResource.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/participant/KandulaResource.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/participant/KandulaResource.java Sat Mar  4 04:07:50 2006
@@ -20,7 +20,7 @@
  * @author <a href="mailto:thilina@opensource.lk"> Thilina Gunarathne </a>
  */
 public interface KandulaResource {
-	public void commit();
+	public boolean commit();
 
 	public void rollback();
 

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/participant/ParticipantTransactionCoordinator.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/participant/ParticipantTransactionCoordinator.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/participant/ParticipantTransactionCoordinator.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/participant/ParticipantTransactionCoordinator.java Sat Mar  4 04:07:50 2006
@@ -73,9 +73,18 @@
 		}
 	}
 
-	public void commit(AbstractContext context) throws InvalidStateException {
+	public void commit(AbstractContext context) throws AbstractKandulaException {
 		ATParticipantContext atContext = (ATParticipantContext) context;
-		atContext.getResource().commit();
+		boolean outcome = atContext.getResource().commit();
+		CoordinatorPortTypeRawXMLStub stub = new CoordinatorPortTypeRawXMLStub(atContext
+				.getCoordinationEPR());
+		if (outcome)
+		{
+			stub.committedOperation();
+		}else
+		{
+			stub.abortedOperation();
+		}
 		//        ATParticipantContext atContext = (ATParticipantContext) context;
 		//        atContext.lock();
 		//        switch (context.getStatus()) {

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/utility/KandulaListener.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/utility/KandulaListener.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/utility/KandulaListener.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/utility/KandulaListener.java Sat Mar  4 04:07:50 2006
@@ -23,6 +23,7 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
@@ -47,7 +48,7 @@
 	private KandulaListener() throws IOException {
 		KandulaConfiguration configuration = KandulaConfiguration
 				.getInstance();
-		responseConfigurationContext = new org.apache.axis2.context.ConfigurationContextFactory()
+		responseConfigurationContext = ConfigurationContextFactory
 				.createConfigurationContextFromFileSystem(
 						configuration.getKandulaListenerRepository(),
 						configuration.getKandulaListenerAxis2Xml());
@@ -94,7 +95,6 @@
 	 *             frequent case in reponses
 	 */
 	public void addService(AxisService service) throws AxisFault {
-		AxisOperation responseOperationDesc;
 
 		service.setClassLoader(Thread.currentThread().getContextClassLoader());
 		HashMap allServices = responseConfigurationContext

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wsat/AbstractATNotifierStub.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wsat/AbstractATNotifierStub.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wsat/AbstractATNotifierStub.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wsat/AbstractATNotifierStub.java Sat Mar  4 04:07:50 2006
@@ -23,6 +23,7 @@
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -58,8 +59,7 @@
 		//creating the configuration
 		this.service = service;
 		try {
-			configurationContext = new org.apache.axis2.context.ConfigurationContextFactory()
-					.createConfigurationContextFromFileSystem(axis2Home,
+			configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(axis2Home,
 							axis2Xml);
 			configurationContext.getAxisConfiguration().addService(service);
 		} catch (DeploymentException e) {
@@ -93,7 +93,7 @@
 		try {
 			Options options = new Options();
 			messageContext = new MessageContext();
-			OperationClient client = operations[opIndex].createClient(
+			final OperationClient client = operations[opIndex].createClient(
 					serviceContext, options);
 
 			SOAPFactory factory = OMAbstractFactory
@@ -115,7 +115,21 @@
 			//    options.setTranportOut(org.apache.axis2.Constants.TRANSPORT_HTTP);
 			//     System.out.println(operations[opIndex]);
 			client.addMessageContext(messageContext);
-			client.execute(false);
+			/*
+			 * hacking till we get fire and forget corretly in Axis2
+			 */
+			Thread thread = new Thread(new Runnable() {
+				public void run() {
+					try {
+						client.execute(false);
+					} catch (AxisFault e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			
 		} catch (AxisFault e) {
 			throw new KandulaGeneralException(e);
 		}

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/CoordinatorPortTypeRawXMLSkeleton.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/CoordinatorPortTypeRawXMLSkeleton.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/CoordinatorPortTypeRawXMLSkeleton.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/CoordinatorPortTypeRawXMLSkeleton.java Sat Mar  4 04:07:50 2006
@@ -19,7 +19,6 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.kandula.Constants;
-import org.apache.kandula.context.AbstractContext;
 import org.apache.kandula.coordinator.at.ATCoordinator;
 import org.apache.kandula.faults.AbstractKandulaException;
 import org.apache.kandula.participant.Vote;
@@ -75,7 +74,7 @@
 				Constants.ENLISTMENT_ID_PARAMETER).getText();
 		ATCoordinator coordinator = new ATCoordinator();
 		try {
-			coordinator.countVote(activityId, Vote.ABORT, enlistmentId);
+			coordinator.abortedOperation(activityId, enlistmentId);
 		} catch (AbstractKandulaException e) {
 			AxisFault fault = new AxisFault(e);
 			fault.setFaultCode(e.getFaultCode());
@@ -116,8 +115,19 @@
 			throws AxisFault {
 		StorageFactory.getInstance().setConfigurationContext(
 				msgContext.getServiceContext().getConfigurationContext());
-		AbstractContext context;
-		System.out.println("Visited Committed operation");
+		OMElement header = msgContext.getEnvelope().getHeader();
+		String activityId = header.getFirstChildWithName(
+				Constants.TRANSACTION_ID_PARAMETER).getText();
+		String enlistmentId = header.getFirstChildWithName(
+				Constants.ENLISTMENT_ID_PARAMETER).getText();
+		ATCoordinator coordinator = new ATCoordinator();
+		try {
+			coordinator.countParticipantOutcome(activityId,  enlistmentId);
+		} catch (AbstractKandulaException e) {
+			AxisFault fault = new AxisFault(e);
+			fault.setFaultCode(e.getFaultCode());
+			throw fault;
+		}
 		return null;
 	}
 
@@ -128,7 +138,6 @@
 	public OMElement replayOperation(OMElement requestElement) throws AxisFault {
 		StorageFactory.getInstance().setConfigurationContext(
 				msgContext.getServiceContext().getConfigurationContext());
-		AbstractContext context;
 		System.out.println("Visited Replay operation");
 		return null;
 	}

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/ParticipantPortTypeRawXMLSkeleton.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/ParticipantPortTypeRawXMLSkeleton.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/ParticipantPortTypeRawXMLSkeleton.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wsat/twopc/ParticipantPortTypeRawXMLSkeleton.java Sat Mar  4 04:07:50 2006
@@ -65,9 +65,9 @@
 				Constants.REQUESTER_ID_PARAMETER).getText();
 		Store store = StorageFactory.getInstance().getStore();
 		AbstractContext context = (AbstractContext) store.get(requesterID);
-		ParticipantTransactionCoordinator txManager = new ParticipantTransactionCoordinator();
+		ParticipantTransactionCoordinator participantTxManager = new ParticipantTransactionCoordinator();
 		try {
-			txManager.commit(context);
+			participantTxManager.commit(context);
 		} catch (AbstractKandulaException e) {
 			AxisFault fault = new AxisFault(e);
 			fault.setFaultCode(e.getFaultCode());

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationCoordinatorPortTypeRawXMLStub.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationCoordinatorPortTypeRawXMLStub.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationCoordinatorPortTypeRawXMLStub.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationCoordinatorPortTypeRawXMLStub.java Sat Mar  4 04:07:50 2006
@@ -26,6 +26,7 @@
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -76,7 +77,7 @@
 		this.toEPR = targetEndpoint;
 		service = new AxisService("ActivationCoordinatorPortType");
 		try {
-			configurationContext = new org.apache.axis2.context.ConfigurationContextFactory()
+			configurationContext = ConfigurationContextFactory
 					.createConfigurationContextFromFileSystem(axis2Home,
 							axis2Xml);
 			configurationContext.getAxisConfiguration().addService(service);

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationPortTypeRawXMLSkeleton.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationPortTypeRawXMLSkeleton.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationPortTypeRawXMLSkeleton.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/ActivationPortTypeRawXMLSkeleton.java Sat Mar  4 04:07:50 2006
@@ -42,8 +42,6 @@
 	}
 
 	/**
-	 * Auto generated method signature
-	 * 
 	 * @param requestElement
 	 * @throws AbstractKandulaException
 	 */

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationCoordinatorPortTypeRawXMLStub.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationCoordinatorPortTypeRawXMLStub.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationCoordinatorPortTypeRawXMLStub.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationCoordinatorPortTypeRawXMLStub.java Sat Mar  4 04:07:50 2006
@@ -26,6 +26,7 @@
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -77,7 +78,7 @@
 		this.toEPR = targetEndpoint;
 		service = new AxisService("RegistrationCoordinatorPortType");
 		try {
-			configurationContext = new org.apache.axis2.context.ConfigurationContextFactory()
+			configurationContext =ConfigurationContextFactory
 					.createConfigurationContextFromFileSystem(axis2Home,
 							axis2Xml);
 			configurationContext.getAxisConfiguration().addService(service);

Modified: webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationRequesterPortTypeRawXMLSkeleton.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationRequesterPortTypeRawXMLSkeleton.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationRequesterPortTypeRawXMLSkeleton.java (original)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/wscoor/RegistrationRequesterPortTypeRawXMLSkeleton.java Sat Mar  4 04:07:50 2006
@@ -17,7 +17,6 @@
 package org.apache.kandula.wscoor;
 
 import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.kandula.Constants;
 import org.apache.kandula.context.AbstractContext;
@@ -46,9 +45,6 @@
 					Constants.REQUESTER_ID_PARAMETER).getText();
 			EndpointReference coordinatorService = EndpointReferenceFactory
 					.endpointFromOM(response.getFirstElement());
-			// TODO: remove this
-			ConfigurationContext configurationContext = StorageFactory
-					.getInstance().getConfigurationContext();
 			AbstractContext context;
 
 			context = (AbstractContext) StorageFactory.getInstance()

Modified: webservices/kandula/trunk/java/test/org/apache/kandula/integration/CreateCoordinationContextTest.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/test/org/apache/kandula/integration/CreateCoordinationContextTest.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/test/org/apache/kandula/integration/CreateCoordinationContextTest.java (original)
+++ webservices/kandula/trunk/java/test/org/apache/kandula/integration/CreateCoordinationContextTest.java Sat Mar  4 04:07:50 2006
@@ -38,8 +38,6 @@
 
 	private SimpleHTTPServer server;
 
-	private boolean finish = false;
-
 	public CreateCoordinationContextTest() {
 		super(CreateCoordinationContextTest.class.getName());
 	}
@@ -49,14 +47,13 @@
 	}
 
 	protected void setUp() throws Exception {
-		ConfigurationContextFactory erfac = new ConfigurationContextFactory();
-		File file = new File(repository);
+				File file = new File(repository);
 		File configFile = new File(repository + "/axis2.xml");
 		if (!file.exists()) {
 			throw new Exception("repository directory "
 					+ file.getAbsolutePath() + " does not exists");
 		}
-		ConfigurationContext er = erfac
+		ConfigurationContext er = ConfigurationContextFactory
 				.createConfigurationContextFromFileSystem(file
 						.getAbsolutePath(), configFile.getAbsolutePath());
 
@@ -92,7 +89,7 @@
 		KandulaDemoServiceStub stub = new KandulaDemoServiceStub(
 				"target/initiator-repository",
 				new EndpointReference(
-						"http://localhost:8081/axis2/services/KandulaDemoService"));
+						"http://127.0.0.1:8085/Transactions_Service_Indigo/TransactionalService.svc"));
 		stub.creditOperation();
 		// try{
 		tm.commit();

Modified: webservices/kandula/trunk/java/test/org/apache/kandula/integration/DummyResource.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/test/org/apache/kandula/integration/DummyResource.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/test/org/apache/kandula/integration/DummyResource.java (original)
+++ webservices/kandula/trunk/java/test/org/apache/kandula/integration/DummyResource.java Sat Mar  4 04:07:50 2006
@@ -33,9 +33,9 @@
 		// TODO Auto-generated constructor stub
 	}
 
-	public void commit() {
+	public boolean commit() {
 		System.out.println("Commited");
-
+		return true;
 	}
 
 	public void rollback() {

Modified: webservices/kandula/trunk/java/test/org/apache/kandula/integration/KandulaDemoServiceStub.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/test/org/apache/kandula/integration/KandulaDemoServiceStub.java?rev=383098&r1=383097&r2=383098&view=diff
==============================================================================
--- webservices/kandula/trunk/java/test/org/apache/kandula/integration/KandulaDemoServiceStub.java (original)
+++ webservices/kandula/trunk/java/test/org/apache/kandula/integration/KandulaDemoServiceStub.java Sat Mar  4 04:07:50 2006
@@ -23,6 +23,7 @@
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -74,14 +75,14 @@
 			EndpointReference targetEndpoint) throws java.lang.Exception {
 		this.toEPR = targetEndpoint;
 		// creating the configuration
-		configurationContext = new org.apache.axis2.context.ConfigurationContextFactory()
+		configurationContext = ConfigurationContextFactory
 				.createConfigurationContextFromFileSystem(axis2Home, axis2Home
 						+ "/axis2.xml");
 		// configurationContext.getAxisConfiguration().engageModule(new
 		// QName("addressing"));
 		configurationContext.getAxisConfiguration().addService(_service);
 		ServiceGroupContext sgc = new ServiceGroupContext(
-				this.configurationContext, (AxisServiceGroup) this._service
+				this.configurationContext, (AxisServiceGroup)_service
 						.getParent());
 		this.serviceContext = new ServiceContext(_service, sgc);
 
@@ -89,7 +90,6 @@
 
 	public void creditOperation() throws IOException {
 
-		EndpointReference replyToEpr;
 		Options options = new Options();
 		MessageContext messageContext = new MessageContext();
 		messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
@@ -99,8 +99,9 @@
 
 		// _service.engageModule("addressing");
 
-		options.setAction("creditOperation");
+		options.setAction("http://tempuri.org/ITransactionalService/Commit");
 		options.setTo(this.toEPR);
+		
 		// messageSender
 		// .setSenderTransport(org.apache.axis2.Constants.TRANSPORT_HTTP);
 		OperationClient client = operations[0].createClient(serviceContext,



---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org