]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryFactoryBase.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / QueryFactoryBase.java
1 package org.simantics.db.impl.query;
2
3 import org.simantics.db.exception.DatabaseException;
4
5 abstract public class QueryFactoryBase implements QueryFactory {
6
7     abstract protected CacheEntryBase readKeyAndValue(QueryDeserializer deserializer) throws DatabaseException;
8
9     public void readParents(QueryDeserializer deserializer, CacheEntryBase entry) throws DatabaseException {
10         int ps = deserializer.readLE4();
11         for(int i=0;i<ps;i++) {
12             QueryFactory qf = deserializer.readFactory();
13             CacheEntryBase ceb = qf.reference(deserializer);
14             entry.addParent(ceb);
15         }
16     }
17     
18     @Override
19     final public CacheEntryBase read(QueryDeserializer deserializer) throws DatabaseException {
20         CacheEntryBase entry = readKeyAndValue(deserializer);
21         readParents(deserializer, entry);
22         return entry;
23     }
24
25 }