Revision: 3978
Author: [email protected]
Date: Fri Nov  5 15:45:58 2010
Log: Added in a listener to be notified when transactions are started and completed on the server for testing purposes.
http://code.google.com/p/power-architect/source/detail?r=3978

Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectNetworkConflictResolver.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectNetworkConflictResolver.java Fri Nov 5 14:53:21 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectNetworkConflictResolver.java Fri Nov 5 15:45:58 2010
@@ -57,12 +57,26 @@
 import com.google.common.collect.Multimap;

public class ArchitectNetworkConflictResolver extends AbstractNetworkConflictResolver implements MessageSender<JSONObject> {
-
+

private static final Logger logger = Logger.getLogger(ArchitectNetworkConflictResolver.class);
+
+    /**
+ * Implement a listener of this type to know when a transaction is about to + * be sent to the server or when a transaction just completed being sent to
+     * the server regardless of a success or failure.
+     */
+    public static interface PostTransactionListener {
+
+        public void preServerSend();
+
+        public void postServerSend();
+    }

     private ArchitectClientSideSession session;

+ private final List<PostTransactionListener> postTransactionListeners = new ArrayList<PostTransactionListener>();
+
     public ArchitectNetworkConflictResolver(
             ProjectLocation projectLocation,
             SPJSONMessageDecoder jsonDecoder,
@@ -113,7 +127,13 @@
             // Try to send json message ...
             JSONMessage response = null;
             try {
+ for (PostTransactionListener l : postTransactionListeners) {
+                    l.preServerSend();
+                }
                 response = postJsonArray(messageBuffer.toString());
+ for (PostTransactionListener l : postTransactionListeners) {
+                    l.postServerSend();
+                }
             } catch (AccessDeniedException e) {
List<UpdateListener> listenersToRemove = new ArrayList<UpdateListener>();
                 for (UpdateListener listener : updateListeners) {
@@ -350,4 +370,12 @@
     protected SPObject getWorkspace() {
         return session.getWorkspace();
     }
-}
+
+    public void addPostTransactionListener(PostTransactionListener l) {
+        postTransactionListeners.add(l);
+    }
+
+    public void removePostTransactionListener(PostTransactionListener l) {
+        postTransactionListeners.remove(l);
+    }
+}

Reply via email to