Skip to content
Snippets Groups Projects
Commit 0b651ac3 authored by Dominique Marcadet's avatar Dominique Marcadet
Browse files

Merge branch '64-npe-in-sclutilities-getanyln-if-lninst-is-null' into 'master'

Resolve "NPE in SclUtilities.getAnyLN() if lnInst is null"

Closes #64

See merge request !62
parents 8594ebb0 56ebb322
No related branches found
No related tags found
1 merge request!62Resolve "NPE in SclUtilities.getAnyLN() if lnInst is null"
Pipeline #5166 passed
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
package fr.centralesupelec.edf.riseclipse.iec61850.scl.util; package fr.centralesupelec.edf.riseclipse.iec61850.scl.util;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
...@@ -59,6 +60,9 @@ public class SclUtilities { ...@@ -59,6 +60,9 @@ public class SclUtilities {
} }
public static Pair< IED, Integer > getIED( @NonNull SCL scl, @NonNull String iedName ) { public static Pair< IED, Integer > getIED( @NonNull SCL scl, @NonNull String iedName ) {
// protect against NPE
if( scl == null ) return Pair.of( null, 0 );
List< IED > res = List< IED > res =
scl scl
.getIED() .getIED()
...@@ -73,6 +77,9 @@ public class SclUtilities { ...@@ -73,6 +77,9 @@ public class SclUtilities {
} }
public static Pair< AccessPoint, Integer > getAccessPoint( @NonNull IED ied, @NonNull String apName ) { public static Pair< AccessPoint, Integer > getAccessPoint( @NonNull IED ied, @NonNull String apName ) {
// protect against NPE
if( ied == null ) return Pair.of( null, 0 );
List< AccessPoint > res = List< AccessPoint > res =
ied ied
.getAccessPoint() .getAccessPoint()
...@@ -87,9 +94,11 @@ public class SclUtilities { ...@@ -87,9 +94,11 @@ public class SclUtilities {
} }
public static Pair< LDevice, Integer > getLDevice( @NonNull AccessPoint accessPoint, @NonNull String ldInst ) { public static Pair< LDevice, Integer > getLDevice( @NonNull AccessPoint accessPoint, @NonNull String ldInst ) {
if( accessPoint.getServer() == null ) { // protect against NPE
return Pair.of( null, 0 ); if( ldInst == null ) return Pair.of( null, 0 );
} if( accessPoint == null ) return Pair.of( null, 0 );
if( accessPoint.getServer() == null ) return Pair.of( null, 0 );
List< LDevice > res = List< LDevice > res =
accessPoint accessPoint
.getServer() .getServer()
...@@ -105,6 +114,10 @@ public class SclUtilities { ...@@ -105,6 +114,10 @@ public class SclUtilities {
} }
public static Pair< LDevice, Integer > getLDevice( @NonNull IED ied, @NonNull String ldInst ) { public static Pair< LDevice, Integer > getLDevice( @NonNull IED ied, @NonNull String ldInst ) {
// protect against NPE
if( ldInst == null ) return Pair.of( null, 0 );
if( ied == null ) return Pair.of( null, 0 );
List< LDevice > res = List< LDevice > res =
ied ied
.getAccessPoint() .getAccessPoint()
...@@ -127,11 +140,16 @@ public class SclUtilities { ...@@ -127,11 +140,16 @@ public class SclUtilities {
if( "LLN0".equals( lnClass )) { if( "LLN0".equals( lnClass )) {
return Pair.of( lDevice.getLN0(), ( lDevice.getLN0() == null ) ? 0 : 1 ); return Pair.of( lDevice.getLN0(), ( lDevice.getLN0() == null ) ? 0 : 1 );
} }
// Null checks must be done as annotation-based null analysis is not enabled (issue #64)
if( lnClass == null ) return Pair.of( null, 0 );
if( lnInst == null ) return Pair.of( null, 0 );
List< LN > res = List< LN > res =
lDevice lDevice
.getLN() .getLN()
.stream() .stream()
.filter( ln -> lnClass.equals( ln.getLnClass() ) && lnInst.equals( ln.getInst() ) && prefix.equals( ln.getPrefix() )) .filter( ln -> lnClass.equals( ln.getLnClass() ) && lnInst.equals( ln.getInst() ) && Objects.equals( prefix, ln.getPrefix() ))
.collect( Collectors.toList() ); .collect( Collectors.toList() );
if( res.size() != 1 ) { if( res.size() != 1 ) {
return Pair.of( null, res.size() ); return Pair.of( null, res.size() );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment