1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.jcr.node2bean.impl;
35
36 import javax.inject.Singleton;
37 import javax.jcr.Node;
38
39 import org.apache.commons.collections.ArrayStack;
40
41 import info.magnolia.jcr.node2bean.TypeDescriptor;
42 import info.magnolia.jcr.node2bean.TransformationState;
43
44
45
46
47 @Singleton
48 public class TransformationStateImpl implements TransformationState {
49
50 protected ArrayStack typeStack = new ArrayStack();
51
52 protected ArrayStack beanStack = new ArrayStack();
53
54 protected ArrayStack nodeStack = new ArrayStack();
55
56 @Override
57 public Object getCurrentBean() {
58 return beanStack.peek();
59 }
60
61 @Override
62 public void setCurrentBean(Object bean) {
63 beanStack.set(beanStack.size() - 1, bean);
64 }
65
66 @Override
67 public TypeDescriptor getCurrentType() {
68 return (TypeDescriptor) typeStack.peek();
69 }
70
71 @Override
72 public Node getCurrentNode() {
73 return (Node) nodeStack.peek();
74 }
75
76 @Override
77 public Object peekBean(int pos) {
78 return beanStack.peek(pos);
79 }
80
81 @Override
82 public TypeDescriptor peekType(int pos) {
83 return (TypeDescriptor) typeStack.peek(pos);
84 }
85
86 @Override
87 public Node peekNode(int pos) {
88 return (Node) nodeStack.peek(pos);
89 }
90
91 @Override
92 public void popBean() {
93 beanStack.pop();
94 }
95
96 @Override
97 public void popType() {
98 typeStack.pop();
99 }
100
101 @Override
102 public void popNode() {
103 nodeStack.pop();
104 }
105
106 @Override
107 public void pushBean(Object bean) {
108 beanStack.push(bean);
109 }
110
111 @Override
112 public void pushType(TypeDescriptor type) {
113 typeStack.push(type);
114 }
115
116 @Override
117 public void pushNode(Node node) {
118 nodeStack.push(node);
119 }
120
121 @Override
122 public int getLevel() {
123 return Math.max(Math.max(typeStack.size(), beanStack.size()), nodeStack.size());
124 }
125 }