Sam,
I think AttributesImpl.java in Xerces2 needs the following patch:
http://cvs.apache.org/viewcvs.cgi/xml-xerces/java/src/org/xml/sax/helpers/AttributesImpl.java.diff?r1=1.3&r2=1.5
Thanks,
dims
--- Sam Ruby <[EMAIL PROTECTED]> wrote:
> Doing performance measurements w/Xerces1, we are finding that approximately
> 40% of the time is being spent in the parser. Clearly this represents a
> fertile opportunity for improvment. Measuring the same workloads with
> Crimson resulted in a slight degradation.
>
> I would like to measure Xerces2 and explore both XNI and constructing a
> minimal pipeline which eliminates any unnecessary overhead (e.g., DTD
> validation), but I am still unable to progress past the following problems
> exposed by the unit tests. Debugging, it looks like the Axis code which
> causes the problem down stream is as follows:
>
> public int startElement(String p1, String p2, String p3,
>org.xml.sax.Attributes p4) {
> if (numattrs == attrs.length) {
> Object[] nattrs = new Object[numattrs * 2];
> System.arraycopy(attrs, 0, nattrs, 0, numattrs);
> attrs = nattrs;
> }
>
> attrs[numattrs++] = new AttributesImpl(p4);
> return events.add(STATE_START_ELEMENT, st.addSymbol(p1), st.addSymbol(p2),
> st.addSymbol(p3), numattrs-1);
> }
>
> Later attempts to reference the copied attributes results in:
>
> java.lang.NullPointerException
> at org.xml.sax.helpers.AttributesImpl.getValue(Unknown Source)
> at
>
org.apache.axis.encoding.DeserializationContext.getTypeFromAttributes(DeserializationContext.java:301)
> at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:160)
> at
>
>org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:606)
> at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
> at
>org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:387)
> at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:115)
> at org.apache.axis.message.RPCElement.getParam(RPCElement.java:124)
> at test.encoding.TestSer.doTestData(TestSer.java:87)
> at test.encoding.TestSer.testDataWithHrefs(TestSer.java:44)
> at java.lang.reflect.Method.invoke(Native Method)
> at junit.framework.TestCase.runTest(TestCase.java:157)
> at junit.framework.TestCase.runBare(TestCase.java:131)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:122)
> at junit.framework.TestSuite.runTest(TestSuite.java:173)
> at junit.framework.TestSuite.run(TestSuite.java:168)
> at junit.framework.TestSuite.runTest(TestSuite.java:173)
> at junit.framework.TestSuite.run(TestSuite.java:168)
> at
>
>org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:241)
> at
>
>org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:419)
>
> I'll keep debugging, but I thought I would post this here to see if it generates any
>thoughts or
> suggestions...
>
> - Sam Ruby
>
=====
Davanum Srinivas - http://jguru.com/dims/
__________________________________________________
Do You Yahoo!?
Find the one for you at Yahoo! Personals
http://personals.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]