1
2
3
4
5
6
7 package org.asyrinx.joey.gen.task;
8
9 import java.util.Map;
10
11 import ognl.ObjectPropertyAccessor;
12 import ognl.OgnlException;
13
14 import org.apache.velocity.context.Context;
15
16 /***
17 * @author takeshi
18 */
19 public class VelocityVariableAccessor extends ObjectPropertyAccessor {
20
21 public VelocityVariableAccessor(Context context) {
22 super();
23 this.context = context;
24 }
25
26 private final Context context;
27
28 public Object getProperty(Map context, Object target, Object name) throws OgnlException {
29 final String key = toKey(name);
30 if (key != null)
31 return this.context.get(key);
32 return super.getProperty(context, target, name);
33 }
34
35 public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException {
36 final String key = toKey(name);
37 if (key != null)
38 this.context.put(key, value);
39 super.setProperty(context, target, name, value);
40 }
41
42 private static final String VELOCITY_MARK = "$";
43
44 private static final String VELOCITY_BRACKET_START = "{";
45
46 private static final String VELOCITY_BRACKET_END = "}";
47
48 private static final String toKey(Object name) {
49 System.out.println("VelocityVariableAccessor: name=" + name);
50 if (name == null)
51 return null;
52 String key = name.toString();
53 if (!name.toString().startsWith(VELOCITY_MARK))
54 return null;
55 key = key.substring(1);
56 if (key.startsWith(VELOCITY_BRACKET_START) && key.endsWith(VELOCITY_BRACKET_END))
57 key = key.substring(1, key.length() - 2);
58 System.out.println("VelocityVariableAccessor: key=" + key);
59 return key;
60 }
61
62 }