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)
+ }
}