]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ChildMapFactory.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / ChildMapFactory.java
1 package org.simantics.db.impl.query;
2
3 import org.simantics.db.ObjectResourceIdMap;
4 import org.simantics.db.exception.DatabaseException;
5
6 public class ChildMapFactory extends QueryFactoryBase {
7
8     @Override
9     public CacheEntryBase readKeyAndValue(QueryDeserializer deserializer) throws DatabaseException {
10         ChildMap result = reference(deserializer);
11         ObjectResourceIdMap<String> map = deserializer.createChildMap();
12         int size = deserializer.readLE4();
13         for(int i=0;i<size;i++) {
14             String key = deserializer.readString();
15             int r2 = deserializer.readResource();
16             map.putId(key, r2);
17         }
18         result.setResult(map);
19         result.setReady();
20         return result;
21     }
22     
23     @Override
24     public <T extends CacheEntryBase> T reference(QueryDeserializer deserializer) throws DatabaseException {
25         return (T)deserializer.readChildMap();
26     }
27
28 }