Yuta HIGUCHI

Factory methods for WriteRequest

Change-Id: If6fae76bd09b3068a8fb60ce27b7cde64cd8dc86
...@@ -17,24 +17,59 @@ public class WriteRequest { ...@@ -17,24 +17,59 @@ public class WriteRequest {
17 private final long previousVersion; 17 private final long previousVersion;
18 private final byte[] oldValue; 18 private final byte[] oldValue;
19 19
20 - // put regardless of previous value 20 + /**
21 - public WriteRequest(String tableName, String key, byte[] newValue) { 21 + * Creates a write request, which will
22 - this(tableName, key, newValue, -1, null); 22 + * put the specified value to the table regardless of the previous value.
23 + *
24 + * @param tableName name of the table
25 + * @param key key in the table
26 + * @param newValue value to write
27 + * @return WriteRequest
28 + */
29 + public static WriteRequest put(String tableName, String key,
30 + byte[] newValue) {
31 + return new WriteRequest(tableName, key, newValue, -1, null);
23 } 32 }
24 33
25 - // put if version matches 34 + // FIXME: Is there a special version value to realize putIfAbsent?
26 - public WriteRequest(String tableName, String key, byte[] newValue, long previousVersion) { 35 + /**
27 - this(tableName, key, newValue, previousVersion, null); 36 + * Creates a write request, which will
37 + * put the specified value to the table if the previous version matches.
38 + *
39 + * @param tableName name of the table
40 + * @param key key in the table
41 + * @param newValue value to write
42 + * @param previousVersion previous version expected
43 + * @return WriteRequest
44 + */
45 + public static WriteRequest putIfVersionMatches(String tableName, String key,
46 + byte[] newValue,
47 + long previousVersion) {
28 checkArgument(previousVersion >= 0); 48 checkArgument(previousVersion >= 0);
49 + return new WriteRequest(tableName, key, newValue, previousVersion, null);
29 } 50 }
30 51
31 - // put if value matches 52 + // FIXME: What is the behavior of oldValue=null? putIfAbsent?
32 - public WriteRequest(String tableName, String key, byte[] newValue, byte[] oldValue) { 53 + /**
33 - this(tableName, key, newValue, -1, oldValue); 54 + * Creates a write request, which will
55 + * put the specified value to the table if the previous value matches.
56 + *
57 + * @param tableName name of the table
58 + * @param key key in the table
59 + * @param newValue value to write
60 + * @param oldValue previous value expected
61 + * @return WriteRequest
62 + */
63 + public static WriteRequest putIfValueMatches(String tableName, String key,
64 + byte[] newValue,
65 + byte[] oldValue) {
66 + return new WriteRequest(tableName, key, newValue, -1, oldValue);
34 } 67 }
35 68
69 + // FIXME: How do we remove value? newValue=null?
70 +
36 // hidden constructor 71 // hidden constructor
37 - private WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) { 72 + protected WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) {
38 73
39 checkArgument(tableName != null); 74 checkArgument(tableName != null);
40 checkArgument(key != null); 75 checkArgument(key != null);
......