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 ga...@apache.org on 2004/11/14 06:11:52 UTC

cvs commit: ws-axis/java/src/org/apache/axis/message SAX2EventRecorder.java

gawor       2004/11/13 21:11:52

  Modified:    java/src/org/apache/axis/message SAX2EventRecorder.java
  Log:
  optimizations: one less array copy
  
  Revision  Changes    Path
  1.14      +22 -9     ws-axis/java/src/org/apache/axis/message/SAX2EventRecorder.java
  
  Index: SAX2EventRecorder.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/message/SAX2EventRecorder.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SAX2EventRecorder.java	25 Feb 2004 14:02:43 -0000	1.13
  +++ SAX2EventRecorder.java	14 Nov 2004 05:11:52 -0000	1.14
  @@ -88,10 +88,10 @@
           return events.add(STATE_END_ELEMENT, p1, p2, p3, Z);
       }
       public int characters(char[] p1, int p2, int p3) {
  -        return events.add(STATE_CHARACTERS, new String(p1, p2, p3), Z,Z,Z);
  +        return events.add(STATE_CHARACTERS, new CharData(p1, p2, p3), Z, Z, Z);
       }
       public int ignorableWhitespace(char[] p1, int p2, int p3) {
  -        return events.add(STATE_IGNORABLE_WHITESPACE, new String(p1, p2, p3), Z,Z,Z);
  +        return events.add(STATE_IGNORABLE_WHITESPACE, new CharData(p1, p2, p3), Z,Z,Z);
       }
       public int processingInstruction(String p1, String p2) {
           return events.add(STATE_PROCESSING_INSTRUCTION, p1, p2, Z,Z);
  @@ -123,7 +123,7 @@
       public void comment(char[] ch,
                       int start,
                       int length) {
  -        events.add(STATE_COMMENT, new String(ch, start, length), Z, Z, Z);
  +        events.add(STATE_COMMENT, new CharData(ch, start, length), Z, Z, Z);
       }
       
       public int newElement(MessageElement elem) {
  @@ -167,12 +167,12 @@
                                      (String)events.get(n,3));
                   
               } else if (event == STATE_CHARACTERS) {
  -                char chars[] = ((String)(events.get(n,1))).toCharArray();
  -                handler.characters(chars, 0, chars.length);
  +                CharData charData = (CharData)events.get(n,1);
  +                handler.characters(charData.data, charData.off, charData.len);
                   
               } else if (event == STATE_IGNORABLE_WHITESPACE) {
  -                char chars[] = ((String)(events.get(n,1))).toCharArray();
  -                handler.ignorableWhitespace(chars, 0, chars.length);
  +                CharData charData = (CharData)events.get(n,1);
  +                handler.ignorableWhitespace(charData.data, charData.off, charData.len);
                   
               } else if (event == STATE_PROCESSING_INSTRUCTION) {
                   handler.processingInstruction((String)events.get(n,1),
  @@ -217,8 +217,8 @@
                   lexicalHandler.endCDATA();
               
               } else if (event == STATE_COMMENT && lexicalHandler != null) {
  -                char chars[] = ((String)(events.get(n,1))).toCharArray();
  -                lexicalHandler.comment(chars, 0, chars.length);             
  +                CharData charData = (CharData)events.get(n,1);
  +                lexicalHandler.comment(charData.data, charData.off, charData.len);
               
               } else if (event == STATE_NEWELEMENT) {
                   if (handler instanceof DeserializationContext) {
  @@ -261,4 +261,17 @@
           }
       }
   /////////////////////////////////////////////
  +
  +    private static class CharData {
  +        char [] data;
  +        int off;
  +        int len;
  +        public CharData(char[] data, int off, int len) {
  +            this.data = new char[len];
  +            System.arraycopy(data, off, this.data, 0, len);
  +            this.off = 0;
  +            this.len = len;
  +        }
  +    }
  +            
   }