You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2008/05/30 18:43:33 UTC
svn commit: r661786 - in
/incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src:
main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java
Author: rfeng
Date: Fri May 30 09:43:33 2008
New Revision: 661786
URL: http://svn.apache.org/viewvc?rev=661786&view=rev
Log:
Add a poor man's perf test
Modified:
incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java
Modified: incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java?rev=661786&r1=661785&r2=661786&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java Fri May 30 09:43:33 2008
@@ -42,6 +42,7 @@
* @version $Rev$ $Date$
*/
public class JAXB2OMElement extends BaseTransformer<Object, OMElement> implements PullTransformer<Object, OMElement> {
+ private OMFactory factory = OMAbstractFactory.getOMFactory();
@Override
public String getSourceDataBinding() {
@@ -56,8 +57,6 @@
} catch (JAXBException e) {
throw new TransformationException(e);
}
- OMFactory factory = OMAbstractFactory.getOMFactory();
-
QName name = JAXBDataBinding.ROOT_ELEMENT;
if (context != null) {
DataType dataType = context.getTargetDataType();
@@ -76,6 +75,7 @@
if (source != null && introspector.isElement(source)) {
if (name == JAXBDataBinding.ROOT_ELEMENT) {
element = source;
+ name = introspector.getElementName(element);
} else {
source = JAXBIntrospector.getValue(source);
}
Modified: incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java?rev=661786&r1=661785&r2=661786&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java Fri May 30 09:43:33 2008
@@ -22,49 +22,73 @@
import java.io.StringWriter;
import javax.xml.bind.JAXBElement;
+import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.impl.TransformationContextImpl;
+import org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;
+import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper;
import org.apache.tuscany.sca.databinding.jaxb.axiom.JAXB2OMElement;
+import org.apache.tuscany.sca.databinding.xml.Node2XMLStreamReader;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.junit.Test;
+import org.w3c.dom.Node;
import com.example.ipo.jaxb.ObjectFactory;
import com.example.ipo.jaxb.PurchaseOrderType;
import com.example.ipo.jaxb.USAddress;
import com.example.ipo.jaxb.USState;
-
/**
* @version $Rev$ $Date$
*/
public class JAXB2OMTestCase {
@Test
- public void testTransform() throws Exception {
- ObjectFactory factory = new ObjectFactory();
- PurchaseOrderType type = factory.createPurchaseOrderType();
- JAXBElement<PurchaseOrderType> po = factory.createPurchaseOrder(type);
- type.setItems(factory.createItems());
- type.setComment("123");
- USAddress address = factory.createUSAddress();
- address.setCity("San Jose");
- address.setStreet("ABC St.");
- address.setState(USState.CA);
- type.setShipTo(address);
+ public void testTransformType() throws Exception {
+ JAXBElement<PurchaseOrderType> po = createPO();
DataType sourceDataType = new DataTypeImpl<Class>(PurchaseOrderType.class, null);
TransformationContext tContext = new TransformationContextImpl();
tContext.setSourceDataType(sourceDataType);
- OMElement om = new JAXB2OMElement().transform(type, tContext);
+
+ // Force the JAXBContext to be cached
+ JAXBContextHelper.createJAXBContext(tContext, true);
+
+ long start = System.currentTimeMillis();
+ JAXB2OMElement t1 = new JAXB2OMElement();
+ OMElement om = t1.transform(po.getValue(), tContext);
+ long duration1 = System.currentTimeMillis() - start;
StringWriter sw = new StringWriter();
// serializeAndConsume() will trigger the JAXBDataSource.serialize(Writer, OMOutputFormat)
om.serializeAndConsume(sw);
System.out.println(sw.toString());
+
+ start = System.currentTimeMillis();
+ Node node = new JAXB2Node().transform(po.getValue(), tContext);
+ XMLStreamReader reader = new Node2XMLStreamReader().transform(node, null);
+ om = new StAXOMBuilder(reader).getDocumentElement();
+ sw = new StringWriter();
+ om.serializeAndConsume(sw);
+ long duration2 = System.currentTimeMillis() - start;
+ System.out.println(sw.toString());
+ System.out.println(duration1 + " vs. " + duration2);
}
-
+
@Test
- public void testTransform2() throws Exception {
+ public void testTransformElement() throws Exception {
+ JAXBElement<PurchaseOrderType> po = createPO();
+ DataType sourceDataType = new DataTypeImpl<Class>(PurchaseOrderType.class, null);
+ TransformationContext tContext = new TransformationContextImpl();
+ tContext.setSourceDataType(sourceDataType);
+ OMElement om = new JAXB2OMElement().transform(po, tContext);
+ StringWriter sw = new StringWriter();
+ om.serializeAndConsume(sw);
+ System.out.println(sw.toString());
+ }
+
+ private JAXBElement<PurchaseOrderType> createPO() {
ObjectFactory factory = new ObjectFactory();
PurchaseOrderType type = factory.createPurchaseOrderType();
JAXBElement<PurchaseOrderType> po = factory.createPurchaseOrder(type);
@@ -75,13 +99,6 @@
address.setStreet("ABC St.");
address.setState(USState.CA);
type.setShipTo(address);
- DataType sourceDataType = new DataTypeImpl<Class>(PurchaseOrderType.class, null);
- TransformationContext tContext = new TransformationContextImpl();
- tContext.setSourceDataType(sourceDataType);
- OMElement om = new JAXB2OMElement().transform(po, tContext);
- StringWriter sw = new StringWriter();
- // serializeAndConsume() will trigger the JAXBDataSource.serialize(Writer, OMOutputFormat)
- om.serializeAndConsume(sw);
- System.out.println(sw.toString());
+ return po;
}
}