You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2005/09/28 07:10:29 UTC

svn commit: r292126 - in /webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf: ./ src/ src/org/ src/org/apache/ src/org/apache/perf/ src/org/apache/perf/sosnoski/ src/org/apache/perf/sosnoski/xmlbench/

Author: ajith
Date: Tue Sep 27 22:10:21 2005
New Revision: 292126

URL: http://svn.apache.org/viewcvs?rev=292126&view=rev
Log:
Adding the sosnoski benchmark source. Read the readme.txt for more information

Added:
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/readme.txt
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/
    webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/BenchAXIOM.java

Added: webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/readme.txt
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/readme.txt?rev=292126&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/readme.txt (added)
+++ webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/readme.txt Tue Sep 27 22:10:21 2005
@@ -0,0 +1,2 @@
+The source contained here includes the bench marking code for AXIOM based on the XML bench mark suit by Dennis Sosnoski (http://www.sosnoski.com/opensrc/xmlbench/index.html)
+For compliling and running the benchmark, the complete project at http://www.sosnoski.com/opensrc/xmlbench/code/fullbench.jar needs to be downloaded.
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/BenchAXIOM.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/BenchAXIOM.java?rev=292126&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/BenchAXIOM.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Ajith/sosnoski_perf/src/org/apache/perf/sosnoski/xmlbench/BenchAXIOM.java Tue Sep 27 22:10:21 2005
@@ -0,0 +1,146 @@
+package org.apache.perf.sosnoski.xmlbench;
+
+import com.sosnoski.xmlbench.BenchDocBase;
+import com.sosnoski.xmlbench.DocumentSummary;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis2.om.*;
+
+import javax.xml.stream.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Ajith
+ * Date: Sep 27, 2005
+ * Time: 11:48:36 AM
+ * To change this template use File | Settings | File Templates.
+ *
+ * The docbase code is somewhat simpleified because the
+ *
+ */
+public class BenchAXIOM extends BenchDocBase {
+
+    private OMFactory omFactory;
+
+    public BenchAXIOM() {
+        super("AXIOM");
+    }
+
+    protected Object build(InputStream in) {
+        //build the StaxOM builder
+        try {
+            XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(in);
+            if (omFactory==null){
+                  omFactory = OMAbstractFactory.getOMFactory();
+            }
+            StAXOMBuilder OMbuilder = new StAXOMBuilder(omFactory,reader);
+            return OMbuilder.getDocumentElement();
+        } catch (XMLStreamException ex) {
+            ex.printStackTrace(System.err);
+            System.exit(0);
+        }
+        return null;
+    }
+
+    /**
+     * Tree walker. trivial code to go through the child elements and feed it to
+     * the same procedure recursively
+     * @param doc
+     * @param summary
+     */
+    protected void walk(Object doc, DocumentSummary summary) {
+        //walk the elements
+        summary.addElements(1);
+        OMElement elt = (OMElement)doc;
+
+        //include the attributes
+        Iterator iter  =  elt.getAttributes();
+        while (iter.hasNext()) {
+            OMAttribute o = (OMAttribute)iter.next();
+            summary.addAttribute(o.getValue()==null?0:o.getValue().length());
+        }
+
+        //include the children
+        Iterator children = elt.getChildren();
+        while (children.hasNext()) {
+            OMNode o =  (OMNode)children.next();
+            if (o.getType()==OMNode.ELEMENT_NODE){
+                walk(o,summary);
+            }else if (o.getType()==OMNode.TEXT_NODE){
+                summary.addContent(((OMText)o).getText().length());
+            }else{
+                //todo - need to process the other events here as well
+            }
+
+        }
+    }
+
+    /**
+     * Write the output using the serialize method
+     * @param document
+     * @param out
+     */
+    protected void output(Object document, OutputStream out) {
+        try {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(out);
+            ((OMElement)document).serialize(writer);
+            writer.flush();
+        } catch (XMLStreamException ex) {
+            ex.printStackTrace(System.err);
+            System.exit(0);
+        }
+    }
+
+    /**
+     *  Modify a document representation. This method must be implemented by each
+	 * subclass to walk the document representation performing the following
+	 * modifications: remove all content segments which consist only of
+	 * whitespace; add an attribute "text" set to "true" to any elements which
+	 * directly contain non-whitespace text content; and replace each
+	 * non-whitespace text content segment with a "text" element which wraps
+	 * the content.
+     *
+     * @param document
+     */
+    protected void modify(Object document) {
+        OMElement elt  = (OMElement)document;
+        Iterator children = elt.getChildren();
+        boolean nonWhitespaceFound = false;
+        while (children.hasNext()) {
+            OMNode o =  (OMNode)children.next();
+            if (o.getType() == OMNode.TEXT_NODE){
+                // trim whitespace from content text
+                OMText text = (OMText)o;
+                String trimmed = ((OMText)o).getText().trim();
+                if (trimmed.length() != 0) {
+                    // wrap the trimmed content with new element. We've found
+                    //a non whitespace text content
+                    nonWhitespaceFound = true;
+                    OMElement parent = (OMElement) text.getParent();
+                    OMElement textElt = omFactory.createOMElement("text",elt.getNamespace());
+                    textElt.setText(trimmed);
+                    parent.addChild(textElt);
+                }else{
+                    //remove the text child.it's only a whitespace
+                    text.detach();
+                }
+            }else if (o.getType() == OMNode.ELEMENT_NODE){
+                modify(o);
+            }else{
+                //just hold still. don't do anything
+            }
+
+            if (nonWhitespaceFound){
+              elt.addAttribute("text","true",elt.getNamespace());  
+            }
+
+        }
+
+    }
+
+
+}