memoizeit

fixed nullpointer for parameters

10/9/2019 3:02:35 AM

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceConcrete.java b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceConcrete.java
index 0c910f6..7b4a725 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceConcrete.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceConcrete.java
@@ -12,6 +12,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -42,6 +43,9 @@ public class OccurrenceConcrete extends Occurrence {
     }
 
     private void removeUnusedFields(Map<String, Object> map, String parameterType, Node<String> methodNode) {
+        if (map == null) {
+            return;
+        }
         Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
         while (iterator.hasNext()) {
             Map.Entry<String, Object> entry = iterator.next();
@@ -59,7 +63,7 @@ public class OccurrenceConcrete extends Occurrence {
             String parameterType = parameter.getType();
             if (parameter.getData() instanceof Collection) {
                 Collection collection = (Collection) parameter.getData();
-                if (!collection.isEmpty() && collection.stream().findAny().get() instanceof Map) {
+                if (!collection.isEmpty() && collection.stream().filter(Objects::nonNull).findAny().get() instanceof Map) {
                     Collection<Map<String, Object>> cast = collection;
                     cast.forEach(map -> removeUnusedFields(map, parameterType, methodNode));
                 }