summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-12-03 12:22:33 +0000
committerburaq <buraq@epfl.ch>2003-12-03 12:22:33 +0000
commitdec4538a461d1cc7fb493571466d6c2f2df431e3 (patch)
tree455b0b5ccebe2319fb07c76bb89ff9ac1dfce5e9
parent5488f9b4ae78cda29ad0cd3fdbf7ac3561323edf (diff)
downloadscala-dec4538a461d1cc7fb493571466d6c2f2df431e3.tar.gz
scala-dec4538a461d1cc7fb493571466d6c2f2df431e3.tar.bz2
scala-dec4538a461d1cc7fb493571466d6c2f2df431e3.zip
erroneous hash-consing fixed
-rw-r--r--sources/scala/xml/nobinding/NoBindingFactoryAdapter.scala51
1 files changed, 25 insertions, 26 deletions
diff --git a/sources/scala/xml/nobinding/NoBindingFactoryAdapter.scala b/sources/scala/xml/nobinding/NoBindingFactoryAdapter.scala
index afd0941bff..54c9ea5dcc 100644
--- a/sources/scala/xml/nobinding/NoBindingFactoryAdapter.scala
+++ b/sources/scala/xml/nobinding/NoBindingFactoryAdapter.scala
@@ -9,33 +9,32 @@ import scala.xml.{Node,Text,FactoryAdapter} ;
*/
class NoBindingFactoryAdapter extends FactoryAdapter {
- def nodeContainsText( label:java.lang.String ):boolean = true;
-
- /* default behaviour is hash-consing */
- val cache = new HashMap[Element,Element];
-
- def createNode( label: String,
- attrs: HashMap[String,String],
- children: List[Node] ):Element = {
-
- val el = new Element( label, children ) {
- override def attributes = attrs;
- };
-
- cache.get( el ).match{
- case Some(cachedElem) =>
- //System.err.println("[using cached elem +"+cachedElem.toXML+"!]");
- cachedElem
- case None =>
- cache.update( el, el );
- el
- }
- }
+ def nodeContainsText( label:java.lang.String ):boolean = true;
+
+ /* default behaviour is hash-consing */
+ val cache = new HashMap[int,Element]();
- def createText( text:String ) = Text( text );
+ def createNode( label: String, attrs: HashMap[String,String], children: List[Node] ):Element = {
- override def loadXML( url:URL ):Element = loadXML( url.getFile() );
+ val elHashCode = Utility.hashCode( label, attrs, children ) ;
- override def loadXML( filename:String ):Element =
- super.loadXML( filename ).asInstanceOf[ Element ]
+ cache.get( elHashCode ).match{
+ case Some(cachedElem) =>
+ //System.err.println("[using cached elem +"+cachedElem.toXML+"!]");
+ cachedElem
+ case None =>
+ val el = new Element( label, children ) {
+ override def attributes = attrs;
+ };
+ cache.update( elHashCode, el );
+ el
+ }
}
+
+ def createText( text:String ) = Text( text );
+
+ override def loadXML( url:URL ):Element = loadXML( url.getFile() );
+
+ override def loadXML( filename:String ):Element =
+ super.loadXML( filename ).asInstanceOf[ Element ]
+}