Inherit Intent Key on compilation

- Added Intent#key() method description
- Inherit key field from parent Intent during Intent
  compilation process
- Added assertion to existing unit tests

Change-Id: Iff85c5ec448b3f378957b7a20af865ad96cc3216
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalCircuitIntentCompiler.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalCircuitIntentCompiler.java
index 0ce0b3c..9b131ae 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalCircuitIntentCompiler.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalCircuitIntentCompiler.java
@@ -244,6 +244,10 @@
             // Create optical connectivity intent
             connectivityIntent = OpticalConnectivityIntent.builder()
                     .appId(appId)
+                    // TODO New top-level Intent created and submitted
+                    // during compilation.
+                    // We'll need to track inter-Intent dependency,
+                    // but `key` field cannot be used for the purpose.
                     .src(srcCP)
                     .dst(dstCP)
                     .signalType(ochPorts.getLeft().signalType())
@@ -324,7 +328,7 @@
             rules.add(connectPorts(higherIntent.getDst(), lowerIntent.getDst(), higherIntent.priority(), slots));
         }
 
-        return new FlowRuleIntent(appId, rules, higherIntent.resources());
+        return new FlowRuleIntent(appId, higherIntent.key(), rules, higherIntent.resources());
     }
 
     /**