Relativ neu mit Riak Entwicklung hier gefunden wurde. Ich verwende einen C++ - Client, um eine Verbindung zu einem Riak Java Client herzustellen, der wiederum eine Verbindung zum Riak Cluster herstellt. Der C++ - Client serialisiert als String eine Abfrage mit Google Protocol Buffers in Form von "GET": KEY und der Riak Java Client serialisiert die Antwort als "OK": VALUE. Wie behandelt man den Fall, dass der Wert nicht in der Datenbank gefunden wurde?Im Riak Java-Client, wie man richtig den Fall zu behandeln, wo ein Schlüssel/Wert-Objekt nicht
Dies ist der Beispielcode aus dem Riak Java-Client das Objekt aus der DB abrufen:
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;
}
Wenn das Objekt nicht gefunden wurde, das byte [] -Array NULL bleibt
Dies ist der Code Probe aus dem Riak Java-Client die Antwort zu serialisiert:
ByteString valueBuf = ByteString.copyFrom(value);
// Generate reply message
reply = Request.RequestMessage.newBuilder().setCommand("OK").setValue(valueBuf).build().toByteArray();
Der Code löst jedoch eine NullPointerException in der copyFrom-Zeile aus, da er versucht, von einem Null-Array zu kopieren. Gibt es eine Möglichkeit, das sauberer zu machen?
Danke!