Factory methods for WriteRequest

Change-Id: If6fae76bd09b3068a8fb60ce27b7cde64cd8dc86
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
index 99f73c1..dcf22e9 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
@@ -17,24 +17,59 @@
     private final long previousVersion;
     private final byte[] oldValue;
 
-    // put regardless of previous value
-    public WriteRequest(String tableName, String key, byte[] newValue) {
-        this(tableName, key, newValue, -1, null);
+    /**
+     * Creates a write request, which will
+     * put the specified value to the table regardless of the previous value.
+     *
+     * @param tableName name of the table
+     * @param key       key in the table
+     * @param newValue  value to write
+     * @return WriteRequest
+     */
+    public static WriteRequest put(String tableName, String key,
+                                   byte[] newValue) {
+        return new WriteRequest(tableName, key, newValue, -1, null);
     }
 
-    // put if version matches
-    public WriteRequest(String tableName, String key, byte[] newValue, long previousVersion) {
-        this(tableName, key, newValue, previousVersion, null);
+    // FIXME: Is there a special version value to realize putIfAbsent?
+    /**
+     * Creates a write request, which will
+     * put the specified value to the table if the previous version matches.
+     *
+     * @param tableName name of the table
+     * @param key       key in the table
+     * @param newValue  value to write
+     * @param previousVersion previous version expected
+     * @return WriteRequest
+     */
+    public static WriteRequest putIfVersionMatches(String tableName, String key,
+                                                   byte[] newValue,
+                                                   long previousVersion) {
         checkArgument(previousVersion >= 0);
+        return new WriteRequest(tableName, key, newValue, previousVersion, null);
     }
 
-    // put if value matches
-    public WriteRequest(String tableName, String key, byte[] newValue, byte[] oldValue) {
-        this(tableName, key, newValue, -1, oldValue);
+    // FIXME: What is the behavior of oldValue=null? putIfAbsent?
+    /**
+     * Creates a write request, which will
+     * put the specified value to the table if the previous value matches.
+     *
+     * @param tableName name of the table
+     * @param key       key in the table
+     * @param newValue  value to write
+     * @param oldValue  previous value expected
+     * @return WriteRequest
+     */
+    public static WriteRequest putIfValueMatches(String tableName, String key,
+                                                 byte[] newValue,
+                                                 byte[] oldValue) {
+        return new WriteRequest(tableName, key, newValue, -1, oldValue);
     }
 
+    // FIXME: How do we remove value? newValue=null?
+
     // hidden constructor
-    private WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) {
+    protected WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) {
 
         checkArgument(tableName != null);
         checkArgument(key != null);