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.content2bean.impl;
35
36 import javax.inject.Singleton;
37
38 import info.magnolia.cms.core.Content;
39 import info.magnolia.content2bean.TransformationState;
40 import info.magnolia.content2bean.TypeDescriptor;
41
42 import org.apache.commons.collections.ArrayStack;
43
44
45
46
47
48
49
50 @Singleton
51 public class TransformationStateImpl implements TransformationState {
52
53 protected ArrayStack typeStack = new ArrayStack();
54
55 protected ArrayStack beanStack = new ArrayStack();
56
57 protected ArrayStack contentStack = new ArrayStack();
58
59 @Override
60 public Object getCurrentBean() {
61 return beanStack.peek();
62 }
63
64 @Override
65 public void setCurrentBean(Object bean) {
66 beanStack.set(beanStack.size() - 1, bean);
67 }
68
69 @Override
70 public TypeDescriptor getCurrentType() {
71 return (TypeDescriptor) typeStack.peek();
72 }
73
74 @Override
75 public Content getCurrentContent() {
76 return (Content) contentStack.peek();
77 }
78
79 @Override
80 public Object peekBean(int pos) {
81 return beanStack.peek(pos);
82 }
83
84 @Override
85 public TypeDescriptor peekType(int pos) {
86 return (TypeDescriptor) typeStack.peek(pos);
87 }
88
89 @Override
90 public Content peekContent(int pos) {
91 return (Content) contentStack.peek(pos);
92 }
93
94 @Override
95 public void popBean() {
96 beanStack.pop();
97 }
98
99 @Override
100 public void popType() {
101 typeStack.pop();
102 }
103
104 @Override
105 public void popContent() {
106 contentStack.pop();
107 }
108
109 @Override
110 public void pushBean(Object bean) {
111 beanStack.push(bean);
112 }
113
114 @Override
115 public void pushType(TypeDescriptor type) {
116 typeStack.push(type);
117 }
118
119 @Override
120 public void pushContent(Content node) {
121 contentStack.push(node);
122 }
123
124 @Override
125 public int getLevel() {
126 return Math.max(Math.max(typeStack.size(), beanStack.size()), contentStack.size());
127 }
128 }