Author: bblfish
Date: Thu Jun 23 19:56:21 2011
New Revision: 1139049

URL: http://svn.apache.org/viewvc?rev=1139049&view=rev
Log:
CLEREZZA-510 replaced recursive call on toTriples method with loop as it was 
not tail recursive. Also removed @deprectated on EasyGraph class.

Modified:
    
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala

Modified: 
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala?rev=1139049&r1=1139048&r2=1139049&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
 (original)
+++ 
incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
 Thu Jun 23 19:56:21 2011
@@ -24,11 +24,11 @@ import java.lang.Boolean
 import java.net.{URL, URI}
 import org.apache.clerezza.rdf.utils.UnionMGraph
 import org.apache.clerezza.rdf.utils.GraphNode
-import scala.collection.mutable.HashMap
 import org.apache.clerezza.rdf.ontologies.{XSD, RDF}
 import org.apache.clerezza.rdf.core._
 import impl._
 import java.util.{HashSet, Date}
+import collection.mutable.{ListBuffer, HashMap}
 
 object EasyGraph {
 
@@ -108,8 +108,6 @@ class EzLiteral(lexicalForm: String) ext
  * @created: 20/04/2011
  */
 
-@deprecated("Don't use yet other than for trying out this class as it may be 
merged with another class or changed dramatically." +
-       " Send feedback to CLEREZZA-510. ")
 class EasyGraph(val graph: HashSet[Triple]) extends SimpleMGraph(graph) {
        val namedBnodes = new HashMap[String,EasyGraphNode]
 
@@ -320,19 +318,28 @@ class EasyGraphNode(val ref: NonLiteral,
                        graph.add(new TripleImpl(ref, rel, obj))
                }
 
-               private def toTriples[T <: Resource](headRef: NonLiteral, list: 
List[T]): List[Triple] = {
-                       list match {
-                               case head :: next :: rest => {
-                                       val nextRef = new BNode
-                                       new TripleImpl(headRef, RDF.first, 
head) ::
-                                               new TripleImpl(headRef, 
RDF.rest, nextRef) ::
-                                               toTriples(nextRef, next :: rest)
+               private def toTriples[T <: Resource](head: NonLiteral,list : 
List[T]): List[Triple] = {
+                       val answer = new ListBuffer[Triple]
+                       var varList = list
+                       var headRef = head
+                       while (varList != Nil) {
+                               varList = varList match {
+                                       case head :: next :: rest => {
+                                               val nextRef = new BNode
+                                               answer.append(new 
TripleImpl(headRef, RDF.first, head))
+                                               answer.append(new 
TripleImpl(headRef, RDF.rest, nextRef))
+                                               headRef = nextRef
+                                               next :: rest
+                                       }
+                                       case head :: Nil => {
+                                               answer.append(new 
TripleImpl(headRef, RDF.first, head))
+                                               answer.append(new 
TripleImpl(headRef, RDF.rest, RDF.nil))
+                                               Nil
+                                       }
+                                       case Nil => Nil
                                }
-                               case head :: nil => {
-                                       new TripleImpl(headRef, RDF.first, 
head) :: new TripleImpl(headRef, RDF.rest, RDF.nil) :: Nil
-                               }
-                               case nil => Nil
                        }
+                       answer.toList
                }
 
 


Reply via email to