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;
     }
 }