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 2006/01/07 06:35:29 UTC
svn commit: r366674 - in
/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator:
Callback.java CallbackRegistry.java FaultDispatcher.java
InvalidCoordinationProtocolException.java ParticipantService.java
Author: dasarath
Date: Fri Jan 6 21:35:27 2006
New Revision: 366674
URL: http://svn.apache.org/viewcvs?rev=366674&view=rev
Log: (empty)
Added:
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Callback.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CallbackRegistry.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/FaultDispatcher.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/InvalidCoordinationProtocolException.java
Removed:
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/ParticipantService.java
Added: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Callback.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Callback.java?rev=366674&view=auto
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Callback.java (added)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/Callback.java Fri Jan 6 21:35:27 2006
@@ -0,0 +1,28 @@
+/*
+ * Created on Dec 30, 2005
+ *
+ */
+package org.apache.ws.transaction.coordinator;
+
+import javax.xml.soap.Name;
+
+import org.apache.axis.message.addressing.EndpointReference;
+
+
+
+
+/**
+ * @author Dasarath Weeratunge
+ *
+ */
+public interface Callback {
+
+ String getID();
+
+ void onFault(Name code);
+
+ void timeout() throws TimedOutException;
+
+ EndpointReference getEndpointReference();
+
+}
\ No newline at end of file
Added: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CallbackRegistry.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CallbackRegistry.java?rev=366674&view=auto
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CallbackRegistry.java (added)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/CallbackRegistry.java Fri Jan 6 21:35:27 2006
@@ -0,0 +1,103 @@
+/*
+ * Created on Dec 24, 2005
+ *
+ */
+package org.apache.ws.transaction.coordinator;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.MessageContext;
+import org.apache.axis.message.addressing.AddressingHeaders;
+import org.apache.axis.message.addressing.Constants;
+
+/**
+ * @author Dasarath Weeratunge
+ *
+ */
+public class CallbackRegistry {
+
+ public static final QName CALLBACK_REF = new QName(
+ "http://ws.apache.org/kandula", "CallbackRef");
+
+ // FIXME:
+ public static final int DEFAULT_TIMEOUT_MILLIS = 90 * 1000;
+
+ private static Timer timer = new Timer();
+
+ private static final CallbackRegistry instance = new CallbackRegistry();
+
+ private Map callbacks = new HashMap();
+
+ protected CallbackRegistry() {
+ }
+
+ public static CallbackRegistry getInstance() {
+ return instance;
+ }
+
+ public synchronized void registerCallback(Callback callback) {
+ callbacks.put(callback.getID(), callback);
+ }
+
+ public synchronized void registerCallback(final Callback callback,
+ long timeout) {
+ callbacks.put(callback.getID(), callback);
+
+ if (timeout == 0)
+ timeout = DEFAULT_TIMEOUT_MILLIS;
+
+ System.out.println("[CallbackRegistry] registerCallback: timeout= "
+ + timeout);
+
+ timer.schedule(new TimerTask() {
+ public void run() {
+ callbacks.remove(callback);
+ try {
+ callback.timeout();
+ } catch (TimedOutException e) {
+ e.printStackTrace();
+ }
+ }
+ }, timeout);
+ }
+
+ public synchronized Callback correlateMessage(QName q, boolean terminal) {
+ String s = getRef(q);
+ if (s == null)
+ return null;
+ else
+ return (Callback) callbacks.get(s);
+ }
+
+ private AddressingHeaders getAddressingHeaders() {
+ return (AddressingHeaders) MessageContext.getCurrentContext().getProperty(
+ Constants.ENV_ADDRESSING_REQUEST_HEADERS);
+ }
+
+ private String getRef(QName q) {
+ AddressingHeaders headers = getAddressingHeaders();
+ try {
+ return headers.getReferenceProperties().get(q).getValue();
+ } catch (NullPointerException e) {
+ return null;
+ }
+ }
+
+ public synchronized void remove(Object callback) {
+ Set s = new HashSet(callbacks.keySet());
+ Iterator iter = s.iterator();
+ while (iter.hasNext()) {
+ Object key = iter.next();
+ if (callbacks.get(key) == callback)
+ callbacks.remove(key);
+ }
+ }
+}
\ No newline at end of file
Added: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/FaultDispatcher.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/FaultDispatcher.java?rev=366674&view=auto
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/FaultDispatcher.java (added)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/FaultDispatcher.java Fri Jan 6 21:35:27 2006
@@ -0,0 +1,32 @@
+/*
+ * Created on Jan 6, 2006
+ *
+ */
+package org.apache.ws.transaction.coordinator;
+
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPFault;
+
+import org.apache.axis.MessageContext;
+
+/**
+ * @author Dasarath Weeratunge
+ *
+ */
+public class FaultDispatcher {
+
+ public void process(SOAPEnvelope req, SOAPEnvelope resp)
+ throws javax.xml.soap.SOAPException {
+ SOAPBody body = req.getBody();
+ SOAPFault fault = body.getFault();
+
+ Callback callback = (Callback) CallbackRegistry.getInstance().correlateMessage(
+ CallbackRegistry.CALLBACK_REF, false);
+ if (callback != null)
+ callback.onFault(fault.getFaultCodeAsName());
+
+ MessageContext.getCurrentContext().setResponseMessage(null);
+ }
+
+}
\ No newline at end of file
Added: webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/InvalidCoordinationProtocolException.java
URL: http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/InvalidCoordinationProtocolException.java?rev=366674&view=auto
==============================================================================
--- webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/InvalidCoordinationProtocolException.java (added)
+++ webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/coordinator/InvalidCoordinationProtocolException.java Fri Jan 6 21:35:27 2006
@@ -0,0 +1,13 @@
+/*
+ * Created on Jan 6, 2006
+ *
+ */
+package org.apache.ws.transaction.coordinator;
+
+/**
+ * @author Dasarath Weeratunge
+ *
+ */
+public class InvalidCoordinationProtocolException extends Exception {
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org