1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl3;
18
19 import java.util.Collections;
20 import java.util.Map;
21 import org.apache.commons.jexl3.annotations.NoJexl;
22
23
24
25
26 public class JexlEvalContext implements
27 JexlContext,
28 JexlContext.NamespaceResolver,
29 JexlContext.OptionsHandle {
30
31 private static final Map<String,Object> EMPTY_MAP = Collections.<String,Object>emptyMap();
32
33 private final JexlContext vars;
34
35 private final JexlContext.NamespaceResolver ns;
36
37 private final JexlOptions options = new JexlOptions();
38
39
40
41
42 @NoJexl
43 public JexlEvalContext() {
44 this(EMPTY_MAP);
45 }
46
47
48
49
50
51
52
53 @NoJexl
54 public JexlEvalContext(final Map<String, Object> map) {
55 this.vars = map == EMPTY_MAP ? new MapContext() : new MapContext(map);
56 this.ns = null;
57 }
58
59
60
61
62
63 @NoJexl
64 public JexlEvalContext(final JexlContext context) {
65 this(context, context instanceof JexlContext.NamespaceResolver? (JexlContext.NamespaceResolver) context : null);
66 }
67
68
69
70
71
72
73 @NoJexl
74 public JexlEvalContext(final JexlContext context, final JexlContext.NamespaceResolver namespace) {
75 this.vars = context != null? context : JexlEngine.EMPTY_CONTEXT;
76 this.ns = namespace != null? namespace : JexlEngine.EMPTY_NS;
77 }
78
79 @Override
80 @NoJexl
81 public boolean has(final String name) {
82 return vars.has(name);
83 }
84
85 @Override
86 @NoJexl
87 public Object get(final String name) {
88 return vars.get(name);
89 }
90
91 @Override
92 @NoJexl
93 public void set(final String name, final Object value) {
94 vars.set(name, value);
95 }
96
97 @Override
98 @NoJexl
99 public Object resolveNamespace(final String name) {
100 return ns != null? ns.resolveNamespace(name) : null;
101 }
102
103 @Override
104 @NoJexl
105 public JexlOptions getEngineOptions() {
106 return options;
107 }
108
109 }