This is an automated email from the ASF dual-hosted git repository.

mariofusco pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git


The following commit(s) were added to refs/heads/main by this push:
     new d62dde5af1 DROOLS-7552: improve updateObjectTypesList() (#5552)
d62dde5af1 is described below

commit d62dde5af1ff99d4f0419c15811de9eebf7d50f8
Author: nprentza <[email protected]>
AuthorDate: Fri Oct 13 09:35:26 2023 +0300

    DROOLS-7552: improve updateObjectTypesList() (#5552)
    
    * updateObjectTypesList() improvements
    
    * use isEmpty with findAny
---
 .../SimpleSerializationReliableRefObjectStore.java | 28 +++++++---------------
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git 
a/drools-reliability/drools-reliability-core/src/main/java/org/drools/reliability/core/SimpleSerializationReliableRefObjectStore.java
 
b/drools-reliability/drools-reliability-core/src/main/java/org/drools/reliability/core/SimpleSerializationReliableRefObjectStore.java
index 53edfafa26..747df903ef 100644
--- 
a/drools-reliability/drools-reliability-core/src/main/java/org/drools/reliability/core/SimpleSerializationReliableRefObjectStore.java
+++ 
b/drools-reliability/drools-reliability-core/src/main/java/org/drools/reliability/core/SimpleSerializationReliableRefObjectStore.java
@@ -23,23 +23,20 @@ import org.drools.core.common.Storage;
 
 import java.lang.reflect.Field;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.IdentityHashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 public class SimpleSerializationReliableRefObjectStore extends 
SimpleSerializationReliableObjectStore {
 
-    private Map<String, Long> uniqueObjectTypesInStore;  // object type name, 
occurances
+    private Set<String> uniqueObjectTypesInStorage;
     private transient IdentityHashMap<Object, Long> inverseStorage;
 
     public SimpleSerializationReliableRefObjectStore(Storage<Long, 
StoredObject> storage) {
         super(storage);
-        uniqueObjectTypesInStore = new HashMap<>();
+        uniqueObjectTypesInStorage = new HashSet<>();
         setInverseStorage(storage);
         if (!storage.isEmpty()) {
             updateObjectTypesList();
@@ -119,32 +116,25 @@ public class SimpleSerializationReliableRefObjectStore 
extends SimpleSerializati
 
     private List<Field> getReferencedObjects(Object object) {
         Field[] fields = object.getClass().getDeclaredFields();
-
         return Arrays.stream(fields)
-                .filter(field -> 
uniqueObjectTypesInStore.containsKey(field.getType().getName()))
+                .filter(field -> 
uniqueObjectTypesInStorage.contains(field.getType().getName()))
                 .collect(Collectors.toList());
     }
 
     private void updateObjectTypesList(Object object) {
-        uniqueObjectTypesInStore.put(object.getClass().getName(),
-                storage.values().stream().filter(sObject -> 
sObject.getObject().getClass().equals(object.getClass())).count());
-        // if count==0 then remove entry
-        if (uniqueObjectTypesInStore.get(object.getClass().getName()) == 0) {
-            uniqueObjectTypesInStore.remove(object.getClass().getName());
+        if (!inverseStorage.keySet().stream().filter(sObject -> 
sObject.getClass().equals(object.getClass())).findAny().isEmpty()){
+            uniqueObjectTypesInStorage.add(object.getClass().getName());
+        }else{
+            uniqueObjectTypesInStorage.remove(object.getClass().getName());
         }
     }
 
     private void updateObjectTypesList() {
         // list of unique object types in storage
-        Set<String> uTypeNames = new HashSet<String>();
+        uniqueObjectTypesInStorage.clear();
         storage.values().forEach(sObject -> {
-            uTypeNames.add(sObject.getObject().getClass().getName());
+            
uniqueObjectTypesInStorage.add(sObject.getObject().getClass().getName());
         });
-        // add unique object types + their occurrences in the 
uniqueObjectTypesInStore
-        uniqueObjectTypesInStore.putAll(storage.values().stream()
-                .map(sObject -> sObject.getObject().getClass().getName())
-                .filter(uTypeNames::contains)
-                .collect(Collectors.groupingBy(Function.identity(), 
Collectors.counting())));
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to