import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import org.openvpp.jvpp.JVpp;
public FutureJVppInvokerFacade(final JVpp jvpp,
final Map<Integer, CompletableFuture<? extends JVppReply<?>>> requestMap) {
- // TODO use guava's preconditions for nonNull and state checks
- // However adding guava as a dependency requires better build system for Java in VPP project
- // Currently it's just invocation of javac
- if(jvpp == null) {
- throw new NullPointerException("Null jvpp");
- }
- this.jvpp = jvpp;
- if(requestMap == null) {
- throw new NullPointerException("Null requestMap");
- }
+ this.jvpp = Objects.requireNonNull(jvpp, "Null jvpp");
// Request map represents the shared state between this facade and it's callback
// where facade puts futures in and callback completes + removes them
// TODO what if the call never completes ?
- this.requests = requestMap;
+ this.requests = Objects.requireNonNull(requestMap, "Null requestMap");
}
// TODO use Optional in Future, java8
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
import org.openvpp.jvpp.VppJNIConnection;
private static void testShowVersion(final FutureJVppFacade jvpp) {
System.out.println("Sending ShowVersion request...");
try {
+ Objects.requireNonNull(jvpp,"jvpp is null");
final Future<ShowVersionReply> replyFuture = jvpp.showVersion(new ShowVersion()).toCompletableFuture();
+ Objects.requireNonNull(replyFuture,"replyFuture is null");
final ShowVersionReply reply = replyFuture.get();
+ Objects.requireNonNull(reply,"reply is null");
System.out.printf("Received ShowVersionReply: context=%d, retval=%d, program=%s, " +
"version=%s, buildDate=%s, buildDirectory=%s\n",
reply.context, reply.retval, new String(reply.program), new String(reply.version),
private static void testGetNodeIndex(final FutureJVppFacade jvpp) {
System.out.println("Sending GetNodeIndex request...");
try {
+ Objects.requireNonNull(jvpp,"jvpp is null");
final GetNodeIndex request = new GetNodeIndex();
request.nodeName = "node0".getBytes();
final Future<GetNodeIndexReply> replyFuture = jvpp.getNodeIndex(request).toCompletableFuture();
+ Objects.requireNonNull(replyFuture,"replyFuture is null");
final GetNodeIndexReply reply = replyFuture.get();
+ Objects.requireNonNull(reply,"reply is null");
System.out.printf("Received GetNodeIndexReply: context=%d, retval=%d, nodeIndex=%d\n",
reply.context, reply.retval, reply.nodeIndex);
} catch (Exception e) {
private static void testSwInterfaceDump(final FutureJVppFacade jvpp) {
System.out.println("Sending SwInterfaceDump request...");
try {
+ Objects.requireNonNull(jvpp,"SwInterfaceDetailsReplyDump is null!");
final SwInterfaceDump request = new SwInterfaceDump();
request.nameFilterValid = 0;
request.nameFilter = "".getBytes();
final Future<SwInterfaceDetailsReplyDump> replyFuture = jvpp.swInterfaceDump(request).toCompletableFuture();
+ Objects.requireNonNull(replyFuture,"replyFuture is null");
final SwInterfaceDetailsReplyDump reply = replyFuture.get();
-
- if (reply == null) {
- throw new IllegalStateException("SwInterfaceDetailsReplyDump is null!");
- }
- if (reply.swInterfaceDetails == null) {
- throw new IllegalStateException("SwInterfaceDetailsReplyDump.swInterfaceDetails is null!");
- }
-
+ Objects.requireNonNull(reply.swInterfaceDetails, "SwInterfaceDetailsReplyDump.swInterfaceDetails is null!");
for (SwInterfaceDetails details : reply.swInterfaceDetails) {
- if (details == null) {
- throw new IllegalStateException("reply.swInterfaceDetails contains null element!");
- }
-
+ Objects.requireNonNull(details, "reply.swInterfaceDetails contains null element!");
System.out.printf("Received SwInterfaceDetails: interfaceName=%s, l2AddressLength=%d, adminUpDown=%d, " +
"linkUpDown=%d, linkSpeed=%d, linkMtu=%d\n",
new String(details.interfaceName), details.l2AddressLength, details.adminUpDown,
details.linkUpDown, details.linkSpeed, (int) details.linkMtu);
}
+ } catch(NullPointerException e) {
+ throw new IllegalStateException(e.getMessage());
} catch (Exception e) {
System.err.printf("SwInterfaceDump request failed:\n");
e.printStackTrace();