summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/data/IContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/data/IContext.java')
-rw-r--r--src/main/java/bjc/data/IContext.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/bjc/data/IContext.java b/src/main/java/bjc/data/IContext.java
new file mode 100644
index 0000000..a1073f1
--- /dev/null
+++ b/src/main/java/bjc/data/IContext.java
@@ -0,0 +1,18 @@
+package bjc.data;
+
+public interface IContext {
+ void register(String name, Object o);
+
+ IContext getParent();
+
+ Object get(String name);
+
+ <T> T get(Class<T> contract);
+
+ default <T> T get(String name, Class<T> contract) {
+ Object obj = get(name);
+ return obj == null
+ ? getParent().get(name, contract)
+ : contract.cast(obj);
+ };
+}