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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to