]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.impl/src/org/simantics/db/impl/ForPossibleRelatedValueProcedure.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / ForPossibleRelatedValueProcedure.java
1 package org.simantics.db.impl;
2
3 import org.simantics.db.ReadGraph;
4 import org.simantics.db.RelationInfo;
5 import org.simantics.db.exception.DatabaseException;
6 import org.simantics.db.procedure.SyncProcedure;
7
8 public final class ForPossibleRelatedValueProcedure<T> implements SyncProcedure<T> {
9
10         public final int predicateKey;
11         public final int[] clusterKey;
12         public final int[] predicateReference;
13         public final RelationInfo info;
14         public final ClusterI.CompleteTypeEnum completeType;
15         private final SyncProcedure<T> user;
16         
17         public ForPossibleRelatedValueProcedure(int predicateKey, RelationInfo info, SyncProcedure<T> user) {
18                 this.predicateKey = predicateKey;
19                 this.completeType = ClusterTraitsBase.getCompleteTypeFromResourceKey(predicateKey); 
20                 this.info = info;
21                 this.user = user;
22                 this.clusterKey = new int[32*8];
23                 this.predicateReference = new int[32*8];
24         }
25         
26         @Override
27         public void execute(ReadGraph graph, T result) throws DatabaseException {
28                 user.execute(graph, result);
29         }
30
31         @Override
32         public void exception(ReadGraph graph, Throwable throwable) throws DatabaseException {
33                 user.exception(graph, throwable);
34         }
35         
36 };