Fixes to RAMCloud Java bindings

- Fix FindBugs warnings
- Change RejectRule to be a static class
- Change nested Exception classes to be static classes
- Changed RejectRules methods to clarify its roll, and allow chaining
- Represent RejectRules flags as bits in int to decrease number of JNI crossing
- multiWrite value size parameter needs to be int to match C++ decl.
- Add conditional read, write, remove
- Deprecate writeRule method
- Fixed RejectRules related Exception class inheritance
- Declare throws on conditional operations

Change-Id: I07c3a2111d06ca051a29415224d59b9bfa7a4ddb
diff --git a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
index 69eed7f..030d088 100644
--- a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
+++ b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
@@ -1,6 +1,8 @@
 package com.tinkerpop.blueprints.impls.ramcloud;
 
 import edu.stanford.ramcloud.JRamCloud;
+import edu.stanford.ramcloud.JRamCloud.RejectRules;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -10,14 +12,14 @@
 	INDEXWRITE
     }
     private final static Logger log = LoggerFactory.getLogger(RamCloudGraph.class);
-    
+
     public static boolean writeWithRules(long tableId, byte[] rcKey, byte[] rcValue, long expectedVersion, RamCloudGraph graph, PerfMonEnum perfMonKind) {
-	JRamCloud.RejectRules rules = graph.getRcClient().new RejectRules();
+	JRamCloud.RejectRules rules = new RejectRules();
 
 	if (expectedVersion == 0) {
-	    rules.setExists();
+	    rules.rejectIfExists();
 	} else {
-	    rules.setNeVersion(expectedVersion);
+	    rules.rejectIfNeVersion(expectedVersion);
 	}
 
 	PerfMon pm = PerfMon.getInstance();