1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jxpath.ri.model;
18
19 import java.util.HashMap;
20 import java.util.Map;
21
22 import org.apache.commons.jxpath.AbstractFactory;
23 import org.apache.commons.jxpath.JXPathContext;
24 import org.apache.commons.jxpath.NestedTestBean;
25 import org.apache.commons.jxpath.Pointer;
26 import org.apache.commons.jxpath.TestBean;
27 import org.apache.commons.jxpath.TestMixedModelBean;
28
29
30
31
32
33
34
35 public class TestMixedModelFactory extends AbstractFactory {
36
37
38
39
40
41 public boolean createObject(
42 JXPathContext context,
43 Pointer pointer,
44 Object parent,
45 String name,
46 int index)
47 {
48 if (name.equals("nestedBean")) {
49 ((TestBean) parent).setNestedBean(new NestedTestBean("newName"));
50 return true;
51 }
52 else if (name.equals("beans")) {
53 TestBean bean = (TestBean) parent;
54 if (bean.getBeans() == null || index >= bean.getBeans().length) {
55 bean.setBeans(new NestedTestBean[index + 1]);
56 }
57 bean.getBeans()[index] = new NestedTestBean("newName");
58 return true;
59 }
60 else if (name.equals("map")) {
61 ((TestBean) parent).setMap(new HashMap());
62 return true;
63 }
64 else if (name.equals("TestKey5")) {
65 TestBean tb = new TestBean();
66 tb.setNestedBean(null);
67 tb.setBeans(null);
68 ((Map) parent).put(name, tb);
69 return true;
70 }
71 else if (name.equals("matrix")) {
72 int[][] matrix = new int[2][];
73 matrix[0] = new int[1];
74
75 ((TestMixedModelBean) parent).setMatrix(matrix);
76 return true;
77 }
78 return false;
79 }
80
81 public boolean declareVariable(JXPathContext context, String name) {
82 return false;
83 }
84 }