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 da...@apache.org on 2005/12/29 13:14:53 UTC

svn commit: r359778 - in /webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator: ActivationImpl.java CoordinationService.java Coordinator.java CoordinatorImpl.java

Author: dasarath
Date: Thu Dec 29 04:14:51 2005
New Revision: 359778

URL: http://svn.apache.org/viewcvs?rev=359778&view=rev
Log: (empty)

Modified:
    webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ActivationImpl.java
    webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinationService.java
    webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Coordinator.java
    webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinatorImpl.java

Modified: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ActivationImpl.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ActivationImpl.java?rev=359778&r1=359777&r2=359778&view=diff
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ActivationImpl.java (original)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ActivationImpl.java Thu Dec 29 04:14:51 2005
@@ -18,7 +18,6 @@
 
 import java.rmi.RemoteException;
 
-import org.apache.axis.types.URI.MalformedURIException;
 import org.apache.ws.transaction.wscoor.ActivationPortTypeRPC;
 import org.apache.ws.transaction.wscoor.CreateCoordinationContextResponseType;
 import org.apache.ws.transaction.wscoor.CreateCoordinationContextType;
@@ -26,22 +25,8 @@
 public class ActivationImpl implements ActivationPortTypeRPC {
 
 	public CreateCoordinationContextResponseType createCoordinationContextOperation(
-			CreateCoordinationContextType parameters) throws RemoteException {
-
-		String t = parameters.getCoordinationType().toString();
-		CoordinationContext ctx;
-		try {
-			ctx = CoordinationService.getInstance().createCoordinationContext(t);
-		} catch (MalformedURIException e) {
-			e.printStackTrace();
-			throw new RuntimeException(e);
-		} catch (UnsupportedCoordinationTypeException e) {
-			e.printStackTrace();
-			throw new RuntimeException(e);
-		}
-		CreateCoordinationContextResponseType r = new CreateCoordinationContextResponseType();
-		r.setCoordinationContext(ctx);
-		return r;
-
+			CreateCoordinationContextType params) throws RemoteException {
+		return CoordinationService.getInstance().createCoordinationContextOperation(
+			params);
 	}
 }

Modified: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinationService.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinationService.java?rev=359778&r1=359777&r2=359778&view=diff
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinationService.java (original)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinationService.java Thu Dec 29 04:14:51 2005
@@ -4,6 +4,10 @@
  */
 package org.apache.ws.transaction.coordinator;
 
+import java.rmi.RemoteException;
+import java.util.Timer;
+import java.util.TimerTask;
+
 import org.apache.axis.message.MessageElement;
 import org.apache.axis.message.addressing.EndpointReference;
 import org.apache.axis.message.addressing.PortType;
@@ -13,12 +17,16 @@
 import org.apache.ws.transaction.coordinator.at.ATCoordinatorImpl;
 import org.apache.ws.transaction.utility.CallbackRegistry;
 import org.apache.ws.transaction.utility.EndpointReferenceFactory;
+import org.apache.ws.transaction.wscoor.ActivationPortTypeRPC;
+import org.apache.ws.transaction.wscoor.CreateCoordinationContextResponseType;
+import org.apache.ws.transaction.wscoor.CreateCoordinationContextType;
+import org.apache.ws.transaction.wscoor.Expires;
 
 /**
  * @author Dasarath Weeratunge
  *  
  */
-public class CoordinationService {
+public class CoordinationService implements ActivationPortTypeRPC {
 	public static PortType ACTIVATION_SERVICE = new PortType(
 			"http://schemas.xmlsoap.org/ws/2004/10/wscoor",
 			"ActivationPortTypeRPC");
@@ -36,6 +44,10 @@
 			"http://schemas.xmlsoap.org/ws/2004/10/wscoor",
 			"RegistrationPortTypeRPC");
 
+	public static final long DEFAULT_TIMEOUT_MILLIS = 60 * 60 * 1000;
+
+	private Timer timer = new Timer();
+
 	public static CoordinationService getInstance() {
 		return instance;
 	}
@@ -43,12 +55,18 @@
 	private CoordinationService() {
 	}
 
-	public CoordinationContext createCoordinationContext(String coordinationType)
+	private CoordinationContext createCoordinationContext(
+			String coordinationType, long timeout)
 			throws UnsupportedCoordinationTypeException, MalformedURIException {
 		if (!ATCoordinator.COORDINATION_TYPE_ID.equals(coordinationType))
 			throw new UnsupportedCoordinationTypeException();
-		Coordinator c = new ATCoordinatorImpl();
+		final Coordinator c = new ATCoordinatorImpl();
 		CallbackRegistry.getInstance().registerCallback(c.getID(), c);
+		timer.schedule(new TimerTask() {
+			public void run() {
+				c.timeout();
+			}
+		}, timeout);
 		return c.getCoordinationContext();
 	}
 
@@ -77,5 +95,29 @@
 		r.add(new MessageElement(CallbackRegistry.COORDINATOR_REF, c.getID()));
 		return EndpointReferenceFactory.getInstance().getEndpointReference(
 			REGISTRATION_SERVICE, r);
+	}
+
+	public CreateCoordinationContextResponseType createCoordinationContextOperation(
+			CreateCoordinationContextType parameters) throws RemoteException {
+		String t = parameters.getCoordinationType().toString();
+		Expires ex = parameters.getExpires();
+		long timeout;
+		if (ex == null)
+			timeout = DEFAULT_TIMEOUT_MILLIS;
+		else
+			timeout = ex.get_value().longValue() * 1000;
+		CoordinationContext ctx;
+		try {
+			ctx = createCoordinationContext(t, timeout);
+		} catch (MalformedURIException e) {
+			e.printStackTrace();
+			throw new RemoteException(e.toString());
+		} catch (UnsupportedCoordinationTypeException e) {
+			e.printStackTrace();
+			throw new RemoteException(e.toString());
+		}
+		CreateCoordinationContextResponseType r = new CreateCoordinationContextResponseType();
+		r.setCoordinationContext(ctx);
+		return r;
 	}
 }

Modified: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Coordinator.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Coordinator.java?rev=359778&r1=359777&r2=359778&view=diff
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Coordinator.java (original)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Coordinator.java Thu Dec 29 04:14:51 2005
@@ -14,4 +14,6 @@
 	String getID();
 
 	CoordinationContext getCoordinationContext();
+
+	void timeout();
 }

Modified: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinatorImpl.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinatorImpl.java?rev=359778&r1=359777&r2=359778&view=diff
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinatorImpl.java (original)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CoordinatorImpl.java Thu Dec 29 04:14:51 2005
@@ -41,7 +41,7 @@
 	public abstract EndpointReference register(String prot,
 			EndpointReference pps) throws InvalidCoordinationProtocolException;
 
-	public RegisterResponseType registerOperation(RegisterType params)
+	public synchronized RegisterResponseType registerOperation(RegisterType params)
 			throws RemoteException {
 		EndpointReference epr = null;
 		try {



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