Added @Beta annotation to the flow objective API.

Change-Id: I4dd91921db1ff533b0ea1e3244dcdbf08b64a499
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
index 94519a9..e5589b4 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.criteria.Criteria;
@@ -31,6 +32,7 @@
 /**
  * Default implementation of a filtering objective.
  */
+@Beta
 public final class DefaultFilteringObjective implements FilteringObjective {
 
 
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
index 9bbe991..ae47de1 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
@@ -28,6 +29,7 @@
 /**
  * Default implementation of a forwarding objective.
  */
+@Beta
 public final class DefaultForwardingObjective implements ForwardingObjective {
 
     private final TrafficSelector selector;
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java
index a034edb..956dbbe 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.TrafficTreatment;
@@ -29,6 +30,7 @@
 /**
  * Default implementation of a next objective.
  */
+@Beta
 public final class DefaultNextObjective implements NextObjective {
 
     private final List<TrafficTreatment> treatments;
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
index d037764..173ddfd 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.criteria.Criterion;
 
@@ -26,6 +27,7 @@
  * be used by a device driver to construct the actual flow rules to
  * be installed on the device.
  */
+@Beta
 public interface FilteringObjective extends Objective {
 
     enum Type {
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java
index fd6ac55..f276c0d 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java
@@ -15,12 +15,14 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.net.DeviceId;
 
 /**
  * Service for programming data plane flow rules in manner independent of
  * specific device table pipeline configuration.
  */
+@Beta
 public interface FlowObjectiveService {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java
index 033558c..ecf5d73 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java
@@ -15,12 +15,14 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.net.behaviour.NextGroup;
 import org.onosproject.store.Store;
 
 /**
  * The flow objective store.
  */
+@Beta
 public interface FlowObjectiveStore
         extends Store<ObjectiveEvent, FlowObjectiveStoreDelegate> {
 
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java
index 5af7836..2189af1 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java
@@ -15,10 +15,12 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.store.StoreDelegate;
 
 /**
  * Flow Objective store delegate abstraction.
  */
+@Beta
 public interface FlowObjectiveStoreDelegate extends StoreDelegate<ObjectiveEvent> {
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
index d825b99..c941aa0 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 
@@ -23,6 +24,7 @@
  * be forwarded through the device. A forwarding objective may
  * in multiple rules at the device.
  */
+@Beta
 public interface ForwardingObjective extends Objective {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
index 229e6b5..2971883 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.TrafficTreatment;
 
@@ -25,6 +26,7 @@
  * into the appropriate group or actions needed to implement
  * the function.
  */
+@Beta
 public interface NextObjective extends Objective {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
index 0d53a75..090c298 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.core.ApplicationId;
 
 import java.util.Optional;
@@ -22,6 +23,7 @@
 /**
  * Base representation of an flow description.
  */
+@Beta
 public interface Objective {
 
     static final boolean DEFAULT_PERMANENT = true;
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java
index 00e4ed8..5bb2bdc 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java
@@ -15,12 +15,15 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
+
 /**
  * The context of a objective that will become the subject of
  * the notification.
  *
  * Implementations of this class must be serializable.
  */
+@Beta
 public interface ObjectiveContext {
 
     default void onSuccess(Objective objective) {}
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java
index d23af76..fd159d7 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java
@@ -15,9 +15,12 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
+
 /**
  * Represents the set of errors possible when processing an objective.
  */
+@Beta
 public enum ObjectiveError {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java
index 9f095cf..c6937e3 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java
@@ -15,11 +15,13 @@
  */
 package org.onosproject.net.flowobjective;
 
+import com.google.common.annotations.Beta;
 import org.onosproject.event.AbstractEvent;
 
 /**
  * Describes a objective event.
  */
+@Beta
 public class ObjectiveEvent extends AbstractEvent<ObjectiveEvent.Type, Integer> {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java b/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java
index 65454a7..105f7b5 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java
@@ -16,6 +16,7 @@
 
 /**
  * Abstractions for objective-based flow programming of data plane without
- * requiring device pipeline structure awareness.
+ * requiring device pipeline structure awareness.&nbsp; This subsystem is
+ * experimental and its interfaces will change in the upcoming release.
  */
 package org.onosproject.net.flowobjective;
\ No newline at end of file