1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.jxpath.ri.model.dynamic;
19
20 import java.util.HashMap;
21 import java.util.Map;
22 import java.util.Vector;
23
24 import org.apache.commons.jxpath.AbstractFactory;
25 import org.apache.commons.jxpath.JXPathContext;
26 import org.apache.commons.jxpath.NestedTestBean;
27 import org.apache.commons.jxpath.Pointer;
28 import org.apache.commons.jxpath.TestBean;
29
30
31
32
33 public class TestDynamicPropertyFactory extends AbstractFactory {
34
35
36
37
38
39 @Override
40 public boolean createObject(final JXPathContext context, final Pointer pointer, final Object parent, final String name, final int index) {
41 switch (name) {
42 case "map":
43 ((TestBean) parent).setMap(new HashMap());
44 return true;
45 case "TestKey1":
46 ((Map) parent).put(name, "");
47 return true;
48 case "TestKey2":
49 ((Map) parent).put(name, new NestedTestBean("newName"));
50 return true;
51 case "TestKey3": {
52 final Vector v = new Vector();
53 for (int i = 0; i <= index; i++) {
54 v.add(null);
55 }
56 ((Map) parent).put(name, v);
57 return true;
58 }
59 case "TestKey4":
60 ((Map) parent).put(name, new Object[] { new TestBean() });
61 return true;
62 default:
63 break;
64 }
65 return false;
66 }
67
68 @Override
69 public boolean declareVariable(final JXPathContext context, final String name) {
70 return false;
71 }
72 }