-
Notifications
You must be signed in to change notification settings - Fork 5
/
Engine.java
72 lines (60 loc) · 1.88 KB
/
Engine.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package org.genericsystem.kernel;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.genericsystem.api.core.ApiStatics;
import org.genericsystem.common.AbstractCache;
import org.genericsystem.common.AbstractCache.ContextEventListener;
import org.genericsystem.common.Root;
import org.genericsystem.common.Generic;
import org.genericsystem.common.GenericBuilder.SetSystemBuilder;
import org.genericsystem.common.Statics;
import org.genericsystem.common.SystemCache;
/**
* @author Nicolas Feybesse
*
*/
public class Engine extends AbstractServer {
public Engine(Class<?>... userClasses) {
this(null, userClasses);
}
public Engine(String persistentDirectoryPath, Class<?>... userClasses) {
init(this,
buildHandler(getClass(), (Generic) this, Collections.emptyList(), Statics.ENGINE_VALUE,
Collections.emptyList(), ApiStatics.TS_SYSTEM, ApiStatics.SYSTEM_TS));
startSystemCache(userClasses);
archiver = new Archiver(this, persistentDirectoryPath);
isInitialized = true;
newCache().start();
}
@Override
protected SystemCache buildSystemCache(Root root) {
return new SystemCache(root) {
@Override
protected Generic getOrBuild(AbstractCache cache, Class<?> clazz, Generic meta, List<Generic> overrides,
Serializable value, List<Generic> components) {
// TODO Auto-generated method stub
return new SetSystemBuilder(cache, clazz, meta, overrides, value, components).resolve();
}
};
}
@Override
protected Generic init(Generic generic, DefaultHandler handler) {
return super.init(generic, handler);
}
@Override
public Cache getCurrentCache() {
return (Cache) super.getCurrentCache();
}
@Override
public Engine getRoot() {
return this;
}
@Override
public Cache newCache() {
return new Cache(this);
}
public Cache newCache(ContextEventListener<Generic> listener) {
return new Cache(this, listener);
}
}