Author: michiel
Date: 2010-03-15 22:20:19 +0100 (Mon, 15 Mar 2010)
New Revision: 41371

Added:
   mmbase/trunk/core/src/main/java/org/mmbase/core/event/LocalEvent.java
   mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEvent.java
   
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventBroker.java
   
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventListener.java
Log:
  MMB-1941

Added: mmbase/trunk/core/src/main/java/org/mmbase/core/event/LocalEvent.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/core/event/LocalEvent.java       
                        (rev 0)
+++ mmbase/trunk/core/src/main/java/org/mmbase/core/event/LocalEvent.java       
2010-03-15 21:20:19 UTC (rev 41371)
@@ -0,0 +1,24 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+
+/**
+ * An event that does not need broadcasting to other servers
+ *
+ * @author  Michiel Meeuwissen
+ * @since   MMBase-1.9.3
+ * @version $Id: LocalEvent.java 41369 2010-03-15 20:54:45Z michiel $
+ */
+public abstract class LocalEvent extends Event {
+
+    private static final long serialVersionUID = 1L;
+    public LocalEvent() {
+        super(null, TYPE_UNSPECIFIED);
+    }
+
+}

Added: 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEvent.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEvent.java 
                        (rev 0)
+++ mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEvent.java 
2010-03-15 21:20:19 UTC (rev 41371)
@@ -0,0 +1,92 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+import java.io.*;
+import java.util.*;
+
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+/**
+ *
+ * @author  Michiel Meeuwissen
+ * @since   MMBase-1.9.3
+ * @version $Id: TransactionEvent.java 41369 2010-03-15 20:54:45Z michiel $
+ */
+public abstract class TransactionEvent extends LocalEvent {
+    private static final Logger log = 
Logging.getLoggerInstance(TransactionEvent.class);
+
+    protected final String transactionName;
+
+    TransactionEvent(String transactionName) {
+        this.transactionName = transactionName;
+    }
+
+    public String getTransactionName() {
+        return transactionName;
+    }
+
+
+    public static abstract class End extends TransactionEvent {
+        public End(String transactionName) {
+            super(transactionName);
+        }
+    }
+
+    public static class Commit extends End {
+        private static final long serialVersionUID = 1L;
+
+        public Commit(String transactionName) {
+            super(transactionName);
+        }
+        @Override
+        public String toString() {
+            return "commit:" + getTransactionName();
+        }
+    }
+
+    public static class Resolve extends TransactionEvent {
+        private static final long serialVersionUID = 1L;
+        private final Map<Integer, Integer> resolved;
+        public Resolve(String transactionName, Map<Integer, Integer> resolved) 
{
+            super(transactionName);
+            this.resolved = resolved;
+        }
+        public Map<Integer, Integer> getResolution() {
+            return resolved;
+        }
+        @Override
+        public String toString() {
+            return "resolve:" + getTransactionName() + " " + getResolution();
+        }
+    }
+
+    public static class Cancel extends End {
+        private static final long serialVersionUID = 1L;
+
+        public Cancel(String transactionName) {
+            super(transactionName);
+        }
+        @Override
+        public String toString() {
+            return "cancel:" + getTransactionName() ;
+        }
+    }
+
+    public static class Create extends TransactionEvent {
+        private static final long serialVersionUID = 1L;
+
+        public Create(String transactionName) {
+            super(transactionName);
+        }
+        @Override
+        public String toString() {
+            return "create:" + getTransactionName() ;
+        }
+    }
+}

Added: 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventBroker.java
===================================================================
--- 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventBroker.java
                           (rev 0)
+++ 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventBroker.java
   2010-03-15 21:20:19 UTC (rev 41371)
@@ -0,0 +1,55 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.3
+ * @version $Id: TransactionEventBroker.java 41369 2010-03-15 20:54:45Z 
michiel $
+ */
+public class TransactionEventBroker extends AbstractEventBroker {
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see event.AbstractEventBroker#canBrokerFor(java.lang.Class)
+     */
+    public boolean canBrokerForListener(EventListener listener) {
+        return listener instanceof TransactionEventListener;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see event.AbstractEventBroker#shouldNotifyForEvent(event.Event)
+     */
+    public boolean canBrokerForEvent(Event event) {
+        return event instanceof TransactionEvent;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see event.AbstractEventBroker#notifyEventListeners()
+     */
+    protected void notifyEventListener(Event event, EventListener listener) {
+        TransactionEvent te = (TransactionEvent) event; //!!!!!
+        TransactionEventListener tel = (TransactionEventListener) listener;
+        tel.notify(te);
+    }
+
+    /* (non-Javadoc)
+     * @see org.mmbase.core.event.AbstractEventBroker#toString()
+     */
+    @Override
+    public String toString() {
+        return "TransactionEvent Broker";
+    }
+
+}

Added: 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventListener.java
===================================================================
--- 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventListener.java
                         (rev 0)
+++ 
mmbase/trunk/core/src/main/java/org/mmbase/core/event/TransactionEventListener.java
 2010-03-15 21:20:19 UTC (rev 41371)
@@ -0,0 +1,17 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.8
+ * @version $Id: TransactionEventListener.java 41369 2010-03-15 20:54:45Z 
michiel $
+ */
+public interface TransactionEventListener extends EventListener {
+    public void notify(TransactionEvent event);
+}

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to