Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 19271 invoked from network); 25 Mar 2007 06:09:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 25 Mar 2007 06:09:18 -0000 Received: (qmail 34955 invoked by uid 500); 25 Mar 2007 06:09:25 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 34929 invoked by uid 500); 25 Mar 2007 06:09:25 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 34918 invoked by uid 99); 25 Mar 2007 06:09:25 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Mar 2007 23:09:25 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Mar 2007 23:09:17 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id EA7DA1A9838; Sat, 24 Mar 2007 23:08:56 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r522167 - in /db/derby/code/trunk/java/engine/org/apache/derby: iapi/services/io/ArrayInputStream.java impl/store/raw/data/FileContainer.java impl/store/raw/log/FileLogger.java impl/store/raw/log/FlushedScanHandle.java Date: Sun, 25 Mar 2007 06:08:56 -0000 To: derby-commits@db.apache.org From: kahatlen@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070325060856.EA7DA1A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kahatlen Date: Sat Mar 24 23:08:55 2007 New Revision: 522167 URL: http://svn.apache.org/viewvc?view=rev&rev=522167 Log: DERBY-2118: Cleanup of ArrayInputStream - Patch which improves the clearLimit() method by removing the possibility that the byte array is ever null. - Instead of using null when creating an empty ArrayInputStream an empty array is used instead. - Remove some unused methods. - Change some callers of the 2-arg setLimit() to the 1-arg setLimit() as it is more efficient. - Fix a bug where setData() would not reset the position to zero (previously it was unmodified at a potentially invalid position) Contributed by Daniel John Debrunner. Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/ArrayInputStream.java db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/FileContainer.java db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FlushedScanHandle.java Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/ArrayInputStream.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/ArrayInputStream.java?view=diff&rev=522167&r1=522166&r2=522167 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/ArrayInputStream.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/ArrayInputStream.java Sat Mar 24 23:08:55 2007 @@ -30,6 +30,7 @@ import org.apache.derby.iapi.services.io.LimitObjectInput; import org.apache.derby.iapi.services.io.ErrorObjectInput; +import org.apache.derby.iapi.util.ReuseFactory; import java.io.UTFDataFormatException; @@ -46,38 +47,40 @@ private int end; // exclusive private int position; + /** + * Create an ArrayInputStream with a zero length byte array. + * The position is set to 0 and the limit is the entire byte array. + * + */ public ArrayInputStream() { - this(null); + this(ReuseFactory.getZeroLenByteArray()); } private ErrorObjectInput oi; + /** + * Create an ArrayInputStream with the passed in data. + * The position is set to 0 and the limit is the entire byte array. + * @param data + */ public ArrayInputStream(byte[] data) { super(); setData(data); oi = new org.apache.derby.iapi.services.io.FormatIdInputStream(this); } - public ArrayInputStream(byte[] data, int offset, int length) throws IOException { - this(data); - setLimit(offset, length); - } - /* ** Public methods */ /** Set the array of bytes to be read. + Position is set to zero. */ public void setData(byte[] data) { pageData = data; - clearLimit(); - } - - public void setData(byte[] data, int offset, int length) throws IOException { - pageData = data; - setLimit(offset, length); + start = position = 0; + end = data.length; } /** @@ -203,16 +206,10 @@ @see Limit#clearLimit */ public final int clearLimit() { - - if (pageData != null) { - start = 0; - int remainingBytes = end - position; - end = pageData.length; - return remainingBytes; - } else { - start = end = position = 0; - return 0; - } + start = 0; + int remainingBytes = end - position; + end = pageData.length; + return remainingBytes; } /* Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/FileContainer.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/FileContainer.java?view=diff&rev=522167&r1=522166&r2=522167 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/FileContainer.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/FileContainer.java Sat Mar 24 23:08:55 2007 @@ -795,7 +795,7 @@ { ArrayInputStream inStream = new ArrayInputStream(a); - inStream.setLimit(0, CONTAINER_INFO_SIZE); + inStream.setLimit(CONTAINER_INFO_SIZE); int fid = inStream.readInt(); if (fid != formatIdInteger) { @@ -1046,7 +1046,7 @@ try { - inStream.setLimit(0, CONTAINER_INFO_SIZE); + inStream.setLimit(CONTAINER_INFO_SIZE); int fid = inStream.readInt(); if (fid != formatIdInteger) Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java?view=diff&rev=522167&r1=522166&r2=522167 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java Sat Mar 24 23:08:55 2007 @@ -986,7 +986,7 @@ { int optionalDataLength = rawInput.readInt(); int savePosition = rawInput.getPosition(); - rawInput.setLimit(savePosition, optionalDataLength); + rawInput.setLimit(optionalDataLength); compensation = lop.generateUndo(t, rawInput); @@ -1471,7 +1471,7 @@ } int dataLength = logIn.readInt(); - logIn.setLimit(logIn.getPosition(), dataLength); + logIn.setLimit(dataLength); // even though the log has already been written, we need to // tie the page to the log stream so that if redo failed Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FlushedScanHandle.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FlushedScanHandle.java?view=diff&rev=522167&r1=522166&r2=522167 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FlushedScanHandle.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FlushedScanHandle.java Sat Mar 24 23:08:55 2007 @@ -136,7 +136,7 @@ { int dataLength = rawInput.readInt(); readOptionalData = true; - rawInput.setLimit(rawInput.getPosition(), dataLength); + rawInput.setLimit(dataLength); return rawInput; }