You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2007/03/25 08:08:56 UTC
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
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;
}