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 2005/09/13 16:46:50 UTC
svn commit: r280570 -
/webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java
Author: thilina
Date: Tue Sep 13 07:46:40 2005
New Revision: 280570
URL: http://svn.apache.org/viewcvs?rev=280570&view=rev
Log:
Forgot to add in the previous commit....:)
Added:
webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java
Added: webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java?rev=280570&view=auto
==============================================================================
--- webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java (added)
+++ webservices/kandula/trunk/java/src/org/apache/kandula/coordinator/Coordinator.java Tue Sep 13 07:46:40 2005
@@ -0,0 +1,111 @@
+/*
+ * 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.coordinator;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.kandula.KandulaException;
+import org.apache.kandula.coordinator.at.ATCoordinator;
+import org.apache.kandula.coordinator.context.ActivityContext;
+import org.apache.kandula.coordinator.context.ContextFactory;
+import org.apache.kandula.storage.StorageFactory;
+import org.apache.kandula.storage.Store;
+import org.apache.kandula.typemapping.CoordinationContext;
+
+/**
+ * @author <a href="mailto:thilina@opensource.lk"> Thilina Gunarathne </a>
+ *
+ * This class implements the operations defined in WS-Coordination specification
+ */
+
+public class Coordinator {
+ private Store store;
+
+ public Coordinator() {
+ StorageFactory storageFactory = StorageFactory.getInstance();
+ store = storageFactory.getStore();
+ }
+
+ /**
+ * @param Coordination
+ * Type
+ * @return the Coordination Context created
+ *
+ * Initiators can use this to Create new Distributed transactions.This will
+ * take in the Coordination Type and will create an instance of the
+ * reapective ActivityContext. The Coordination Context created by this can
+ * be used to convey the information about the transaction between
+ * initiator,Participants and coordinator
+ * @throws KandulaException
+ */
+ public ActivityContext createCoordinationContext(String coordinationType,
+ long expires) throws KandulaException {
+ ContextFactory factory = ContextFactory.getInstance();
+ ActivityContext context = factory.createActivity(coordinationType);
+ context.getCoordinationContext().setExpires(expires);
+ store.putContext(context.getCoordinationContext().getActivityID(),
+ context);
+ return context;
+ }
+
+ /**
+ * @param Coordinationcontext
+ * @return the interposed Coordination Context created
+ *
+ * Participants decided to use this Coordinator as a interposed
+ * sub-coordinator.The newly created CoordinationContext will contain the
+ * same ActivityIdentifier & Protocol type. Registration EPR of the earlier
+ * CoordinationContext will be replaced by the RegistrationEPR of this
+ * Coordinator.
+ */
+ public ActivityContext createCoordinationContext(
+ CoordinationContext coorContext) throws KandulaException {
+ ContextFactory factory = ContextFactory.getInstance();
+ ActivityContext context = factory.createActivity(coorContext);
+ store.putContext(context.getCoordinationContext().getActivityID(),
+ context);
+ return context;
+ }
+
+ /**
+ * @param coordinationProtocol
+ * @param participantEPR
+ * @param Activity-id
+ * @return Should return the particular Coordiators End Point Reference
+ *
+ * This method provides the functional logic for participants to register
+ * for a particular transaction activity which was created by a initiator.
+ * Registration request will be forwarded to repective protocol
+ * coordinators.
+ * @throws KandulaException
+ */
+ public EndpointReference registerParticipant(String id, String protocol,
+ EndpointReference participantEPR) throws KandulaException {
+
+ ActivityContext context = getCoordinationContext(id);
+ if (context == null) {
+ throw new IllegalStateException(
+ "No Activity Found for this Activity ID");
+ }
+ //TODO use "switch case" when BA is present
+ Registerable activityCoordinator = new ATCoordinator();
+ return activityCoordinator.register(context, protocol, participantEPR);
+ }
+
+ private ActivityContext getCoordinationContext(String id) {
+ return store.getContext(id);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org