1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jxpath.ri.model.dynabeans;
18
19 import org.apache.commons.beanutils.DynaBean;
20 import org.apache.commons.jxpath.AbstractFactory;
21 import org.apache.commons.jxpath.JXPathContext;
22 import org.apache.commons.jxpath.NestedTestBean;
23 import org.apache.commons.jxpath.Pointer;
24
25
26
27
28
29
30
31 public class TestDynaBeanFactory extends AbstractFactory {
32
33
34
35 public boolean createObject(
36 JXPathContext context,
37 Pointer pointer,
38 Object parent,
39 String name,
40 int index)
41 {
42 if (name.equals("nestedBean")) {
43 ((DynaBean) parent).set(
44 "nestedBean",
45 new NestedTestBean("newName"));
46 return true;
47 }
48 else if (name.equals("beans")) {
49 DynaBean bean = (DynaBean) parent;
50 Object beans[] = (Object[]) bean.get("beans");
51 if (beans == null || index >= beans.length) {
52 beans = new NestedTestBean[index + 1];
53 bean.set("beans", beans);
54 }
55 beans[index] = new NestedTestBean("newName");
56 return true;
57 }
58 else if (name.equals("integers")) {
59 DynaBean bean = (DynaBean) parent;
60 bean.set("integers", index, new Integer(0));
61 return true;
62 }
63 return false;
64 }
65
66
67
68 public boolean declareVariable(JXPathContext context, String name) {
69 context.getVariables().declareVariable(name, null);
70 return true;
71 }
72 }