diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
index 92257fd..1db1da1 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
@@ -339,7 +339,7 @@
                     osPort = osNetworkStore.ports()
                             .stream()
                             .filter(p -> p.getvNicType().equals(DIRECT) && p.getProfile().get(PCISLOT) != null)
-                            .filter(p -> getIntfNameFromPciAddress(p).equals(portName))
+                            .filter(p -> Objects.requireNonNull(getIntfNameFromPciAddress(p)).equals(portName))
                             .findFirst();
                     return osPort.orElse(null);
 
@@ -484,11 +484,11 @@
                 ByteBuffer.wrap(ethRequest.serialize())));
 
         externalPeerRouterMap.put(targetIp.toString(),
-                                    DefaultExternalPeerRouter.builder()
-                                                    .ipAddress(targetIp)
-                                                    .macAddress(MacAddress.NONE)
-                                                    .vlanId(vlanId)
-                                                    .build());
+                DefaultExternalPeerRouter.builder()
+                        .ipAddress(targetIp)
+                        .macAddress(MacAddress.NONE)
+                        .vlanId(vlanId)
+                        .build());
 
         log.info("Initializes external peer router map with peer router IP {}", targetIp.toString());
     }
@@ -641,7 +641,7 @@
 
         return subnets(network.getId()).stream()
                 .filter(s -> IpPrefix.valueOf(s.getCidr()).contains(ipAddress))
-                .map(s -> s.getGateway())
+                .map(Subnet::getGateway)
                 .findAny().orElse(null);
     }
 
@@ -704,4 +704,4 @@
 
         return externalSubnet.map(subnet -> IpAddress.valueOf(subnet.getGateway())).orElse(null);
     }
-}
+}
\ No newline at end of file
