You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ha...@apache.org on 2011/01/12 06:28:21 UTC

svn commit: r1057991 - in /camel/trunk/components/camel-scala/src: main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala

Author: hadrian
Date: Wed Jan 12 05:28:21 2011
New Revision: 1057991

URL: http://svn.apache.org/viewvc?rev=1057991&view=rev
Log:
CAMEL-3530. Patch applied with thanks to Craig McDaniel

Modified:
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala?rev=1057991&r1=1057990&r2=1057991&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/converters/ScalaTypeConverter.scala Wed Jan 12 05:28:21 2011
@@ -20,6 +20,9 @@ import _root_.scala.xml.Elem
 
 import org.apache.camel.Converter
 import org.apache.camel.converter.jaxp.XmlConverter
+import scala.xml.XML
+import org.w3c.dom.Document
+import org.w3c.dom.Node
 
 /**
  * Converter implementation for supporting some common Scala types within Apache Camel
@@ -31,4 +34,12 @@ import org.apache.camel.converter.jaxp.X
    @Converter
    def convertToDocument(xml: Elem) = converter.toDOMDocument(xml.toString)
 
+   @Converter
+   def convertToElem(xmlString: String) = XML.loadString(xmlString)
+
+   @Converter
+   def domDocumentToElem(doc: Document) = XML.load(converter.toInputStream(doc))
+
+   @Converter
+   def domNodeToElem(node: Node) = XML.loadString(converter.toString(node, null))
 }

Modified: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala?rev=1057991&r1=1057990&r2=1057991&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTypeConverterTest.scala Wed Jan 12 05:28:21 2011
@@ -25,7 +25,9 @@ import org.apache.camel.impl.DefaultPack
 import org.apache.camel.impl.converter.DefaultTypeConverter
 import org.apache.camel.util.ReflectionInjector
 import org.apache.camel.util.ServiceHelper
+import scala.xml.Elem
 
+import javax.xml.parsers.DocumentBuilderFactory
 import org.w3c.dom.Document
 
 /**
@@ -40,12 +42,40 @@ class ScalaTypeConverterTest extends Tes
     // noop
   }
 
-  // TODO: Fixme, fails on Linux
-  def xxxtestDocumentConverter = {
+  def testDocumentConverter = {
     ServiceHelper.startService(converter)
     val result = converter.convertTo(classOf[Document], <persons/>)
     assertNotNull(result)
     assertNotNull(result.getElementsByTagName("persons"))
   }
 
+  def testXmlStringToElemConverter = {
+    ServiceHelper.startService(converter)
+    val result = converter.convertTo(classOf[Elem], "<persons/>")
+    assertNotNull(result)
+    assertEquals(<persons/>, result)
+  }
+
+  def testDomDocumentToElemConverter = {
+    val factory = DocumentBuilderFactory.newInstance()
+    val parser = factory.newDocumentBuilder()
+    val doc = parser.newDocument()
+    val root = doc.createElement("persons")
+    doc.appendChild(root)
+    ServiceHelper.startService(converter)
+    val result = converter.convertTo(classOf[Elem], doc)
+    assertNotNull(result)
+    assertEquals(<persons/>, result)
+  }
+
+  def testDomNodeToElemConverter = {
+    val factory = DocumentBuilderFactory.newInstance()
+    val parser = factory.newDocumentBuilder()
+    val doc = parser.newDocument()
+    val node = doc.createElement("persons")
+    ServiceHelper.startService(converter)
+    val result = converter.convertTo(classOf[Elem], node)
+    assertNotNull(result)
+    assertEquals(<persons/>, result)
+  }
 }