@@ -38,10 +38,16 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
38
38
var rootElem : Node = null
39
39
40
40
val buffer = new StringBuilder ()
41
- var attribStack = List .empty[MetaData ]
42
- var hStack = List .empty[Node ] // [ element ] contains siblings
43
- var tagStack = List .empty[String ]
44
- var scopeStack = List .empty[NamespaceBinding ]
41
+ var attribs = List .empty[MetaData ]
42
+ var nodes = List .empty[Node ] // [ element ] contains siblings
43
+ var tags = List .empty[String ]
44
+ var scopes = List .empty[NamespaceBinding ]
45
+
46
+ // Fix compatability issues. Add MiMa exclusion rules, instead?
47
+ var attribStack = collection.mutable.Stack (attribs)
48
+ var hStack = collection.mutable.Stack (nodes)
49
+ var tagStack = collection.mutable.Stack (tags)
50
+ var scopeStack = collection.mutable.Stack (scopes)
45
51
46
52
var curTag : String = null
47
53
var capture : Boolean = false
@@ -121,17 +127,17 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
121
127
attributes : Attributes ): Unit =
122
128
{
123
129
captureText()
124
- tagStack = curTag :: tagStack
130
+ tags = curTag :: tags
125
131
curTag = qname
126
132
127
133
val localName = splitName(qname)._2
128
134
capture = nodeContainsText(localName)
129
135
130
- hStack = null :: hStack
136
+ nodes = null :: nodes
131
137
var m : MetaData = Null
132
138
var scpe : NamespaceBinding =
133
- if (scopeStack .isEmpty) TopScope
134
- else scopeStack .head
139
+ if (scopes .isEmpty) TopScope
140
+ else scopes .head
135
141
136
142
for (i <- 0 until attributes.getLength()) {
137
143
val qname = attributes getQName i
@@ -146,16 +152,16 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
146
152
m = Attribute (Option (pre), key, Text (value), m)
147
153
}
148
154
149
- scopeStack = scpe :: scopeStack
150
- attribStack = m :: attribStack
155
+ scopes = scpe :: scopes
156
+ attribs = m :: attribs
151
157
}
152
158
153
159
/**
154
160
* captures text, possibly normalizing whitespace
155
161
*/
156
162
def captureText (): Unit = {
157
163
if (capture && buffer.length > 0 )
158
- hStack = createText(buffer.toString) :: hStack
164
+ nodes = createText(buffer.toString) :: nodes
159
165
160
166
buffer.clear()
161
167
}
@@ -169,24 +175,24 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
169
175
*/
170
176
override def endElement (uri : String , _localName : String , qname : String ): Unit = {
171
177
captureText()
172
- val metaData = attribStack .head
173
- attribStack = attribStack .tail
178
+ val metaData = attribs .head
179
+ attribs = attribs .tail
174
180
175
181
// reverse order to get it right
176
- val v = hStack .takeWhile(_ != null ).reverse
177
- hStack = hStack .dropWhile(_ != null ) match {
182
+ val v = nodes .takeWhile(_ != null ).reverse
183
+ nodes = nodes .dropWhile(_ != null ) match {
178
184
case null :: hs => hs
179
185
case hs => hs
180
186
}
181
187
val (pre, localName) = splitName(qname)
182
- val scp = scopeStack .head
183
- scopeStack = scopeStack .tail
188
+ val scp = scopes .head
189
+ scopes = scopes .tail
184
190
185
191
// create element
186
192
rootElem = createNode(pre, localName, metaData, scp, v)
187
- hStack = rootElem :: hStack
188
- curTag = tagStack .head
189
- tagStack = tagStack .tail
193
+ nodes = rootElem :: nodes
194
+ curTag = tags .head
195
+ tags = tags .tail
190
196
capture = curTag != null && nodeContainsText(curTag) // root level
191
197
}
192
198
@@ -195,6 +201,6 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
195
201
*/
196
202
override def processingInstruction (target : String , data : String ) {
197
203
captureText()
198
- hStack = hStack .reverse_::: (createProcInstr(target, data).toList)
204
+ nodes = nodes .reverse_::: (createProcInstr(target, data).toList)
199
205
}
200
206
}
0 commit comments