Minor changes to PI runtime classes

- New class for action runtime parameter and its identifier
- PiAction builder
- Various indentifier builders

Change-Id: I265f71c868c21dbbbe633622b0c4330712f5a5ad
diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionId.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionId.java
index ae17071..d0655da 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionId.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionId.java
@@ -19,6 +19,9 @@
 import com.google.common.annotations.Beta;
 import org.onlab.util.Identifier;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Identifier of an action of a match+action table in a protocol-independent pipeline.
  */
@@ -30,7 +33,19 @@
      *
      * @param name action name
      */
-    public PiActionId(String name) {
+    private PiActionId(String name) {
         super(name);
     }
+
+    /**
+     * Returns an action identifier with the given name.
+     *
+     * @param name action name
+     * @return action identifier
+     */
+    public static PiActionId of(String name) {
+        checkNotNull(name);
+        checkArgument(!name.isEmpty(), "Name can't be empty");
+        return new PiActionId(name);
+    }
 }