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:[EMAIL PROTECTED]"> Thilina Gunarathne </a> <p/>
+ *  * @author <a href="mailto:[EMAIL PROTECTED]"> 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:[EMAIL PROTECTED]"> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to