Added a set of abstractions for flow rule subsystem.
Added an apps source subtree.
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleEvent.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleEvent.java
new file mode 100644
index 0000000..566c2b4
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleEvent.java
@@ -0,0 +1,47 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.event.AbstractEvent;
+
+/**
+ * Describes flow rule event.
+ */
+public class FlowRuleEvent extends AbstractEvent<FlowRuleEvent.Type, FlowRule> {
+
+    /**
+     * Type of flow rule events.
+     */
+    public enum Type {
+        /**
+         * Signifies that a new flow rule has been detected.
+         */
+        RULE_ADDED,
+
+        /**
+         * Signifies that a flow rule has been removed.
+         */
+        RULE_REMOVED,
+    }
+
+    /**
+     * Creates an event of a given type and for the specified flow rule and the
+     * current time.
+     *
+     * @param type     flow rule event type
+     * @param flowRule event flow rule subject
+     */
+    public FlowRuleEvent(Type type, FlowRule flowRule) {
+        super(type, flowRule);
+    }
+
+    /**
+     * Creates an event of a given type and for the specified flow rule and time.
+     *
+     * @param type     flow rule event type
+     * @param flowRule event flow rule subject
+     * @param time     occurrence time
+     */
+    public FlowRuleEvent(Type type, FlowRule flowRule, long time) {
+        super(type, flowRule, time);
+    }
+
+}