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;
19
20 import java.util.HashMap;
21 import java.util.Map;
22
23 import org.apache.commons.jxpath.AbstractFactory;
24 import org.apache.commons.jxpath.JXPathContext;
25 import org.apache.commons.jxpath.NestedTestBean;
26 import org.apache.commons.jxpath.Pointer;
27 import org.apache.commons.jxpath.TestBean;
28 import org.apache.commons.jxpath.TestMixedModelBean;
29
30
31
32
33 public class TestMixedModelFactory 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 "nestedBean":
43 ((TestBean) parent).setNestedBean(new NestedTestBean("newName"));
44 return true;
45 case "beans": {
46 final TestBean bean = (TestBean) parent;
47 if (bean.getBeans() == null || index >= bean.getBeans().length) {
48 bean.setBeans(new NestedTestBean[index + 1]);
49 }
50 bean.getBeans()[index] = new NestedTestBean("newName");
51 return true;
52 }
53 case "map":
54 ((TestBean) parent).setMap(new HashMap());
55 return true;
56 case "TestKey5": {
57 final TestBean tb = new TestBean();
58 tb.setNestedBean(null);
59 tb.setBeans(null);
60 ((Map) parent).put(name, tb);
61 return true;
62 }
63 case "matrix": {
64 final int[][] matrix = new int[2][];
65 matrix[0] = new int[1];
66
67 ((TestMixedModelBean) parent).setMatrix(matrix);
68 return true;
69 }
70 default:
71 break;
72 }
73 return false;
74 }
75
76 @Override
77 public boolean declareVariable(final JXPathContext context, final String name) {
78 return false;
79 }
80 }