Riak開発では比較的新しいです。私は、Riakクラスターに接続するRiak Javaクライアントに接続するために、C++クライアントを使用しています。 C++クライアントは、 "GET"という形式のGoogleプロトコルバッファを使用して文字列としてクエリをシリアル化します.KEYとRiak Javaクライアントは応答を "OK"としてシリアル化します:VALUE。しかし、値がデータベースに見つからなかったケースを適切に処理する方法はありますか?Riak Javaクライアントで、キー/値オブジェクトが見つからない場合を適切に処理する方法
これはDBからオブジェクトを取得するRiakには、Javaクライアントからのサンプルコードである:
String key //Contains the actual key
Namespace ns;
byte[] retVal = null;
Location location = new Location(ns, key);
try {
FetchValue fv;
FetchValue.Response response = client.execute(fv);
if (response.isNotFound()) {
System.out.println("The key/value pair was not found");
} else {
RiakObject obj = response.getValue(RiakObject.class);
retVal = obj.getValue().getValue();
}
}
catch (...) {...}
return retVal;
}
オブジェクトが見つからなかった場合は、バイト[]配列は、NULL
ままこれは、応答をシリアル化するRiakには、Javaクライアントからのサンプルコードです:
ByteString valueBuf = ByteString.copyFrom(value);
// Generate reply message
reply = Request.RequestMessage.newBuilder().setCommand("OK").setValue(valueBuf).build().toByteArray();
しかし、Null配列からコピーしようとするので、コードはcopyFrom行でNullPointerExceptionをスローします。これをもっときれいにする方法はありますか?
ありがとうございます!