You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/03/31 12:38:57 UTC
svn commit: r1087243 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java
Author: sergeyb
Date: Thu Mar 31 10:38:57 2011
New Revision: 1087243
URL: http://svn.apache.org/viewvc?rev=1087243&view=rev
Log:
[JAX-RS] Minor improvements to XMLSource
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java?rev=1087243&r1=1087242&r2=1087243&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java Thu Mar 31 10:38:57 2011
@@ -120,7 +120,7 @@ public class XMLSource {
if (cls.isPrimitive() || cls == String.class) {
return readPrimitiveValue(node, cls);
} else {
- return readFromSource(new DOMSource(node), cls);
+ return readNode(node, cls);
}
}
@@ -162,7 +162,7 @@ public class XMLSource {
if (InjectionUtils.isPrimitive(cls)) {
values[i] = readPrimitiveValue(node, cls);
} else {
- values[i] = readFromSource(new DOMSource(node), cls);
+ values[i] = readNode(node, cls);
}
}
return values;
@@ -344,7 +344,17 @@ public class XMLSource {
}
- private <T> T readFromSource(Source s, Class<T> cls) {
+ private <T> T readNode(Node node, Class<T> cls) {
+
+ if (Node.class.isAssignableFrom(cls)) {
+ return cls.cast(node);
+ }
+
+ DOMSource s = new DOMSource(node);
+ if (Source.class == cls || DOMSource.class == cls) {
+ return cls.cast(s);
+ }
+
try {
JAXBElementProvider provider = new JAXBElementProvider();
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java?rev=1087243&r1=1087242&r2=1087243&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/xml/XMLSourceTest.java Thu Mar 31 10:38:57 2011
@@ -29,6 +29,10 @@ import java.util.Map;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.transform.Source;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.apache.cxf.common.xmlschema.XmlSchemaConstants;
@@ -57,6 +61,15 @@ public class XMLSourceTest extends Asser
}
@Test
+ public void testAttributeValueAsNode() {
+ InputStream is = new ByteArrayInputStream("<foo><bar attr=\"baz\">barValue</bar></foo>".getBytes());
+ XMLSource xp = new XMLSource(is);
+ Node node = xp.getNode("/foo/bar/@attr", Node.class);
+ assertNotNull(node);
+ assertEquals("baz", node.getTextContent());
+ }
+
+ @Test
public void testNodeTextValue() {
InputStream is = new ByteArrayInputStream("<foo><bar attr=\"baz\">barValue</bar></foo>".getBytes());
XMLSource xp = new XMLSource(is);
@@ -104,6 +117,29 @@ public class XMLSourceTest extends Asser
}
@Test
+ public void testGetNodeAsElement() {
+ InputStream is = new ByteArrayInputStream("<foo><bar/></foo>".getBytes());
+ XMLSource xp = new XMLSource(is);
+ Element element = xp.getNode("/foo/bar", Element.class);
+ assertNotNull(element);
+ }
+
+ @Test
+ public void testGetNodeAsSource() {
+ InputStream is = new ByteArrayInputStream("<foo><bar/></foo>".getBytes());
+ XMLSource xp = new XMLSource(is);
+ Source element = xp.getNode("/foo/bar", Source.class);
+ assertNotNull(element);
+ }
+
+ @Test
+ public void testGetNodeNull() {
+ InputStream is = new ByteArrayInputStream("<foo><bar/></foo>".getBytes());
+ XMLSource xp = new XMLSource(is);
+ assertNull(xp.getNode("/foo/bar1", Element.class));
+ }
+
+ @Test
public void testGetNodeAsJaxbElement() {
InputStream is = new ByteArrayInputStream("<foo><bar name=\"foo\"/></foo>".getBytes());
XMLSource xp = new XMLSource(is);