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);
+ }
+}