Author: thilina
Date: Fri Feb 10 01:11:54 2006
New Revision: 376602

URL: http://svn.apache.org/viewcvs?rev=376602&view=rev
Log:
Rearranging packages
Introducing seperate KandulaConfiguration.java to handle configuration
EndpointReferenceFactory.java cleaned

Added:
    
webservices/kandula/trunk/java/src/org/apache/kandula/context/CoordinationContext.java
    webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/
    
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java
    
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATParticipantContext.java
    
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/SimpleCoordinationContext.java
Removed:
    webservices/kandula/trunk/java/src/org/apache/kandula/context/at/
    webservices/kandula/trunk/java/src/org/apache/kandula/context/coordination/

Added: 
webservices/kandula/trunk/java/src/org/apache/kandula/context/CoordinationContext.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/context/CoordinationContext.java?rev=376602&view=auto
==============================================================================
--- 
webservices/kandula/trunk/java/src/org/apache/kandula/context/CoordinationContext.java
 (added)
+++ 
webservices/kandula/trunk/java/src/org/apache/kandula/context/CoordinationContext.java
 Fri Feb 10 01:11:54 2006
@@ -0,0 +1,65 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.kandula.context;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.kandula.context.impl.SimpleCoordinationContext;
+import org.apache.ws.commons.om.OMElement;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]"> Thilina Gunarathne </a>
+ */
+public interface CoordinationContext {
+       public abstract String getActivityID();
+
+       public abstract String getCoordinationType();
+
+       public abstract EndpointReference getRegistrationService();
+
+       public abstract long getExpires();
+
+       public abstract void setActivityID(String value);
+
+       public abstract void setCoordinationType(String value);
+
+       public abstract void setRegistrationService(EndpointReference value);
+
+       public abstract void setExpires(long value);
+
+       public abstract OMElement toOM();
+
+       public abstract Object getCoordinationContextType();
+
+       public static final class Factory {
+               public static CoordinationContext newContext(String activityId,
+                               String coordinationType, EndpointReference epr) 
{
+                       return new SimpleCoordinationContext(activityId, 
coordinationType,
+                                       epr);
+               }
+
+               public static CoordinationContext newContext(OMElement 
contextElement) {
+                       return new SimpleCoordinationContext(contextElement);
+               }
+
+               //        public static CoordinationContext newInstance(Object 
contextType) {
+               //            return new 
XmlBeansTypeCoordinationContext(contextType);
+               //        }
+
+               private Factory() {
+               } // No instance of this class allowed
+       }
+}
\ No newline at end of file

Added: 
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=376602&view=auto
==============================================================================
--- 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java
 (added)
+++ 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATActivityContext.java
 Fri Feb 10 01:11:54 2006
@@ -0,0 +1,212 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.kandula.context.impl;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.kandula.Constants;
+import org.apache.kandula.Status;
+import org.apache.kandula.context.AbstractContext;
+import org.apache.kandula.context.CoordinationContext;
+import org.apache.kandula.coordinator.at.ATParticipantInformation;
+import org.apache.kandula.faults.AbstractKandulaException;
+import org.apache.kandula.faults.AlreadyRegisteredException;
+import org.apache.kandula.faults.InvalidProtocolException;
+import org.apache.kandula.utility.EndpointReferenceFactory;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]"> Thilina Gunarathne </a>
+ */
+public class ATActivityContext extends AbstractContext {
+
+       private int preparingParticipantsCount = 0;
+
+       private boolean subOrdinate = false;
+
+       private Hashtable volatileParticipantsTable;
+
+       private Hashtable durableParticipantsTable;
+
+       //TODO : check whether there can be more than 1 initiator
+       private EndpointReference completionParticipant;
+
+       private boolean subVolatileRegistered = false;
+
+       private boolean subDurableRegistered = false;
+
+       private EndpointReference parentEPR;
+
+       /**
+        * Used when creating new activities
+        */
+       public ATActivityContext() {
+               super(Constants.WS_AT);
+               this.setStatus(Status.CoordinatorStatus.STATUS_ACTIVE);
+               volatileParticipantsTable = new Hashtable();
+               durableParticipantsTable = new Hashtable();
+       }
+
+       /**
+        * @param context
+        *            To be used when coordinator is used as a sub ordinate to 
an
+        *            another cooordinator
+        */
+       public ATActivityContext(CoordinationContext context) {
+               subOrdinate = true;
+               parentEPR = context.getRegistrationService();
+               //        
context.setRegistrationService(EndpointReferenceFactory.getInstance()
+               //                .getRegistrationEndpoint());
+               this.setStatus(Status.CoordinatorStatus.STATUS_ACTIVE);
+               volatileParticipantsTable = new Hashtable();
+               durableParticipantsTable = new Hashtable();
+               setCoordinationContext(context);
+       }
+
+       /**
+        * @param id
+        *            To be used when using as the requester
+        */
+       public ATActivityContext(EndpointReference activationEPR) {
+               super();
+               this.setProperty(REQUESTER_ID, EndpointReferenceFactory
+                               .getRandomStringOf18Characters());
+               this.setProperty(ACTIVATION_EPR, activationEPR);
+       }
+
+       /**
+        * @param participantEPR
+        * @param protocol
+        * @return Coordinator protocol service.
+        * @throws AbstractKandulaException
+        */
+       public EndpointReference addParticipant(EndpointReference 
participantEPR,
+                       String protocol) throws AbstractKandulaException {
+               String enlistmentID = 
EndpointReferenceFactory.getRandomStringOf18Characters();
+               if (Constants.WS_AT_VOLATILE2PC.equals(protocol)) {
+                       addVolatileParticipant(participantEPR, enlistmentID);
+                       return EndpointReferenceFactory.getInstance()
+                                       .get2PCCoordinatorEndpoint(activityID, 
enlistmentID);
+               } else if (Constants.WS_AT_DURABLE2PC.equals(protocol)) {
+                       addDurableParticipant(participantEPR, enlistmentID);
+                       return EndpointReferenceFactory.getInstance()
+                                       .get2PCCoordinatorEndpoint(activityID, 
enlistmentID);
+               } else if (Constants.WS_AT_COMPLETION.equals(protocol)) {
+                       completionParticipant = participantEPR;
+                       return EndpointReferenceFactory.getInstance()
+                                       .getCompletionEndpoint(this.activityID);
+               } else {
+                       throw new InvalidProtocolException();
+               }
+       }
+
+       public void addVolatileParticipant(EndpointReference participantEPR,
+                       String enlistmentID) throws AbstractKandulaException {
+               if (volatileParticipantsTable.contains(participantEPR))
+                       throw new AlreadyRegisteredException();
+               ATParticipantInformation participant = new 
ATParticipantInformation(participantEPR,
+                               Constants.WS_AT_VOLATILE2PC, enlistmentID);
+               volatileParticipantsTable.put(enlistmentID, participant);
+       }
+
+       public void addDurableParticipant(EndpointReference participantEPR,
+                       String enlistmentID) throws AlreadyRegisteredException {
+               if (durableParticipantsTable.contains(participantEPR)) {
+                       throw new AlreadyRegisteredException();
+               }
+               ATParticipantInformation participant = new 
ATParticipantInformation(participantEPR,
+                               Constants.WS_AT_DURABLE2PC, enlistmentID);
+               durableParticipantsTable.put(enlistmentID, participant);
+       }
+
+       public Iterator getRegistered2PCParticipants(String protocol) {
+               if (protocol.equals(Constants.WS_AT_VOLATILE2PC)) {
+                       return volatileParticipantsTable.values().iterator();
+               } else if (protocol.equals(Constants.WS_AT_DURABLE2PC)) {
+                       return durableParticipantsTable.values().iterator();
+               }
+               return null;
+       }
+
+       public Iterator getAll2PCParticipants() {
+               LinkedList list = new 
LinkedList(volatileParticipantsTable.values());
+               list.addAll(durableParticipantsTable.values());
+               return list.iterator();
+       }
+
+       public ATParticipantInformation getParticipant(String enlistmentId) {
+               if (volatileParticipantsTable.containsKey(enlistmentId)) {
+                       return (ATParticipantInformation) 
volatileParticipantsTable.get(enlistmentId);
+               } else if (durableParticipantsTable.containsKey(enlistmentId)) {
+                       return (ATParticipantInformation) 
durableParticipantsTable.get(enlistmentId);
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * @return the completion initiator epr
+        */
+       public EndpointReference getCompletionParticipant() {
+               return completionParticipant;
+       }
+
+       public void countPreparing() {
+               preparingParticipantsCount++;
+
+       }
+
+       public void decrementPreparing() {
+               preparingParticipantsCount--;
+       }
+
+       public boolean hasMorePreparing() {
+               return (preparingParticipantsCount > 0);
+       }
+
+       public boolean getSubVolatileRegistered() {
+
+               return subVolatileRegistered;
+       }
+
+       public boolean getSubDurableRegistered() {
+               return subDurableRegistered;
+       }
+
+       public void setSubVolatileRegistered(boolean value) {
+               subVolatileRegistered = value;
+       }
+
+       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;
+       }
+
+}
\ No newline at end of file

Added: 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATParticipantContext.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATParticipantContext.java?rev=376602&view=auto
==============================================================================
--- 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATParticipantContext.java
 (added)
+++ 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/ATParticipantContext.java
 Fri Feb 10 01:11:54 2006
@@ -0,0 +1,63 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.kandula.context.impl;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.kandula.Constants;
+import org.apache.kandula.Status;
+import org.apache.kandula.context.AbstractContext;
+import org.apache.kandula.participant.KandulaResource;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]"> Thilina Gunarathne </a>
+ */
+public class ATParticipantContext extends AbstractContext {
+       KandulaResource resource;
+
+       public ATParticipantContext() {
+               this.setStatus(Status.CoordinatorStatus.STATUS_ACTIVE);
+       }
+
+       /**
+        * @return Returns the resource.
+        */
+       public KandulaResource getResource() {
+               return resource;
+       }
+
+       /**
+        * @param resource
+        *            The resource to set.
+        */
+       public void setResource(KandulaResource resource) {
+               this.resource = resource;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.kandula.context.AbstractContext#getCoordinationType()
+        */
+       public String getCoordinationType() {
+               return Constants.WS_AT;
+       }
+
+       public EndpointReference getCoordinationEPR() {
+               return (EndpointReference) 
getProperty(ATActivityContext.COORDINATION_EPR);
+       }
+
+}
\ No newline at end of file

Added: 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/SimpleCoordinationContext.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/SimpleCoordinationContext.java?rev=376602&view=auto
==============================================================================
--- 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/SimpleCoordinationContext.java
 (added)
+++ 
webservices/kandula/trunk/java/src/org/apache/kandula/context/impl/SimpleCoordinationContext.java
 Fri Feb 10 01:11:54 2006
@@ -0,0 +1,133 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.kandula.context.impl;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.kandula.Constants;
+import org.apache.kandula.context.CoordinationContext;
+import org.apache.kandula.utility.EndpointReferenceFactory;
+import org.apache.ws.commons.om.OMAbstractFactory;
+import org.apache.ws.commons.om.OMElement;
+import org.apache.ws.commons.om.OMNamespace;
+import org.apache.ws.commons.soap.SOAPFactory;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]"> Thilina Gunarathne </a>
+ */
+public class SimpleCoordinationContext implements CoordinationContext {
+       private String activityID;
+
+       private String coordinationType;
+
+       private long expires;
+
+       private EndpointReference registrationServiceEpr;
+
+       private OMElement contextElement = null;
+
+       public SimpleCoordinationContext(String activityID,
+                       String coordinationType, EndpointReference epr) {
+               this.activityID = activityID;
+               this.coordinationType = coordinationType;
+               this.registrationServiceEpr = epr;
+       }
+
+       public SimpleCoordinationContext(OMElement contextElement) {
+               super();
+               this.contextElement = contextElement;
+               activityID = contextElement.getFirstChildWithName(
+                               new QName("Identifier")).getText();
+               coordinationType = contextElement.getFirstChildWithName(
+                               new QName("CoordinationType")).getText();
+               OMElement registrationElement = contextElement
+                               .getFirstChildWithName(new 
QName("RegistrationService"));
+               registrationServiceEpr = EndpointReferenceFactory
+                               .endpointFromOM(registrationElement);
+       }
+
+       public String getActivityID() {
+               return activityID;
+       }
+
+       public String getCoordinationType() {
+               return coordinationType;
+       }
+
+       public EndpointReference getRegistrationService() {
+               return this.registrationServiceEpr;
+       }
+
+       public long getExpires() {
+               return expires;
+       }
+
+       public void setActivityID(String value) {
+               this.activityID = value;
+
+       }
+
+       public void setCoordinationType(String value) {
+               this.coordinationType = value;
+
+       }
+
+       public void setRegistrationService(EndpointReference epr) {
+               this.registrationServiceEpr = epr;
+       }
+
+       public void setExpires(long value) {
+               this.expires = value;
+       }
+
+       public Object getCoordinationContextType() {
+               return this;
+       }
+
+       public OMElement toOM() {
+               if (contextElement != null) {
+                       return contextElement;
+               } else {
+                       SOAPFactory factory = 
OMAbstractFactory.getSOAP12Factory();
+                       OMNamespace wsCoor = 
factory.createOMNamespace(Constants.WS_COOR,
+                                       "wscoor");
+                       OMElement contextElement = factory.createOMElement(
+                                       "CoordinationContext", wsCoor);
+                       if (this.expires != 0) {
+                               OMElement expiresElement = 
factory.createOMElement("Expires",
+                                               wsCoor);
+                               
expiresElement.setText(Long.toString(this.expires));
+                               contextElement.addChild(expiresElement);
+                       }
+                       OMElement identifierElement = 
factory.createOMElement("Identifier",
+                                       wsCoor);
+                       identifierElement.setText(this.activityID);
+                       contextElement.addChild(identifierElement);
+                       OMElement coorTypeElement = factory.createOMElement(
+                                       "CoordinationType", wsCoor);
+                       coorTypeElement.setText(this.coordinationType);
+                       contextElement.addChild(coorTypeElement);
+                       OMElement registrationServiceElement = 
factory.createOMElement(
+                                       "RegistrationService", wsCoor);
+                       
EndpointReferenceFactory.endpointToOM(registrationServiceEpr,
+                                       registrationServiceElement, factory);
+                       contextElement.addChild(registrationServiceElement);
+                       return contextElement;
+               }
+       }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to