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 java.util.Locale;
21
22 import org.apache.commons.beanutils.LazyDynaBean;
23 import org.apache.commons.beanutils.LazyDynaClass;
24 import org.apache.commons.jxpath.ri.QName;
25 import org.apache.commons.jxpath.ri.model.NodePointer;
26 import org.apache.commons.jxpath.ri.model.NodePointerFactory;
27 import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
28
29
30
31
32
33
34
35
36 public class StrictLazyDynaBeanPointerFactory implements NodePointerFactory {
37
38
39
40
41 private static final class StrictLazyDynaBeanPointer extends DynaBeanPointer {
42
43 private static final long serialVersionUID = 1L;
44 private final LazyDynaBean lazyDynaBean;
45
46
47
48
49
50
51
52
53 public StrictLazyDynaBeanPointer(final NodePointer parent, final QName qName, final LazyDynaBean lazyDynaBean) {
54 super(parent, qName, lazyDynaBean);
55 this.lazyDynaBean = lazyDynaBean;
56 }
57
58
59
60
61
62
63
64
65 public StrictLazyDynaBeanPointer(final QName qName, final LazyDynaBean lazyDynaBean, final Locale locale) {
66 super(qName, lazyDynaBean, locale);
67 this.lazyDynaBean = lazyDynaBean;
68 }
69
70
71
72
73 @Override
74 public PropertyPointer getPropertyPointer() {
75 return new DynaBeanPropertyPointer(this, lazyDynaBean) {
76
77 private static final long serialVersionUID = 1L;
78
79 @Override
80 protected boolean isActualProperty() {
81 return ((LazyDynaClass) lazyDynaBean.getDynaClass()).isDynaProperty(getPropertyName());
82 }
83 };
84 }
85 }
86
87
88
89
90 public StrictLazyDynaBeanPointerFactory() {
91
92 }
93
94
95
96
97 @Override
98 public NodePointer createNodePointer(final NodePointer parent, final QName qName, final Object object) {
99 return object instanceof LazyDynaBean ? new StrictLazyDynaBeanPointer(parent, qName, (LazyDynaBean) object) : null;
100 }
101
102
103
104
105 @Override
106 public NodePointer createNodePointer(final QName qName, final Object object, final Locale locale) {
107 return object instanceof LazyDynaBean ? new StrictLazyDynaBeanPointer(qName, (LazyDynaBean) object, locale) : null;
108 }
109
110
111
112
113 @Override
114 public int getOrder() {
115 return DynaBeanPointerFactory.DYNA_BEAN_POINTER_FACTORY_ORDER - 1;
116 }
117 }