mrglavas 2004/06/03 09:13:39 Modified: java/src/org/apache/xerces/impl XMLDocumentScannerImpl.java XMLDocumentFragmentScannerImpl.java Log: Some cleanup, minor performance improvements.
1) Reuse XMLDTDDescription object instead of creating a new one every time. 2) Marking fields of reusable temp objects as final as they are never reassigned. Revision Changes Path 1.46 +18 -13 xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java Index: XMLDocumentScannerImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- XMLDocumentScannerImpl.java 30 Apr 2004 15:36:38 -0000 1.45 +++ XMLDocumentScannerImpl.java 3 Jun 2004 16:13:38 -0000 1.46 @@ -204,16 +204,19 @@ // temporary variables /** Array of 3 strings. */ - private String[] fStrings = new String[3]; + private final String[] fStrings = new String[3]; /** String. */ - private XMLString fString = new XMLString(); + private final XMLString fString = new XMLString(); /** String buffer. */ - private XMLStringBuffer fStringBuffer = new XMLStringBuffer(); + private final XMLStringBuffer fStringBuffer = new XMLStringBuffer(); /** External subset source. */ private XMLInputSource fExternalSubsetSource = null; + + /** A DTD Description. */ + private final XMLDTDDescription fDTDDescription = new XMLDTDDescription(null, null, null, null, null); // // Constructors @@ -561,9 +564,9 @@ // Attempt to locate an external subset with an external subset resolver. if (!fHasExternalDTD && fExternalSubsetResolver != null) { - XMLDTDDescription desc = new XMLDTDDescription(null, - null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null, fDoctypeName); - fExternalSubsetSource = fExternalSubsetResolver.getExternalSubset(desc); + fDTDDescription.setValues(null, null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null); + fDTDDescription.setRootName(fDoctypeName); + fExternalSubsetSource = fExternalSubsetResolver.getExternalSubset(fDTDDescription); fHasExternalDTD = fExternalSubsetSource != null; } @@ -924,7 +927,6 @@ fEntityManager.setEntityHandler(null); try { boolean again; - XMLEntityDescriptionImpl entityDescription = new XMLEntityDescriptionImpl(); do { again = false; switch (fScannerState) { @@ -974,9 +976,10 @@ break; } case SCANNER_STATE_DTD_EXTERNAL: { - entityDescription.setDescription("[dtd]", fDoctypePublicId, fDoctypeSystemId, null, null); + fDTDDescription.setValues(fDoctypePublicId, fDoctypeSystemId, null, null); + fDTDDescription.setRootName(fDoctypeName); XMLInputSource xmlInputSource = - fEntityManager.resolveEntity(entityDescription); + fEntityManager.resolveEntity(fDTDDescription); fDTDScanner.setInputSource(xmlInputSource); setScannerState(SCANNER_STATE_DTD_EXTERNAL_DECLS); again = true; @@ -1144,9 +1147,11 @@ */ protected void resolveExternalSubsetAndRead() throws IOException, XNIException { - XMLDTDDescription desc = new XMLDTDDescription(null, - null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null, fElementQName.rawname); - XMLInputSource src = fExternalSubsetResolver.getExternalSubset(desc); + + fDTDDescription.setValues(null, null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null); + fDTDDescription.setRootName(fElementQName.rawname); + XMLInputSource src = fExternalSubsetResolver.getExternalSubset(fDTDDescription); + if (src != null) { fDoctypeName = fElementQName.rawname; fDoctypePublicId = src.getPublicId(); 1.53 +11 -13 xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java Index: XMLDocumentFragmentScannerImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- XMLDocumentFragmentScannerImpl.java 8 Apr 2004 22:24:52 -0000 1.52 +++ XMLDocumentFragmentScannerImpl.java 3 Jun 2004 16:13:39 -0000 1.53 @@ -228,39 +228,37 @@ // temporary variables /** Element QName. */ - protected QName fElementQName = new QName(); + protected final QName fElementQName = new QName(); /** Attribute QName. */ - protected QName fAttributeQName = new QName(); + protected final QName fAttributeQName = new QName(); /** Element attributes. */ - protected XMLAttributesImpl fAttributes = new XMLAttributesImpl(); + protected final XMLAttributesImpl fAttributes = new XMLAttributesImpl(); /** String. */ - protected XMLString fTempString = new XMLString(); + protected final XMLString fTempString = new XMLString(); /** String. */ - protected XMLString fTempString2 = new XMLString(); + protected final XMLString fTempString2 = new XMLString(); /** Array of 3 strings. */ - private String[] fStrings = new String[3]; + private final String[] fStrings = new String[3]; /** String buffer. */ - private XMLStringBuffer fStringBuffer = new XMLStringBuffer(); + private final XMLStringBuffer fStringBuffer = new XMLStringBuffer(); /** String buffer. */ - private XMLStringBuffer fStringBuffer2 = new XMLStringBuffer(); - + private final XMLStringBuffer fStringBuffer2 = new XMLStringBuffer(); /** Another QName. */ - private QName fQName = new QName(); - + private final QName fQName = new QName(); /** Single character array. */ private final char[] fSingleChar = new char[1]; /** External entity. */ - private XMLEntityManager.ExternalEntity fExternalEntity = new XMLEntityManager.ExternalEntity(); + private final XMLEntityManager.ExternalEntity fExternalEntity = new XMLEntityManager.ExternalEntity(); /** * Saw spaces after element name or between attributes. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]