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.dynabeans;
19
20 import org.apache.commons.beanutils.DynaBean;
21 import org.apache.commons.jxpath.AbstractFactory;
22 import org.apache.commons.jxpath.JXPathContext;
23 import org.apache.commons.jxpath.NestedTestBean;
24 import org.apache.commons.jxpath.Pointer;
25
26
27
28
29 public class TestDynaBeanFactory extends AbstractFactory {
30
31
32
33 @Override
34 public boolean createObject(final JXPathContext context, final Pointer pointer, final Object parent, final String name, final int index) {
35 switch (name) {
36 case "nestedBean":
37 ((DynaBean) parent).set("nestedBean", new NestedTestBean("newName"));
38 return true;
39 case "beans": {
40 final DynaBean bean = (DynaBean) parent;
41 Object beans[] = (Object[]) bean.get("beans");
42 if (beans == null || index >= beans.length) {
43 beans = new NestedTestBean[index + 1];
44 bean.set("beans", beans);
45 }
46 beans[index] = new NestedTestBean("newName");
47 return true;
48 }
49 case "integers": {
50 final DynaBean bean = (DynaBean) parent;
51 bean.set("integers", index, Integer.valueOf(0));
52 return true;
53 }
54 default:
55 break;
56 }
57 return false;
58 }
59
60
61
62 @Override
63 public boolean declareVariable(final JXPathContext context, final String name) {
64 context.getVariables().declareVariable(name, null);
65 return true;
66 }
67 }