-
Notifications
You must be signed in to change notification settings - Fork 5
/
CheckedContext.java
53 lines (41 loc) · 1.25 KB
/
CheckedContext.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package org.genericsystem.common;
import java.io.Serializable;
import java.util.List;
import org.genericsystem.api.core.Snapshot;
import org.genericsystem.defaults.DefaultContext;
/**
* @author Nicolas Feybesse
*
*/
public abstract class CheckedContext implements DefaultContext<Generic> {
private final Root root;
private final Checker checker;
protected CheckedContext(Root root) {
assert root != null;
this.root = root;
this.checker = buildChecker();
}
// public abstract long getTs();
protected Checker buildChecker() {
return new Checker(this);
}
protected Checker getChecker() {
return checker;
}
@Override
public Root getRoot() {
return root;
}
protected void triggersMutation(Generic oldDependency, Generic newDependency) {
}
@Override
public abstract Snapshot<Generic> getDependencies(Generic ancestor);
public Generic get(Generic meta, List<Generic> overrides, Serializable value, List<Generic> components) {
meta = meta != null ? meta : (Generic) getRoot();
meta = meta.adjustMeta(components);
if (meta.getComponents().size() != components.size())
return null;
overrides = computeAndCheckOverridesAreReached(meta, overrides, value, components);
return meta.getDirectInstance(overrides, value, components);
}
}